赤外線センサーで発信機の赤外線をキャッチし数値データーごとにLEDを点灯

赤外線センサーで発信機の赤外線をキャッチし数値データーごとに3つのLEDを点灯させます。
赤外線リモコン受信モジュールOSRB38C9AA
配線図
OUTPUT GP 14 正面に向かって左側
Gnd アース(GND) 中央
Vcc 電源 3V3(OUT) 正面に向かって右側
Gnd アース(GND) 中央
Vcc 電源 3V3(OUT) 正面に向かって右側
MicroPythonプログラム
import machine
import utime
led1_pin = machine.Pin(20, machine.Pin.OUT)
led2_pin = machine.Pin(19, machine.Pin.OUT)
led3_pin = machine.Pin(18, machine.Pin.OUT)
led1_pin.on()
led2_pin.on()
led3_pin.on()
# 一定時間待機
utime.sleep(2)
# LED1を消灯させる
led1_pin.off()
led2_pin.off()
led3_pin.off()
#control_value = 2
def led_on(control_value):
# control_value数値によって異なる動作を行う
if control_value == 12:
led1_pin.on()
utime.sleep(1)
led1_pin.off()
elif control_value == 10:
led2_pin.on()
utime.sleep(1)
led2_pin.off()
elif control_value == 8:
led3_pin.on()
utime.sleep(1)
led3_pin.off()
# 赤外線リモコンモジュールが接続された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)
data.append(1 if pulse_duration > 1000 else 0) # 1000マイクロ秒以上なら1、そうでないなら0
return data
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()
decoded_number = decode_ir_data(ir_data)
led_on (decoded_number)
print("Received IR Data:", ir_data)
print("Decoded Number:", decoded_number)
utime.sleep_ms(1000) # 信号を読み取る間隔
実行
自由研究

テンテン
赤外線パルスの値によって複数のLEDを点灯させました。
他の異なる処理(モーターなどを動かす。)もできます。






