37 void delay100ms(
void) __attribute__((weak));
38 extern void delay100ms(
void);
41 #if defined(ARDUINO_ARCH_AVR)
42 #include <util/delay.h>
44 static int8_t _rfTxPort = -1;
45 static int8_t _rfTxBit = -1;
60 #define RF_TX_PIN_INIT(rfTxPin) { \
61 _rfTxPort = digitalPinToPort(rfTxPin); \
62 _rfTxBit = digitalPinToBitMask(rfTxPin); \
63 *portModeRegister(_rfTxPort) |= _rfTxBit; \
70 #define RF_TX_PIN_DISABLE() { \
71 if ((_rfTxPort >= 0) && (_rfTxBit >= 0)) { \
72 *portModeRegister(_rfTxPort) &= ~_rfTxBit; \
81 #define IS_RF_TX_PIN_INITIALIZED() ((_rfTxPort >= 0) && (_rfTxBit >= 0))
87 #define RF_TX_PIN_HIGH() { *portOutputRegister(_rfTxPort) |= _rfTxBit; }
93 #define RF_TX_PIN_LOW() { *portOutputRegister(_rfTxPort) &= ~_rfTxBit; }
99 #define RF_TX_DELAY_US(us) _delay_us(us)
105 #define RF_TX_DELAY_MS(ms) _delay_ms(ms)
107 #elif defined(ARDUINO_ARCH_ESP8266) || defined(ARDUINO_ARCH_ESP32)
108 static int8_t _rfTxPin = -1;
116 #define RF_TX_PIN_INIT(rfTxPin) { \
118 pinMode(_rfTxPin, OUTPUT); \
125 #define RF_TX_PIN_DISABLE() { \
126 if (_rfTxPin >= 0) { \
127 pinMode(_rfTxPin, INPUT); \
136 #define IS_RF_TX_PIN_INITIALIZED() (_rfTxPin >= 0)
142 #define RF_TX_PIN_HIGH() { digitalWrite(_rfTxPin, HIGH); }
148 #define RF_TX_PIN_LOW() { digitalWrite(_rfTxPin, LOW); }
154 #define RF_TX_DELAY_US(us) delayMicroseconds(us)
160 #define RF_TX_DELAY_MS(ms) delay(ms)
162 #error "May work, but not tested on this target"
175 RF_TX_DELAY_US(T_SYNC_US);
177 RF_TX_DELAY_US(T_SYNC_US);
187 RF_TX_DELAY_US(T_BIT_US);
189 RF_TX_DELAY_US(T_BIT_US);
199 RF_TX_DELAY_US(T_BIT_US);
201 RF_TX_DELAY_US(T_BIT_US);
207 static void txDisable()
216 static void txPreamble()
219 for (uint8_t i = 0; i < 12; i++) {
222 RF_TX_DELAY_US(T_PREAMBLE_SPACE_US);
226 static void txData(uint32_t data)
229 for (uint8_t i = 0; i < 32; i++) {
230 if (data & (1UL << i)) {
251 RF_TX_PIN_INIT(rfTxPin);
273 if (!IS_RF_TX_PIN_INITIALIZED()) {
uint32_t OregonTHN128_DataToRaw(OregonTHN128Data_t *data)
Convert data structure to 32-bit raw data.
void OregonTHN128_TxRawData(uint32_t rawData)
Transmit data.
void OregonTHN128_Transmit(OregonTHN128Data_t *data)
Transmit Transmit data.
void OregonTHN128_TxBegin(uint8_t rfTxPin)
Transmit begin.
void OregonTHN128_TxEnd(void)
Disable transmit.
Oregon THN128 433MHz temperature transmit library for Arduino.