from machine import Pin
import time
ir_pin = Pin(14, Pin.IN)
def read_ir():
pulses = []
t0 = time.ticks_us()
while ir_pin.value() == 1:
pass
while len(pulses) < 100:
val = ir_pin.value()
t1 = time.ticks_us()
while ir_pin.value() == val:
if time.ticks_diff(time.ticks_us(), t0) > 100000:
return pulses
t0 = time.ticks_us()
pulses.append(time.ticks_diff(t0, t1))
return pulses
def decode_nec(pulses):
if len(pulses) < 66:
return None
bits = ""
for i in range(2, 66, 2): # skip start pulse
if pulses[i+1] > 1000: # long space = "1"
bits += "1"
else: # short space = "0"
bits += "0"
# Convert bits to int
try:
value = int(bits, 2)
return hex(value)
except:
return None
while True:
pulses = read_ir()
if pulses:
code = decode_nec(pulses)
if code:
print("IR Code:", code)Loading
esp32-devkit-c-v4
esp32-devkit-c-v4