赤外線リモコンのパルス幅を表示します
Dependencies: mbed IRRcevPulseWidth
Fork of irreceiver by
Diff: main.cpp
- Revision:
- 3:ba3fe24e6306
- Parent:
- 2:65739f894d3b
- Child:
- 5:6cd0d9c1a0a3
--- a/main.cpp Sun Dec 25 03:04:21 2016 +0000 +++ b/main.cpp Sun Dec 25 08:55:02 2016 +0000 @@ -1,52 +1,35 @@ #include "mbed.h" -#include <string.h> +#include "IRRcevPulseWidth.h" -#define IR_RCEV_MAX_IR_RECEV_NUM (400) +#define IR_RCEV_MAX_IR_RECEV_NUM (300) #define IR_RCEV_TIMEOUT_US (100000) -DigitalIn g_dpinIrReceiver(D12); Serial g_serial(USBTX, USBRX); +IRRcevPulseWidth IRrcev(D12); int main() { - g_serial.baud(9600); + uint16_t IR_RcevData[IR_RCEV_MAX_IR_RECEV_NUM]; + uint16_t i; + int8_t ret; - Timer timer; - uint32_t IRRcevMicroSec_prev; - uint32_t IRRcevMicroSec,IRRcevMicroSec_diff; - uint8_t IRRcevState,IRRcevState_prev = 1; - uint16_t IR_RcevData[IR_RCEV_MAX_IR_RECEV_NUM]; - uint16_t cIRRcev=0; - uint16_t i=0; - - memset(IR_RcevData,0,sizeof(IR_RcevData)); - timer.start(); - IRRcevMicroSec_prev = timer.read_us(); + IRrcev.init(IR_RcevData,IR_RCEV_MAX_IR_RECEV_NUM,IR_RCEV_TIMEOUT_US); while(1) { - IRRcevMicroSec = timer.read_us(); - IRRcevMicroSec_diff = IRRcevMicroSec - IRRcevMicroSec_prev; - - IRRcevState = g_dpinIrReceiver; - if( IRRcevState != IRRcevState_prev ) + ret = IRrcev.status(); + if(ret == 1) { - IRRcevState_prev = IRRcevState; - IR_RcevData[cIRRcev] = IRRcevMicroSec_diff; - cIRRcev++; - IRRcevMicroSec_prev = IRRcevMicroSec; - } - else if( (IRRcevMicroSec_diff >= IR_RCEV_TIMEOUT_US) && (cIRRcev != 0) ) - { - g_serial.printf("Rceved\r\n"); - g_serial.printf("RcevCnt:%d\r\n",cIRRcev); - for(i=1;i<cIRRcev;i++) + g_serial.printf("\r\nproc succes:%d\r\nDUMP\r\n",IRrcev.getData_N()); + for(i=0;i<IRrcev.getData_N();i++) { g_serial.printf("%d,",IR_RcevData[i]); } - g_serial.printf("\r\n"); - cIRRcev = 0; - memset(IR_RcevData,0,sizeof(IR_RcevData)); + } + else if(ret == -1) + { + g_serial.printf("\r\nCount Over!\r\n"); } } + }