赤外線リモコンのパルス幅を表示します
Dependencies: mbed IRRcevPulseWidth
Fork of irreceiver by
main.cpp
- Committer:
- nameless129
- Date:
- 2016-12-25
- Revision:
- 2:65739f894d3b
- Parent:
- 1:cc9fd4010a3d
- Child:
- 3:ba3fe24e6306
File content as of revision 2:65739f894d3b:
#include "mbed.h" #include <string.h> #define IR_RCEV_MAX_IR_RECEV_NUM (400) #define IR_RCEV_TIMEOUT_US (100000) DigitalIn g_dpinIrReceiver(D12); Serial g_serial(USBTX, USBRX); int main() { g_serial.baud(9600); 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(); while(1) { IRRcevMicroSec = timer.read_us(); IRRcevMicroSec_diff = IRRcevMicroSec - IRRcevMicroSec_prev; IRRcevState = g_dpinIrReceiver; if( IRRcevState != IRRcevState_prev ) { 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("%d,",IR_RcevData[i]); } g_serial.printf("\r\n"); cIRRcev = 0; memset(IR_RcevData,0,sizeof(IR_RcevData)); } } }