X-Git-Url: https://vault307.fbx.one/gitweb/micorpython_ir.git/blobdiff_plain/d8d6758c3370f4adc636aed7b935a492754f6062..refs/heads/master:/ir_tx/nec.py diff --git a/ir_tx/nec.py b/ir_tx/nec.py index 1e02c9f..be9ee28 100644 --- a/ir_tx/nec.py +++ b/ir_tx/nec.py @@ -2,8 +2,9 @@ # NEC protocol. # Author: Peter Hinch -# Copyright Peter Hinch 2020 Released under the MIT license +# Copyright Peter Hinch 2020-2022 Released under the MIT license +# With thanks to J.E. Tannenbaum for information re Samsung protocol from micropython import const from ir_tx import IR, STOP @@ -11,17 +12,25 @@ _TBURST = const(563) _T_ONE = const(1687) class NEC(IR): + valid = (0xffff, 0xff, 0) # Max addr, data, toggle + samsung = False - def __init__(self, pin, freq=38000, verbose=False): # NEC specifies 38KHz - super().__init__(pin, freq, 68, 50, verbose) + def __init__(self, pin, freq=38000, verbose=False): # NEC specifies 38KHz also Samsung + super().__init__(pin, freq, 68, 33, verbose) # Measured duty ratio 33% def _bit(self, b): self.append(_TBURST, _T_ONE if b else _TBURST) def tx(self, addr, data, _): # Ignore toggle - self.append(9000, 4500) + if self.samsung: + self.append(4500, 4500) + else: + self.append(9000, 4500) if addr < 256: # Short address: append complement - addr |= ((addr ^ 0xff) << 8) + if self.samsung: + addr |= addr << 8 + else: + addr |= ((addr ^ 0xff) << 8) for _ in range(16): self._bit(addr & 1) addr >>= 1