赤外線リモコンのパルス幅を表示します

Dependencies:   mbed IRRcevPulseWidth

Fork of irreceiver by Nobuki HIRAMINE

Committer:
nameless129
Date:
Sun Dec 25 03:04:21 2016 +0000
Revision:
2:65739f894d3b
Parent:
1:cc9fd4010a3d
Child:
3:ba3fe24e6306
?????????UART?????????;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nobuki 0:883a77e07ad5 1 #include "mbed.h"
nameless129 2:65739f894d3b 2 #include <string.h>
nobuki 0:883a77e07ad5 3
nameless129 2:65739f894d3b 4 #define IR_RCEV_MAX_IR_RECEV_NUM (400)
nameless129 2:65739f894d3b 5 #define IR_RCEV_TIMEOUT_US (100000)
nameless129 2:65739f894d3b 6
nameless129 2:65739f894d3b 7 DigitalIn g_dpinIrReceiver(D12);
nobuki 0:883a77e07ad5 8 Serial g_serial(USBTX, USBRX);
nobuki 0:883a77e07ad5 9
nobuki 0:883a77e07ad5 10 int main()
nobuki 0:883a77e07ad5 11 {
nameless129 2:65739f894d3b 12 g_serial.baud(9600);
nobuki 0:883a77e07ad5 13
nobuki 0:883a77e07ad5 14 Timer timer;
nameless129 2:65739f894d3b 15 uint32_t IRRcevMicroSec_prev;
nameless129 2:65739f894d3b 16 uint32_t IRRcevMicroSec,IRRcevMicroSec_diff;
nameless129 2:65739f894d3b 17 uint8_t IRRcevState,IRRcevState_prev = 1;
nameless129 2:65739f894d3b 18 uint16_t IR_RcevData[IR_RCEV_MAX_IR_RECEV_NUM];
nameless129 2:65739f894d3b 19 uint16_t cIRRcev=0;
nameless129 2:65739f894d3b 20 uint16_t i=0;
nameless129 2:65739f894d3b 21
nameless129 2:65739f894d3b 22 memset(IR_RcevData,0,sizeof(IR_RcevData));
nobuki 0:883a77e07ad5 23 timer.start();
nameless129 2:65739f894d3b 24 IRRcevMicroSec_prev = timer.read_us();
nameless129 1:cc9fd4010a3d 25
nobuki 0:883a77e07ad5 26 while(1)
nobuki 0:883a77e07ad5 27 {
nameless129 2:65739f894d3b 28 IRRcevMicroSec = timer.read_us();
nameless129 2:65739f894d3b 29 IRRcevMicroSec_diff = IRRcevMicroSec - IRRcevMicroSec_prev;
nameless129 2:65739f894d3b 30
nameless129 2:65739f894d3b 31 IRRcevState = g_dpinIrReceiver;
nameless129 2:65739f894d3b 32 if( IRRcevState != IRRcevState_prev )
nobuki 0:883a77e07ad5 33 {
nameless129 2:65739f894d3b 34 IRRcevState_prev = IRRcevState;
nameless129 2:65739f894d3b 35 IR_RcevData[cIRRcev] = IRRcevMicroSec_diff;
nameless129 2:65739f894d3b 36 cIRRcev++;
nameless129 2:65739f894d3b 37 IRRcevMicroSec_prev = IRRcevMicroSec;
nameless129 2:65739f894d3b 38 }
nameless129 2:65739f894d3b 39 else if( (IRRcevMicroSec_diff >= IR_RCEV_TIMEOUT_US) && (cIRRcev != 0) )
nameless129 2:65739f894d3b 40 {
nameless129 2:65739f894d3b 41 g_serial.printf("Rceved\r\n");
nameless129 2:65739f894d3b 42 g_serial.printf("RcevCnt:%d\r\n",cIRRcev);
nameless129 2:65739f894d3b 43 for(i=1;i<cIRRcev;i++)
nameless129 1:cc9fd4010a3d 44 {
nameless129 2:65739f894d3b 45 g_serial.printf("%d,",IR_RcevData[i]);
nameless129 1:cc9fd4010a3d 46 }
nameless129 2:65739f894d3b 47 g_serial.printf("\r\n");
nameless129 2:65739f894d3b 48 cIRRcev = 0;
nameless129 2:65739f894d3b 49 memset(IR_RcevData,0,sizeof(IR_RcevData));
nobuki 0:883a77e07ad5 50 }
nobuki 0:883a77e07ad5 51 }
nobuki 0:883a77e07ad5 52 }