{"id":3366,"date":"2024-11-28T16:35:24","date_gmt":"2024-11-28T07:35:24","guid":{"rendered":"https:\/\/www.dogrow.net\/elecronics\/?p=3366"},"modified":"2024-11-28T17:11:52","modified_gmt":"2024-11-28T08:11:52","slug":"blog58%e3%80%90%e9%80%a3%e8%bc%892-3%e3%80%91%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e6%a9%9f%e8%83%bd%e4%bb%98%e3%81%8d%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3%e3%81%ae%e5%ae%8c%e6%88%90","status":"publish","type":"post","link":"https:\/\/www.dogrow.net\/elecronics\/blog58%e3%80%90%e9%80%a3%e8%bc%892-3%e3%80%91%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e6%a9%9f%e8%83%bd%e4%bb%98%e3%81%8d%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3%e3%81%ae%e5%ae%8c%e6%88%90\/","title":{"rendered":"(58)\u3010\u9023\u8f092-3\u3011\u30ea\u30e2\u30b3\u30f3\u4f5c\u308a\uff1a\u30ad\u30e3\u30d7\u30c1\u30e3\u6a5f\u80fd\u4ed8\u304d\u30ea\u30e2\u30b3\u30f3\u306e\u5b8c\u6210\uff01\uff1f"},"content":{"rendered":"<p>\u30d6\u30ed\u30b0\u8a18\u4e8b\u306f\u307e\u305f\u5f8c\u65e5\u66f8\u3053\u3046\u3002<br \/>\n\u307e\u305a\u306f Pico2\u306b\u8f09\u305b\u3066\u52d5\u4f5c\u78ba\u8a8d\u51fa\u6765\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u7f6e\u3044\u3066\u304a\u304f\u3002<\/p>\n<h1 class=\"my_h\">\u30101\u3011\u3084\u308a\u305f\u3044\u3053\u3068<\/h1>\n<p>\u5bb6\u96fb\u88fd\u54c1\u3092\u5236\u5fa1\u3059\u308b\u305f\u3081\u306e\u8d64\u5916\u7dda\u30ea\u30e2\u30b3\u30f3\u304c\u767a\u4fe1\u3059\u308b\u4fe1\u53f7\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3057\u305f\u3044\u3002<\/p>\n<p>\u305f\u3060\u3057&#8230;<br \/>\n\u30d6\u30e9\u30c3\u30af\u30dc\u30c3\u30af\u30b9\u306a\u4fbf\u5229\u30e9\u30a4\u30d6\u30e9\u30ea\u3092\u4f7f\u3046\u306e\u3067\u306f\u306a\u304f\u3001\u751f\u306e\u4fe1\u53f7\u30c7\u30fc\u30bf\u3092\u305d\u306e\u307e\u307e\u898b\u305f\u3044\u3002<\/p>\n<p>\u4ee5\u4e0b\u30013\u56de\u306e\u30d6\u30ed\u30b0\u6295\u7a3f\u3067\u5b8c\u6210\u3092\u76ee\u6307\u3059\u3002<br \/>\n<a href=\"https:\/\/www.dogrow.net\/elecronics\/blog56-%e8%b5%a4%e5%a4%96%e7%b7%9a%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3%e3%81%ae%e4%bf%a1%e5%8f%b7%e3%83%91%e3%82%bf%e3%83%bc%e3%83%b3%e3%82%92%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3\/\" target=\"_blank\">(56)\u3010\u9023\u8f092-1\u3011\u30ea\u30e2\u30b3\u30f3\u4f5c\u308a\uff1a\u8d64\u5916\u7dda\u30ea\u30e2\u30b3\u30f3\u306e\u4fe1\u53f7\u30d1\u30bf\u30fc\u30f3\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3059\u308b\u3002<\/a><br \/>\n<a href=\"https:\/\/www.dogrow.net\/elecronics\/blog57%e3%80%90%e9%80%a3%e8%bc%892-2%e3%80%91%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3%e4%bd%9c%e3%82%8a%ef%bc%9a%e8%b5%a4%e5%a4%96%e7%b7%9aled%e3%81%a7%e4%bf%a1%e5%8f%b7%e3%83%91%e3%82%bf%e3%83%bc\/#google_vignette\" target=\"_blank\">(57)\u3010\u9023\u8f092-2\u3011\u30ea\u30e2\u30b3\u30f3\u4f5c\u308a\uff1a\u8d64\u5916\u7ddaLED\u3067\u4fe1\u53f7\u30d1\u30bf\u30fc\u30f3\u3092\u518d\u751f\u3059\u308b\u3002<\/a><br \/>\n<a href=\"https:\/\/www.dogrow.net\/elecronics\/blog58%e3%80%90%e9%80%a3%e8%bc%892-3%e3%80%91%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e6%a9%9f%e8%83%bd%e4%bb%98%e3%81%8d%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3%e3%81%ae%e5%ae%8c%e6%88%90\/\" target=\"_blank\">(58)\u3010\u9023\u8f092-3\u3011\u30ea\u30e2\u30b3\u30f3\u4f5c\u308a\uff1a\u30ad\u30e3\u30d7\u30c1\u30e3\u6a5f\u80fd\u4ed8\u304d\u30ea\u30e2\u30b3\u30f3\u306e\u5b8c\u6210\uff01\uff1f<\/a> <b>\u2190\u4eca\u56de<\/b><\/p>\n<h1 class=\"my_h\">\u30102\u3011\u56de\u8def\u306e\u7d50\u7dda<\/h1>\n<p><span class=\"my_fc_crimsonBBig\">\u5f8c\u65e5\u8ffd\u8a18<\/span><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/elecronics\/wp-content\/uploads\/2024\/11\/i013-1.jpg\" alt=\"\" class=\"my_add_bs1\" \/><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.dogrow.net\/elecronics\/wp-content\/uploads\/2024\/11\/i014-1.jpg\" alt=\"\" class=\"my_add_bs1\" \/><\/p>\n<h1 class=\"my_h\">\u30103\u3011\u4f7f\u3044\u65b9\uff08\u64cd\u4f5c\u4ed5\u69d8\uff09<\/h1>\n<p>\u30fb\u8d64\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3059\u308b\u3068\u3001\u8a18\u9332\u3092\u958b\u59cb\u3059\u308b\u3002<br \/>\n\u3000\u57fa\u677f\u4e0a\u306eLED\u304c\u70b9\u706f\u3057\u3066\u3044\u308b2\u79d2\u9593\u3060\u3051\u4fe1\u53f7\u3092\u30ad\u30e3\u30d7\u30c1\u30e3\u3057\u3001\u305d\u306e\u30c7\u30fc\u30bf\u3092\u30d5\u30a1\u30a4\u30eb\u4fdd\u5b58\u3059\u308b\u3002<\/p>\n<p>\u30fb\u767d\u30dc\u30bf\u30f3\u3092\u62bc\u4e0b\u3059\u308b\u3068\u3001\u8d64\u5916\u7dda\u4fe1\u53f7\u3092\u767a\u4fe1\u3059\u308b\u3002<br \/>\n\u3000\u5148\u306b\u8a18\u9332\u3057\u305f\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\u3057\u3001\u305d\u306e\u60c5\u5831\u306b\u5f93\u3063\u3066\u8d64\u5916\u7ddaLED\u3092\u70b9\u706f\u5236\u5fa1\u3059\u308b\u3002<br \/>\n\u3000<\/p>\n<h1 class=\"my_h\">\u30104\u3011\u30d7\u30ed\u30b0\u30e9\u30df\u30f3\u30b0<\/h1>\n<p><span class=\"my_fc_blueBBig\">main.py<\/span><\/p>\n<pre class=\"brush: python; title: ; notranslate\" title=\"\">\r\nfrom machine import Pin, PWM\r\nimport time\r\nimport os\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# GPIO\u8a2d\u5b9a\r\nbtn_rec = Pin(17, Pin.IN, Pin.PULL_UP)      # \u8a18\u9332\u30dc\u30bf\u30f3\r\nbtn_tx  = Pin(14, Pin.IN, Pin.PULL_UP)      # \u518d\u751f\u30dc\u30bf\u30f3\r\nrec_led = Pin(25, Pin.OUT)                  # \u8a18\u9332\u5b9f\u884c\u4e2d\u8868\u793aLED\r\nir_pin  = Pin(16, Pin.IN)                   # \u8d64\u5916\u7dda\u53d7\u5149\u30e2\u30b8\u30e5\u30fc\u30eb\u306e\u4fe1\u53f7\u5165\u529b\u7528\u30d4\u30f3\r\nir_led  = Pin(15, Pin.OUT)                  # \u8d64\u5916\u7dda\u767a\u5149LED\u306e\u51fa\u529b\u7528\u30d4\u30f3\r\npwm = PWM(ir_led)                           # PWM\u30a4\u30f3\u30b9\u30bf\u30f3\u30b9\u4f5c\u6210\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# \u5b9a\u6570\u3001\u5909\u6570\u5b9a\u7fa9\r\nRECORDING_DURATION = 2                      # \u8a18\u9332\u6642\u9593 &#x5B;sec]\r\nrec_signal_flag  = False                    # \u8a18\u9332\u958b\u59cb\u30dc\u30bf\u30f3\u62bc\u4e0b\u30d5\u30e9\u30b0\r\nplay_signal_flag = False                    # \u518d\u751f\u958b\u59cb\u30dc\u30bf\u30f3\u62bc\u4e0b\u30d5\u30e9\u30b0\r\nlast_press_time  = 0                        # \u6700\u5f8c\u306b\u30dc\u30bf\u30f3\u304c\u62bc\u3055\u308c\u305f\u6642\u523b\r\nDEBOUNCE_DELAY = 500                        # \u30c1\u30e3\u30bf\u30ea\u30f3\u30b0\u5bfe\u7b56\u3001\u30c7\u30d0\u30a6\u30f3\u30b9\u6642\u9593\uff08ms\uff09\r\n\r\n# \u8d64\u5916\u7dda\u53d7\u5149\u4fe1\u53f7\u306e\u8a18\u9332\u51e6\u7406\u306b\u4f7f\u3046\u5909\u6570\r\nrecorded_pattern = &#x5B;]                       # \u8d64\u5916\u7dda\u4fe1\u53f7\u306e\u30d1\u30bf\u30fc\u30f3\u306e\u4fdd\u5b58\u7528\u30ea\u30b9\u30c8\r\nrec_last_time = 0                           # \u524d\u56de\u306e\u4fe1\u53f7\u5909\u5316\u691c\u51fa\u6642\u9593\r\nis_first_pulse = True                       # \u521d\u56de\u306e\u30a8\u30c3\u30b8\u3092\u7121\u8996\u3059\u308b\u30d5\u30e9\u30b0\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# \u53d7\u4fe1\u51e6\u7406\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# \u8d64\u5916\u7dda\u53d7\u5149\u4fe1\u53f7\u30a8\u30c3\u30b8\u691c\u51fa\u5272\u308a\u8fbc\u307f\u30cf\u30f3\u30c9\u30e9\r\ndef evh_record_pulse(pin):\r\n    global recorded_pattern\r\n    global rec_last_time\r\n    global is_first_pulse\r\n    #---------------------------------------------------------------------------\r\n    now = time.ticks_us()                   # \u73fe\u5728\u6642\u523b\u3092\u53d6\u5f97 &#x5B;us]\r\n    #---------------------------------------------------------------------------\r\n    if is_first_pulse:                      # \u521d\u56de\u306e\u4fe1\u53f7\uff1f \u2192 skip\r\n        is_first_pulse = False              # \u521d\u56de\u30d5\u30e9\u30b0\u3092\u30af\u30ea\u30a2\r\n    #---------------------------------------------------------------------------\r\n    else:\r\n        # \u30d1\u30eb\u30b9\u9577\u3092\u8a18\u9332\r\n        pulse_length = time.ticks_diff(now, rec_last_time)\r\n        recorded_pattern.append(pulse_length)\r\n    #---------------------------------------------------------------------------\r\n    rec_last_time = now                     # \u4fe1\u53f7\u5909\u5316\u306e\u691c\u51fa\u6642\u523b\u3092\u66f4\u65b0\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# \u8d64\u5916\u7dda\u53d7\u5149\u4fe1\u53f7\u8a18\u9332\u306e\u958b\u59cb\u51e6\u7406\r\ndef record_ir_signal():\r\n    global recorded_pattern\r\n    global rec_last_time\r\n    global is_first_pulse\r\n    #---------------------------------------------------------------------------\r\n    print('now recording IR signal...')\r\n    recorded_pattern = &#x5B;]                   # \u4fe1\u53f7\u30d1\u30bf\u30fc\u30f3\u8a18\u9332\u7528\u30ea\u30b9\u30c8\u3092\u521d\u671f\u5316\r\n    is_first_pulse = True                   # \u521d\u56de\u30d5\u30e9\u30b0\u3092\u30bb\u30c3\u30c8\r\n    #---------------------------------------------------------------------------\r\n    rec_led.high()                          # \u8a18\u9332\u4e2dLED\u3092\u70b9\u706f\r\n    ir_pin.irq(trigger=Pin.IRQ_RISING | Pin.IRQ_FALLING, handler=evh_record_pulse)  # \u5272\u308a\u8fbc\u307f\u8a31\u53ef\u8a2d\u5b9a\r\n    time.sleep(RECORDING_DURATION)          # \u6307\u5b9a\u3055\u308c\u305f\u671f\u9593\u3060\u3051\u3001\u4fe1\u53f7\u3092\u53d7\u4fe1\u3059\u308b\u3002\r\n    ir_pin.irq(handler=None)                # \u5272\u308a\u8fbc\u307f\u89e3\u9664\r\n    rec_led.low()                           # \u8a18\u9332\u4e2dLED\u3092\u6d88\u706f\r\n    #---------------------------------------------------------------------------\r\n    print('Recording completed : ', recorded_pattern)\r\n    return recorded_pattern                 # \u8a18\u9332\u3057\u305f\u4fe1\u53f7\u30d1\u30bf\u30fc\u30f3\u3092\u8fd4\u3059\u3002\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# \u8a18\u9332\u30dc\u30bf\u30f3\u62bc\u4e0b\u6642\u306e\u5272\u308a\u8fbc\u307f\u30cf\u30f3\u30c9\u30e9\r\ndef evh_btn_rec_pressed_handler(pin):\r\n    global rec_signal_flag, last_press_time\r\n    #---------------------------------------------------------------------------\r\n    current_time = time.ticks_ms()          # \u73fe\u5728\u6642\u523b\u3092\u53d6\u5f97 &#x5B;ms]\r\n    #---------------------------------------------------------------------------\r\n    # \u30c1\u30e3\u30bf\u30ea\u30f3\u30b0\u5bfe\u7b56\u306e\u30c7\u30d0\u30a6\u30f3\u30b9\u51e6\u7406: \u6700\u5f8c\u306e\u62bc\u4e0b\u691c\u51fa\u304b\u3089\u6307\u5b9a\u6642\u9593\u304c\u7d4c\u904e\u3057\u3066\u3044\u308b\u5834\u5408\u306e\u307f\u51e6\u7406\u3059\u308b\u3002\r\n    if time.ticks_diff(current_time, last_press_time) &gt; DEBOUNCE_DELAY:\r\n        print('Start recording')\r\n        rec_signal_flag = True              # \u8a18\u9332\u958b\u59cb\u30dc\u30bf\u30f3\u62bc\u4e0b\u30d5\u30e9\u30b0\u3092\u30bb\u30c3\u30c8 \u2192 \u8a18\u9332\u958b\u59cb\r\n        last_press_time = current_time      # \u6700\u5f8c\u306e\u62bc\u4e0b\u691c\u51fa\u6642\u523b\u3092\u66f4\u65b0\r\n\r\n################################################################################\r\n# \u518d\u751f\u51e6\u7406\r\n################################################################################\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# PWM\u8a2d\u5b9a\r\ndef setup_pwm(frequency=38000, duty_cycle=33):\r\n    pwm.freq(frequency)                         # 38kHz\u306b\u8a2d\u5b9a\r\n    pwm.duty_u16(int(65535 * duty_cycle \/ 100)) # Duty ratio\u3092 33%\u306b\u8a2d\u5b9a\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# PWM ON\r\ndef enable_pwm():\r\n    pwm.init()\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# PWM OFF\r\ndef disable_pwm():\r\n    pwm.deinit()\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# IR\u70b9\u706f\u30d1\u30bf\u30fc\u30f3\u30d5\u30a1\u30a4\u30eb\u3092\u30ed\u30fc\u30c9\r\ndef load_ir_pattern(filename='ir_pattern.txt'):\r\n    #---------------------------------------------------------------------------\r\n    if not file_exists(filename):               # \u30d5\u30a1\u30a4\u30eb\u304c\u5b58\u5728\u3057\u306a\u3044\u5834\u5408\r\n        return &#x5B;]                               # \u7a7a\u30ea\u30b9\u30c8\u3092\u8fd4\u3059\r\n    #---------------------------------------------------------------------------\r\n    with open(filename, 'r') as f:\r\n        pattern = f.read().strip()\r\n    return list(map(int, pattern.split(',')))  # \u8a18\u9332\u3057\u305f\u30d1\u30bf\u30fc\u30f3\u3092\u30ea\u30b9\u30c8\u3068\u3057\u3066\u8fd4\u3059\u3002\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# IR\u70b9\u706f\u5b9f\u884c\r\ndef play_ir_signal(pattern):\r\n    print('&#x5B;BEGIN] Play IR Signal')\r\n    setup_pwm()                             # PWM\u3092\u8a2d\u5b9a\r\n    #---------------------------------------------------------------------------\r\n    for i, pulse in enumerate(pattern):\r\n        if i % 2 == 0:                      # \u5076\u6570\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306fON\u671f\u9593\r\n            enable_pwm()                    #   PWM\u3092\u6709\u52b9\u5316\uff08\u8d64\u5916\u7dda\u4fe1\u53f7\u9001\u4fe1\uff09\r\n        else:                               # \u5947\u6570\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306fOFF\u671f\u9593\r\n            disable_pwm()                   #   PWM\u3092\u7121\u52b9\u5316\uff08\u4fe1\u53f7\u3092\u9001\u3089\u306a\u3044\uff09\r\n        #-----------------------------------------------------------------------\r\n        time.sleep_us(pulse)                # \u6307\u5b9a\u3055\u308c\u305f\u671f\u9593\u5f85\u6a5f\r\n    \r\n    #---------------------------------------------------------------------------\r\n    # \u518d\u751f\u7d42\u4e86\u5f8c\u306fPWM\u3092\u7121\u52b9\u5316\r\n    disable_pwm()\r\n    print('&#x5B;END] Play IR Signal')\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# \u518d\u751f\u30dc\u30bf\u30f3\u62bc\u4e0b\u6642\u306e\u5272\u308a\u8fbc\u307f\u30cf\u30f3\u30c9\u30e9\r\ndef evh_btn_tx_pressed_handler(pin):\r\n    global play_signal_flag, last_press_time\r\n    #---------------------------------------------------------------------------\r\n    current_time = time.ticks_ms()          # \u73fe\u5728\u6642\u523b\u3092\u53d6\u5f97 &#x5B;ms]\r\n    #---------------------------------------------------------------------------\r\n    # \u30c1\u30e3\u30bf\u30ea\u30f3\u30b0\u5bfe\u7b56\u306e\u30c7\u30d0\u30a6\u30f3\u30b9\u51e6\u7406: \u6700\u5f8c\u306e\u62bc\u4e0b\u691c\u51fa\u304b\u3089\u6307\u5b9a\u6642\u9593\u304c\u7d4c\u904e\u3057\u3066\u3044\u308b\u5834\u5408\u306e\u307f\u51e6\u7406\u3059\u308b\u3002\r\n    if time.ticks_diff(current_time, last_press_time) &gt; DEBOUNCE_DELAY:\r\n        print('Start playing')\r\n        play_signal_flag = True             # \u518d\u751f\u958b\u59cb\u30dc\u30bf\u30f3\u62bc\u4e0b\u30d5\u30e9\u30b0\u3092\u30bb\u30c3\u30c8 \u2192 \u518d\u751f\u958b\u59cb\r\n        last_press_time = current_time      # \u6700\u5f8c\u306e\u62bc\u4e0b\u691c\u51fa\u6642\u523b\u3092\u66f4\u65b0\r\n\r\n################################################################################\r\n# \u305d\u306e\u4ed6\u306e\u51e6\u7406\r\n################################################################################\r\n\r\n#\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\r\n# \u30d5\u30a1\u30a4\u30eb\u306e\u5b58\u5728\u78ba\u8a8d  \u203bMicroPython\u3067\u306f os.path.exists()\u304c\u4f7f\u3048\u306a\u3044\u3002\r\ndef file_exists(filename):\r\n    try:\r\n        os.stat(filename)                           # \u30d5\u30a1\u30a4\u30eb\u60c5\u5831\u3092\u53d6\u5f97\r\n        return True\r\n    except OSError:\r\n        return False\r\n\r\n################################################################################\r\n# \u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\r\n################################################################################\r\n\r\n# \u30dc\u30bf\u30f3\u62bc\u4e0b\u5272\u8fbc\u307f\u3092\u8a31\u53ef\u8a2d\u5b9a\r\nbtn_rec.irq(trigger=Pin.IRQ_FALLING, handler=evh_btn_rec_pressed_handler)\r\nbtn_tx.irq( trigger=Pin.IRQ_FALLING, handler=evh_btn_tx_pressed_handler)\r\n\r\n# \u7121\u9650\u30eb\u30fc\u30d7\r\nwhile True:\r\n    #---------------------------------------------------------------------------\r\n    # \u8a18\u9332\u51e6\u7406\r\n    if rec_signal_flag:\r\n        rec_signal_flag = False                     # \u8a18\u9332\u958b\u59cb\u30d5\u30e9\u30b0\u3092\u30ea\u30bb\u30c3\u30c8\r\n        recorded_pattern = record_ir_signal()       # \u8a18\u9332\u5b9f\u884c\r\n        if len(recorded_pattern) &gt; 0:               # \u8981\u7d20\u6570\u304c0\u3067\u306a\u3044\uff1f\r\n            with open('ir_pattern.txt', 'w') as f:  # \u8a18\u9332\u3057\u305f\u30d1\u30bf\u30fc\u30f3\u3092\u30d5\u30a1\u30a4\u30eb\u306b\u4fdd\u5b58\r\n                f.write(','.join(map(str, recorded_pattern)))\r\n    #---------------------------------------------------------------------------\r\n    # \u518d\u751f\u51e6\u7406\r\n    if play_signal_flag:\r\n        play_signal_flag = False                    # \u518d\u751f\u958b\u59cb\u30d5\u30e9\u30b0\u3092\u30ea\u30bb\u30c3\u30c8\r\n        recorded_pattern = load_ir_pattern()        # \u8a18\u9332\u6e08\u307f\u306e\u4fe1\u53f7\u30d1\u30bf\u30fc\u30f3\u3092\u8aad\u307f\u8fbc\u3080\r\n        if len(recorded_pattern) &gt; 0:               # \u8981\u7d20\u6570\u304c0\u3067\u306a\u3044\uff1f\r\n            play_ir_signal(recorded_pattern)        # \u4fe1\u53f7\u30d1\u30bf\u30fc\u30f3\u3092\u518d\u751f\r\n    #---------------------------------------------------------------------------\r\n    time.sleep(0.1)  # \u30e1\u30a4\u30f3\u30eb\u30fc\u30d7\u3067\u8efd\u304f\u5f85\u6a5f\r\n<\/pre>\n<hr class=\"my_hr_bottom\">\n","protected":false},"excerpt":{"rendered":"<p>\u30d6\u30ed\u30b0\u8a18\u4e8b\u306f\u307e\u305f\u5f8c\u65e5\u66f8\u3053\u3046\u3002 \u307e\u305a\u306f Pico2\u306b\u8f09\u305b\u3066\u52d5\u4f5c\u78ba\u8a8d\u51fa\u6765\u305f\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u7f6e\u3044\u3066\u304a\u304f\u3002 \u30101\u3011\u3084\u308a\u305f\u3044\u3053\u3068 \u5bb6\u96fb\u88fd\u54c1\u3092\u5236\u5fa1\u3059\u308b\u305f\u3081\u306e\u8d64\u5916\u7dda\u30ea\u30e2\u30b3\u30f3\u304c\u767a\u4fe1\u3059\u308b\u4fe1\u53f7\u306e\u30d1\u30bf\u30fc\u30f3\u3092\u30e2\u30cb\u30bf\u30ea\u30f3\u30b0\u3057\u305f\u3044\u3002 \u305f\u3060\u3057&#038;#8230\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.dogrow.net\/elecronics\/blog58%e3%80%90%e9%80%a3%e8%bc%892-3%e3%80%91%e3%82%ad%e3%83%a3%e3%83%97%e3%83%81%e3%83%a3%e6%a9%9f%e8%83%bd%e4%bb%98%e3%81%8d%e3%83%aa%e3%83%a2%e3%82%b3%e3%83%b3%e3%81%ae%e5%ae%8c%e6%88%90\/\">\u7d9a\u304d\u3092\u8aad\u3080 &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,18,40],"tags":[],"class_list":["post-3366","post","type-post","status-publish","format-standard","hentry","category-led","category-raspberry-pi","category-40"],"views":705,"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/posts\/3366","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/comments?post=3366"}],"version-history":[{"count":8,"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/posts\/3366\/revisions"}],"predecessor-version":[{"id":3418,"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/posts\/3366\/revisions\/3418"}],"wp:attachment":[{"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/media?parent=3366"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/categories?post=3366"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dogrow.net\/elecronics\/wp-json\/wp\/v2\/tags?post=3366"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}