IR Sender

Dependencies:   mbed

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?

UserRevisionLine numberNew 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 }