Nobuki HIRAMINE
/
irsender
IR Sender
main.cpp@4:5d8c016ba841, 2012-12-02 (annotated)
- Committer:
- nobuki
- Date:
- Sun Dec 02 10:18:59 2012 +0000
- Revision:
- 4:5d8c016ba841
- Parent:
- 3:da80fe137d03
Version 4
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nobuki | 0:edaa83475c21 | 1 | #include "mbed.h" |
nobuki | 0:edaa83475c21 | 2 | |
nobuki | 0:edaa83475c21 | 3 | #define DEBOUNCEDELAY 500 |
nobuki | 0:edaa83475c21 | 4 | |
nobuki | 4:5d8c016ba841 | 5 | // Turn ON/OFF the power of TV |
nobuki | 3:da80fe137d03 | 6 | short ARRAY_HIGHLOW[] = { 2461, 543, 1290, 514, 692, 507, 1289, 514, 692, 507, 1290, 514, 691, 507, 690, 508, 1289, 516, 717, 481, |
nobuki | 0:edaa83475c21 | 7 | 690, 508, 689, 508, 692, 25634, 2487, 517, 1289, 516, 688, 510, 1289, 515, 689, 509, 1289, 518, 686, 510, |
nobuki | 0:edaa83475c21 | 8 | 664, 534, 1288, 516, 691, 507, 690, 509, 689, 508, 690, 25635, 2490, 515, 1289, 515, 691, 508, 1288, 516, |
nobuki | 0:edaa83475c21 | 9 | 691, 508, 1288, 515, 691, 508, 690, 507, 1291, 513, 693, 507, 689, 506, 692, 509, 689, 25635, 2490, 515, |
nobuki | 0:edaa83475c21 | 10 | 1288, 516, 692, 506, 1289, 516, 691, 507, 1289, 516, 691, 506, 690, 508, 1291, 514, 691, 507, 690, 508, |
nobuki | 0:edaa83475c21 | 11 | 690, 509, 689, 25616, 2508, 515, 1290, 515, 690, 508, 1289, 516, 690, 508, 1288, 516, 690, 509, 688, 509, |
nobuki | 0:edaa83475c21 | 12 | 1289, 515, 689, 509, 690, 508, 690, 508, 690, 25636, 2489, 515, 1290, 517, 688, 508, 1289, 517, 689, 507, |
nobuki | 3:da80fe137d03 | 13 | 1290, 516, 690, 507, 692, 506, 1289, 515, 691, 507, 692, 507, 690, 506, 692,}; |
nobuki | 0:edaa83475c21 | 14 | |
nobuki | 0:edaa83475c21 | 15 | DigitalIn g_dpinButton(p30); |
nobuki | 0:edaa83475c21 | 16 | PwmOut g_pwmout(p21); |
nobuki | 0:edaa83475c21 | 17 | |
nobuki | 2:4fd8d143d73c | 18 | void sendSignal() |
nobuki | 0:edaa83475c21 | 19 | { |
nobuki | 2:4fd8d143d73c | 20 | g_pwmout.period_us( 26 ); // 38KHz => 1/38000[s] = 26.315 * 10 ^ -6 [s] = 26.315 [us] |
nobuki | 2:4fd8d143d73c | 21 | |
nobuki | 2:4fd8d143d73c | 22 | int iCountHighLow = sizeof( ARRAY_HIGHLOW ) / sizeof( ARRAY_HIGHLOW[0] ); |
nobuki | 2:4fd8d143d73c | 23 | for( int iIndexHighLow = 0; iIndexHighLow < iCountHighLow; iIndexHighLow++ ) |
nobuki | 0:edaa83475c21 | 24 | { |
nobuki | 2:4fd8d143d73c | 25 | g_pwmout.write( 0.5 * (1 - (iIndexHighLow % 2)) ); // iIndexHighLow : even number -> 0.5, uneven number -> 0 |
nobuki | 2:4fd8d143d73c | 26 | wait_us( ARRAY_HIGHLOW[iIndexHighLow] ); |
nobuki | 0:edaa83475c21 | 27 | } |
nobuki | 0:edaa83475c21 | 28 | } |
nobuki | 0:edaa83475c21 | 29 | |
nobuki | 0:edaa83475c21 | 30 | int main() |
nobuki | 0:edaa83475c21 | 31 | { |
nobuki | 0:edaa83475c21 | 32 | Timer timer; |
nobuki | 0:edaa83475c21 | 33 | timer.start(); |
nobuki | 0:edaa83475c21 | 34 | int iMilliSec_prev = timer.read_ms(); |
nobuki | 0:edaa83475c21 | 35 | int iButtonState_prev = 0; |
nobuki | 0:edaa83475c21 | 36 | |
nobuki | 0:edaa83475c21 | 37 | while(1) |
nobuki | 0:edaa83475c21 | 38 | { |
nobuki | 0:edaa83475c21 | 39 | int iButtonState = g_dpinButton; |
nobuki | 0:edaa83475c21 | 40 | |
nobuki | 0:edaa83475c21 | 41 | if( 0 == iButtonState_prev |
nobuki | 0:edaa83475c21 | 42 | && 1 == iButtonState ) |
nobuki | 0:edaa83475c21 | 43 | { |
nobuki | 0:edaa83475c21 | 44 | int iMilliSec = timer.read_ms(); |
nobuki | 0:edaa83475c21 | 45 | if( DEBOUNCEDELAY < (iMilliSec - iMilliSec_prev) ) |
nobuki | 0:edaa83475c21 | 46 | { |
nobuki | 2:4fd8d143d73c | 47 | sendSignal(); |
nobuki | 0:edaa83475c21 | 48 | } |
nobuki | 0:edaa83475c21 | 49 | |
nobuki | 0:edaa83475c21 | 50 | iMilliSec_prev = iMilliSec; |
nobuki | 0:edaa83475c21 | 51 | } |
nobuki | 0:edaa83475c21 | 52 | |
nobuki | 0:edaa83475c21 | 53 | iButtonState_prev = iButtonState; |
nobuki | 0:edaa83475c21 | 54 | } |
nobuki | 0:edaa83475c21 | 55 | } |