Skip to content

Instantly share code, notes, and snippets.

@Gnitset
Created March 2, 2020 23:01
Show Gist options
  • Save Gnitset/ccc52e56cfdcc0709b972bd8ddea0cb7 to your computer and use it in GitHub Desktop.
Save Gnitset/ccc52e56cfdcc0709b972bd8ddea0cb7 to your computer and use it in GitHub Desktop.
import machine
rmt = machine.RMT(channel=4, gpio="P12", tx_idle_level=machine.RMT.LOW, tx_carrier=(38000, 50, machine.RMT.HIGH))
# channel 4 ahs a resolution of 1000ns = 1us
header = (2220,784)
one = (758,1568)
zero = (758,804)
ptrail = (761,30000)
pre_data = 0x48
pre_data_bits = 7
toggle_bit_mask = 0x1
button_map = {
'POWER': 0x00,
'SWING': 0xAA,
'SPEED_UP': 0x54,
'TIMER_UP': 0x78,
'SPEED_DOWN': 0xFE,
'TIMER_DOWN': 0xCC,
}
def bit_list(number, bits=8):
return [(number >> bit) & 1 for bit in range(bits - 1, -1, -1)]
def bit_to_length(bit):
if bit:
return one
else:
return zero
def press_button(button, toggle=False):
# header, pre_data, data, ptrail, gap
response = list()
response.extend(header)
[response.extend(bit_to_length(bit)) for bit in bit_list(pre_data, pre_data_bits)]
if toggle:
[response.extend(bit_to_length(bit)) for bit in bit_list(button_map[button]^toggle_bit_mask)]
else:
[response.extend(bit_to_length(bit)) for bit in bit_list(button_map[button])]
response.extend(ptrail)
return tuple(response)
toggle = True
for Z in range(10):
toggle = not toggle
rmt.pulses_send(duration=press_button('SPEED_UP',toggle), start_level=machine.RMT.HIGH)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment