Nobuki HIRAMINE
/
irsender2
IR Sender
main.cpp@0:ca0a6301fb95, 2015-08-12 (annotated)
- Committer:
- nobuki
- Date:
- Wed Aug 12 17:20:28 2015 +0000
- Revision:
- 0:ca0a6301fb95
a
Who changed what in which revision?
User | Revision | Line number | New 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 | } |