IR Receiver

Dependencies:   mbed

Committer:
nobuki
Date:
Wed Aug 12 17:23:22 2015 +0000
Revision:
0:d8a26e89c7f3
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nobuki 0:d8a26e89c7f3 1 #include "mbed.h"
nobuki 0:d8a26e89c7f3 2
nobuki 0:d8a26e89c7f3 3 DigitalIn g_digitalinIrReceiver(p20);
nobuki 0:d8a26e89c7f3 4 Serial g_serial(USBTX, USBRX);
nobuki 0:d8a26e89c7f3 5
nobuki 0:d8a26e89c7f3 6 int main()
nobuki 0:d8a26e89c7f3 7 {
nobuki 0:d8a26e89c7f3 8 // デジタル入力ピンは、デフォルトで、内部プルダウンとなります(参考:https://developer.mbed.org/handbook/DigitalIn)
nobuki 0:d8a26e89c7f3 9 // 内部プルダウンの場合、IRセンサーからのHIGH電圧をLOW電圧と検知してしまうので、内部プルモードを「プルなし(PullNone)」にします。
nobuki 0:d8a26e89c7f3 10 g_digitalinIrReceiver.mode( PullNone ); // mode : PullUp, PullDown, PullNone, OpenDrain
nobuki 0:d8a26e89c7f3 11 g_serial.baud(115200);
nobuki 0:d8a26e89c7f3 12
nobuki 0:d8a26e89c7f3 13 Timer timer;
nobuki 0:d8a26e89c7f3 14 timer.start();
nobuki 0:d8a26e89c7f3 15 int iMicroSec_prev = timer.read_us();
nobuki 0:d8a26e89c7f3 16 int iState_prev = 1;
nobuki 0:d8a26e89c7f3 17 while(1)
nobuki 0:d8a26e89c7f3 18 {
nobuki 0:d8a26e89c7f3 19 int iState = g_digitalinIrReceiver;
nobuki 0:d8a26e89c7f3 20 if( iState != iState_prev )
nobuki 0:d8a26e89c7f3 21 {
nobuki 0:d8a26e89c7f3 22 iState_prev = iState;
nobuki 0:d8a26e89c7f3 23 int iMicroSec = timer.read_us();
nobuki 0:d8a26e89c7f3 24 g_serial.printf( "%d, ", iMicroSec - iMicroSec_prev );
nobuki 0:d8a26e89c7f3 25 iMicroSec_prev = iMicroSec;
nobuki 0:d8a26e89c7f3 26 }
nobuki 0:d8a26e89c7f3 27 }
nobuki 0:d8a26e89c7f3 28 }