]> vault307.fbx.one Git - ir_decoder.git/blob - read_code.py
ir decoder
[ir_decoder.git] / read_code.py
1 import utime
2
3
4 def read_code(pin):
5 raw = []
6
7 # Signal is inverted:
8 # 0 - high signal
9 # 1 - low signal
10
11 # wait for the leading pulse
12 while pin.value() == 1:
13 pass
14
15 # 9ms leading pulse
16 # 4.5ms space
17 utime.sleep_us(13500)
18
19 # Sample signal every 562.5µs
20 # Time sensitive
21 for i in range(1000):
22 raw.append(pin.value())
23 utime.sleep_us(56)
24
25 code = ""
26 count = 0
27
28 for sample in raw:
29 if sample == 1:
30 # count low signal
31 count += 1
32 else:
33 # ignore high signal
34 if count > 0:
35 # if low signal is longer than 562.5µs it 1 otherwise 0
36 code += "1" if count > 10 else "0"
37 count = 0
38
39 # trim message transmission and repeat codes
40 return code[0:32]