
Oregon Scientific Decoder V2 and V3 for Nucleo-F401RE
Oregon-Scientific Decoder for V2 and V3 protocol. As exemple it handles THGR122NX (V2) and THGR810 (V3) sensors.
The software use interrupts to collect frames in a buffer and decode them in a background task.
main.cpp@1:265557f4b6b8, 2020-07-18 (annotated)
- Committer:
- sev2000
- Date:
- Sat Jul 18 07:58:54 2020 +0000
- Revision:
- 1:265557f4b6b8
- Parent:
- 0:7d471396cb64
Change for Mbed 6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sev2000 | 0:7d471396cb64 | 1 | #include "mbed.h" |
sev2000 | 0:7d471396cb64 | 2 | #include "Regul.h" |
sev2000 | 1:265557f4b6b8 | 3 | //#include "rtos.h" |
sev2000 | 0:7d471396cb64 | 4 | |
sev2000 | 0:7d471396cb64 | 5 | void Init_Oregon(void); |
sev2000 | 0:7d471396cb64 | 6 | extern measure_t Sensor[]; |
sev2000 | 0:7d471396cb64 | 7 | |
sev2000 | 0:7d471396cb64 | 8 | DigitalOut led1(LED1); |
sev2000 | 1:265557f4b6b8 | 9 | //static BufferedSerial pc(USBTX, USBRX,115200); // tx, rx |
sev2000 | 0:7d471396cb64 | 10 | |
sev2000 | 0:7d471396cb64 | 11 | int main() |
sev2000 | 0:7d471396cb64 | 12 | { |
sev2000 | 0:7d471396cb64 | 13 | measure_t Measure; |
sev2000 | 0:7d471396cb64 | 14 | |
sev2000 | 1:265557f4b6b8 | 15 | //pc.baud(115200); |
sev2000 | 1:265557f4b6b8 | 16 | DBG("Start"); |
sev2000 | 0:7d471396cb64 | 17 | Init_Oregon(); |
sev2000 | 0:7d471396cb64 | 18 | // NVIC_SetPriority(EXTI9_5_IRQn, 0); //set interupt to highest priority 0 |
sev2000 | 0:7d471396cb64 | 19 | // NVIC_SetPriority(TIM3_IRQn,1); // set mbed tickers to lower priority than other things |
sev2000 | 0:7d471396cb64 | 20 | |
sev2000 | 0:7d471396cb64 | 21 | while (1) |
sev2000 | 0:7d471396cb64 | 22 | { // loop forever |
sev2000 | 0:7d471396cb64 | 23 | led1 = !led1; |
sev2000 | 0:7d471396cb64 | 24 | |
sev2000 | 0:7d471396cb64 | 25 | for (int i=0; i<NB_CHAN; i++) |
sev2000 | 0:7d471396cb64 | 26 | { |
sev2000 | 0:7d471396cb64 | 27 | if (Sensor[i].timestamp !=0) |
sev2000 | 0:7d471396cb64 | 28 | { |
sev2000 | 0:7d471396cb64 | 29 | Measure=Sensor[i]; |
sev2000 | 1:265557f4b6b8 | 30 | printf("\r\nCh%d : %0.1f%cC %0.0f%%\r\n", i , Measure.temp1, 0xC2B0, Measure.hum1); |
sev2000 | 0:7d471396cb64 | 31 | Sensor[i].timestamp = 0; |
sev2000 | 0:7d471396cb64 | 32 | } |
sev2000 | 0:7d471396cb64 | 33 | } |
sev2000 | 0:7d471396cb64 | 34 | ThisThread::sleep_for(2000); |
sev2000 | 0:7d471396cb64 | 35 | } |
sev2000 | 0:7d471396cb64 | 36 | } |