赤外線センサーでリモコンの赤外線をキャッチ
赤外線センサーでリモコンの赤外線をキャッチして数値データーを読み取ります。
赤外線リモコン受信モジュールOSRB38C9AA
配線図
OUTPUT GP 14 正面に向かって左側
Gnd アース(GND) 中央
Vcc 電源 3V3(OUT) 正面に向かって右側
Gnd アース(GND) 中央
Vcc 電源 3V3(OUT) 正面に向かって右側
MicroPythonプログラム
import machine import utime # pico w 本体のLEDを点灯します led= machine.Pin('LED', machine.Pin.OUT) led.on() # 赤外線リモコンモジュールが接続されたGPIOピン ir_receiver_pin = machine.Pin(14, machine.Pin.IN) # リモコンの信号が始まるまで待機させる関数 def wait_for_start_bit(): while ir_receiver_pin.value() == 1: pass # リモコンの信号が始まるまで待機 # 赤外線を読み取る関数 def read_ir_signal(): wait_for_start_bit() data = [] for _ in range(4): while ir_receiver_pin.value() == 0: pass # ロー部分(パルス)をスキップ start_time = utime.ticks_us() while ir_receiver_pin.value() == 1: pass # ハイ部分(パルス)をスキップ pulse_duration = utime.ticks_diff(utime.ticks_us(), start_time) # パルスの長さ print (pulse_duration) # 読み取った信号12進数を表示 data.append(1 if pulse_duration > 1000 else 0) # 1000マイクロ秒以上なら1、そうでないなら0 return data # 読み取った信号を10進数に変換する関数 def decode_ir_data(data): decoded_number = 0 for bit in data: decoded_number = (decoded_number << 1) | bit return decoded_number while True: print('ok') ir_data = read_ir_signal() # 読み取った赤外線信号の値(2進数) 例[1,0,1,0] decoded_number = decode_ir_data(ir_data) # 読み取った信号を10進数に変換 print("Received IR Data:", ir_data) # 読み取った信号12進数を表示 print("Decoded Number:", decoded_number) # 読み取った信号10進数を表示 utime.sleep_ms(1000) # 信号を読み取る間隔
while ir_receiver_pin.value() == 0:
ir_receiver_pinの値が0(LOW)である間、pass文が実行され、ループが継続します。
ir_receiver_pinの値が0が終わったときにstart_timed時間の計測を開始します。
while ir_receiver_pin.value() == 1:
ir_receiver_pinの値が1(HIGHT)が終わるまで待ちます。utime.ticks_diff(utime.ticks_us(), start_time)
utimeモジュールを使用して、パルスの終わったの時間と start_time の時間の差をマイクロ秒単位で計算します。
ir_receiver_pinの値が0(LOW)である間、pass文が実行され、ループが継続します。
ir_receiver_pinの値が0が終わったときにstart_timed時間の計測を開始します。
while ir_receiver_pin.value() == 1:
ir_receiver_pinの値が1(HIGHT)が終わるまで待ちます。utime.ticks_diff(utime.ticks_us(), start_time)
utimeモジュールを使用して、パルスの終わったの時間と start_time の時間の差をマイクロ秒単位で計算します。
実行
自由研究
テンテン
赤外線パルスの値によって異なる処理(複数のLEDを点灯させるなど)をさせることができます。
赤外線LEDから決められた数値を発信できればリモコンになります。
テレビなどのリモコンは、このパルスの状態を読み取ることで動作しています。メーカーなどによって、いくつかの規格があります。
www.256byte.com
24 Pockets
FUTABA HOME