赤外線リモコンのパルス幅を表示します
Dependencies: mbed IRRcevPulseWidth
Fork of irreceiver by
main.cpp@2:65739f894d3b, 2016-12-25 (annotated)
- 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?
User | Revision | Line number | New 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 | } |