Nobuki HIRAMINE
/
irsender2
IR Sender
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 00003 #define DEBOUNCEDELAY 500 00004 00005 // Turn ON/OFF the power of TV 00006 int ARRAY_HIGHLOW[] = { 00007 3507, 1686, 493, 400, 469, 1242, 494, 375, 493, 375, 494, 375, 493, 399, 469, 400, 469, 399, 469, 375, 00008 494, 399, 469, 375, 493, 373, 496, 373, 495, 1268, 468, 377, 492, 399, 469, 400, 469, 373, 495, 399, 00009 469, 400, 469, 399, 469, 373, 495, 400, 469, 1268, 468, 400, 469, 399, 469, 400, 468, 374, 495, 399, 00010 469, 400, 468, 374, 495, 400, 468, 1268, 469, 400, 468, 1268, 469, 1243, 494, 1268, 468, 1268, 469, 400, 00011 468, 375, 494, 1268, 468, 400, 469, 1243, 493, 1245, 492, 1268, 469, 1268, 468, 400, 469, 1243, 493, 74551, 00012 3533, 1685, 494, 375, 493, 1268, 469, 374, 494, 400, 469, 399, 469, 399, 469, 376, 493, 372, 496, 399, 00013 469, 400, 469, 376, 492, 399, 469, 400, 469, 1267, 469, 400, 469, 399, 469, 373, 495, 400, 469, 399, 00014 469, 400, 468, 400, 469, 399, 469, 400, 468, 1268, 469, 400, 468, 376, 493, 374, 494, 400, 468, 400, 00015 468, 377, 492, 400, 468, 400, 469, 1245, 492, 399, 469, 1243, 494, 1268, 468, 1269, 468, 1268, 421, 447, 00016 469, 376, 492, 1245, 444, 425, 491, 1269, 420, 1316, 421, 1293, 491, 1269, 468, 377, 491, 1244, 445, 74608, 00017 3508, 1710, 469, 399, 469, 1268, 469, 399, 469, 399, 469, 400, 469, 399, 469, 399, 469, 400, 469, 375, 00018 493, 399, 469, 400, 469, 373, 495, 373, 495, 1268, 469, 399, 469, 400, 469, 399, 469, 400, 468, 373, 00019 496, 399, 469, 400, 468, 375, 494, 399, 469, 1268, 469, 400, 468, 400, 468, 400, 469, 400, 468, 400, 00020 468, 400, 469, 400, 468, 374, 494, 1269, 468, 400, 469, 1268, 468, 1243, 494, 1268, 469, 1268, 468, 400, 00021 469, 400, 468, 1268, 469, 376, 492, 1269, 468, 1268, 469, 1268, 468, 1244, 493, 400, 468, 1242, 495, }; 00022 00023 00024 DigitalIn g_digitalinButton(p20); 00025 PwmOut g_pwmoutLed(p21); 00026 00027 void sendSignal() 00028 { 00029 g_pwmoutLed.period_us( 26 ); // 38KHz => 1/38000[s] = 26.315 * 10 ^ -6 [s] = 26.315 [us] 00030 00031 int iCountHighLow = sizeof( ARRAY_HIGHLOW ) / sizeof( ARRAY_HIGHLOW[0] ); 00032 for( int iIndexHighLow = 0; iIndexHighLow < iCountHighLow; iIndexHighLow++ ) 00033 { 00034 g_pwmoutLed.write( 0.5 * (1 - (iIndexHighLow % 2)) ); // iIndexHighLow : even number -> 0.5, uneven number -> 0 00035 wait_us( ARRAY_HIGHLOW[iIndexHighLow] ); 00036 } 00037 } 00038 00039 int main() 00040 { 00041 Timer timer; 00042 timer.start(); 00043 int iMilliSec_prev = timer.read_ms(); 00044 int iButtonState_prev = 0; 00045 00046 while(1) 00047 { 00048 int iButtonState = g_digitalinButton; 00049 00050 if( 0 == iButtonState_prev 00051 && 1 == iButtonState ) 00052 { 00053 int iMilliSec = timer.read_ms(); 00054 if( DEBOUNCEDELAY < (iMilliSec - iMilliSec_prev) ) 00055 { 00056 sendSignal(); 00057 } 00058 00059 iMilliSec_prev = iMilliSec; 00060 } 00061 00062 iButtonState_prev = iButtonState; 00063 } 00064 }
Generated on Sat Jul 23 2022 06:34:34 by 1.7.2