IR Sender

Dependencies:   mbed

Committer:
nobuki
Date:
Wed Aug 12 17:20:28 2015 +0000
Revision:
0:ca0a6301fb95
a

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nobuki 0:ca0a6301fb95 1 #include "mbed.h"
nobuki 0:ca0a6301fb95 2
nobuki 0:ca0a6301fb95 3 #define DEBOUNCEDELAY 500
nobuki 0:ca0a6301fb95 4
nobuki 0:ca0a6301fb95 5 // Turn ON/OFF the power of TV
nobuki 0:ca0a6301fb95 6 int ARRAY_HIGHLOW[] = {
nobuki 0:ca0a6301fb95 7 3507, 1686, 493, 400, 469, 1242, 494, 375, 493, 375, 494, 375, 493, 399, 469, 400, 469, 399, 469, 375,
nobuki 0:ca0a6301fb95 8 494, 399, 469, 375, 493, 373, 496, 373, 495, 1268, 468, 377, 492, 399, 469, 400, 469, 373, 495, 399,
nobuki 0:ca0a6301fb95 9 469, 400, 469, 399, 469, 373, 495, 400, 469, 1268, 468, 400, 469, 399, 469, 400, 468, 374, 495, 399,
nobuki 0:ca0a6301fb95 10 469, 400, 468, 374, 495, 400, 468, 1268, 469, 400, 468, 1268, 469, 1243, 494, 1268, 468, 1268, 469, 400,
nobuki 0:ca0a6301fb95 11 468, 375, 494, 1268, 468, 400, 469, 1243, 493, 1245, 492, 1268, 469, 1268, 468, 400, 469, 1243, 493, 74551,
nobuki 0:ca0a6301fb95 12 3533, 1685, 494, 375, 493, 1268, 469, 374, 494, 400, 469, 399, 469, 399, 469, 376, 493, 372, 496, 399,
nobuki 0:ca0a6301fb95 13 469, 400, 469, 376, 492, 399, 469, 400, 469, 1267, 469, 400, 469, 399, 469, 373, 495, 400, 469, 399,
nobuki 0:ca0a6301fb95 14 469, 400, 468, 400, 469, 399, 469, 400, 468, 1268, 469, 400, 468, 376, 493, 374, 494, 400, 468, 400,
nobuki 0:ca0a6301fb95 15 468, 377, 492, 400, 468, 400, 469, 1245, 492, 399, 469, 1243, 494, 1268, 468, 1269, 468, 1268, 421, 447,
nobuki 0:ca0a6301fb95 16 469, 376, 492, 1245, 444, 425, 491, 1269, 420, 1316, 421, 1293, 491, 1269, 468, 377, 491, 1244, 445, 74608,
nobuki 0:ca0a6301fb95 17 3508, 1710, 469, 399, 469, 1268, 469, 399, 469, 399, 469, 400, 469, 399, 469, 399, 469, 400, 469, 375,
nobuki 0:ca0a6301fb95 18 493, 399, 469, 400, 469, 373, 495, 373, 495, 1268, 469, 399, 469, 400, 469, 399, 469, 400, 468, 373,
nobuki 0:ca0a6301fb95 19 496, 399, 469, 400, 468, 375, 494, 399, 469, 1268, 469, 400, 468, 400, 468, 400, 469, 400, 468, 400,
nobuki 0:ca0a6301fb95 20 468, 400, 469, 400, 468, 374, 494, 1269, 468, 400, 469, 1268, 468, 1243, 494, 1268, 469, 1268, 468, 400,
nobuki 0:ca0a6301fb95 21 469, 400, 468, 1268, 469, 376, 492, 1269, 468, 1268, 469, 1268, 468, 1244, 493, 400, 468, 1242, 495, };
nobuki 0:ca0a6301fb95 22
nobuki 0:ca0a6301fb95 23
nobuki 0:ca0a6301fb95 24 DigitalIn g_digitalinButton(p20);
nobuki 0:ca0a6301fb95 25 PwmOut g_pwmoutLed(p21);
nobuki 0:ca0a6301fb95 26
nobuki 0:ca0a6301fb95 27 void sendSignal()
nobuki 0:ca0a6301fb95 28 {
nobuki 0:ca0a6301fb95 29 g_pwmoutLed.period_us( 26 ); // 38KHz => 1/38000[s] = 26.315 * 10 ^ -6 [s] = 26.315 [us]
nobuki 0:ca0a6301fb95 30
nobuki 0:ca0a6301fb95 31 int iCountHighLow = sizeof( ARRAY_HIGHLOW ) / sizeof( ARRAY_HIGHLOW[0] );
nobuki 0:ca0a6301fb95 32 for( int iIndexHighLow = 0; iIndexHighLow < iCountHighLow; iIndexHighLow++ )
nobuki 0:ca0a6301fb95 33 {
nobuki 0:ca0a6301fb95 34 g_pwmoutLed.write( 0.5 * (1 - (iIndexHighLow % 2)) ); // iIndexHighLow : even number -> 0.5, uneven number -> 0
nobuki 0:ca0a6301fb95 35 wait_us( ARRAY_HIGHLOW[iIndexHighLow] );
nobuki 0:ca0a6301fb95 36 }
nobuki 0:ca0a6301fb95 37 }
nobuki 0:ca0a6301fb95 38
nobuki 0:ca0a6301fb95 39 int main()
nobuki 0:ca0a6301fb95 40 {
nobuki 0:ca0a6301fb95 41 Timer timer;
nobuki 0:ca0a6301fb95 42 timer.start();
nobuki 0:ca0a6301fb95 43 int iMilliSec_prev = timer.read_ms();
nobuki 0:ca0a6301fb95 44 int iButtonState_prev = 0;
nobuki 0:ca0a6301fb95 45
nobuki 0:ca0a6301fb95 46 while(1)
nobuki 0:ca0a6301fb95 47 {
nobuki 0:ca0a6301fb95 48 int iButtonState = g_digitalinButton;
nobuki 0:ca0a6301fb95 49
nobuki 0:ca0a6301fb95 50 if( 0 == iButtonState_prev
nobuki 0:ca0a6301fb95 51 && 1 == iButtonState )
nobuki 0:ca0a6301fb95 52 {
nobuki 0:ca0a6301fb95 53 int iMilliSec = timer.read_ms();
nobuki 0:ca0a6301fb95 54 if( DEBOUNCEDELAY < (iMilliSec - iMilliSec_prev) )
nobuki 0:ca0a6301fb95 55 {
nobuki 0:ca0a6301fb95 56 sendSignal();
nobuki 0:ca0a6301fb95 57 }
nobuki 0:ca0a6301fb95 58
nobuki 0:ca0a6301fb95 59 iMilliSec_prev = iMilliSec;
nobuki 0:ca0a6301fb95 60 }
nobuki 0:ca0a6301fb95 61
nobuki 0:ca0a6301fb95 62 iButtonState_prev = iButtonState;
nobuki 0:ca0a6301fb95 63 }
nobuki 0:ca0a6301fb95 64 }