赤外線センサーでリモコンの赤外線をキャッチ

赤外線センサーでリモコンの赤外線をキャッチして数値データーを読み取ります。
赤外線リモコン受信モジュール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




