Gitakichi Tokyo / Mbed 2 deprecated IR-remote

Dependencies:   mbed

Committer:
gitakichi
Date:
Tue Feb 11 08:26:57 2020 +0000
Revision:
3:31c005437fa5
Parent:
2:eca0702650ca
Child:
4:ab83633679f4
compared,

Who changed what in which revision?

UserRevisionLine numberNew contents of line
gitakichi 0:a3131d121a8f 1 //reference from
gitakichi 0:a3131d121a8f 2 //https://www.hiramine.com/physicalcomputing/mbed/irreceiver.html
gitakichi 0:a3131d121a8f 3
gitakichi 0:a3131d121a8f 4 #include "mbed.h"
gitakichi 0:a3131d121a8f 5
gitakichi 3:31c005437fa5 6
gitakichi 3:31c005437fa5 7 #define OPT_PWR "000010001111011100011011111001001"
gitakichi 3:31c005437fa5 8 #define OPT_A "000010001111011100011111111000001"
gitakichi 3:31c005437fa5 9 #define OPT_B "000010001111011100011110111000011"
gitakichi 3:31c005437fa5 10 #define OPT_C "000010001111011100011010111001011"
gitakichi 3:31c005437fa5 11 #define OPT_CENTRE "000010001111011100000100111110111"
gitakichi 3:31c005437fa5 12 #define OPT_TOP "000010001111011100000101111110101"
gitakichi 3:31c005437fa5 13 #define OPT_UNDER "000010001111011100000000111111111"
gitakichi 3:31c005437fa5 14 #define OPT_LEFT "000010001111011100001000111101111"
gitakichi 3:31c005437fa5 15 #define OPT_RIGHT "000010001111011100000001111111101"
gitakichi 3:31c005437fa5 16
gitakichi 3:31c005437fa5 17
gitakichi 0:a3131d121a8f 18 DigitalIn g_dpinIrReceiver(D2);
gitakichi 0:a3131d121a8f 19 Serial g_serial(USBTX, USBRX);
gitakichi 0:a3131d121a8f 20
gitakichi 0:a3131d121a8f 21 int main()
gitakichi 0:a3131d121a8f 22 {
gitakichi 0:a3131d121a8f 23 g_serial.baud(115200);
gitakichi 0:a3131d121a8f 24
gitakichi 0:a3131d121a8f 25 Timer timer;
gitakichi 0:a3131d121a8f 26 timer.start();
gitakichi 3:31c005437fa5 27
gitakichi 0:a3131d121a8f 28 int iState_prev = 1;
gitakichi 3:31c005437fa5 29 int t_negedge,t_posedge,t_delta;
gitakichi 2:eca0702650ca 30 int data_en = 0;
gitakichi 3:31c005437fa5 31 char rx_data[64] = "";
gitakichi 2:eca0702650ca 32
gitakichi 1:4847c54eed20 33 while(1) {
gitakichi 0:a3131d121a8f 34 int iState = g_dpinIrReceiver;
gitakichi 2:eca0702650ca 35
gitakichi 1:4847c54eed20 36 //detect H signal
gitakichi 1:4847c54eed20 37 if( iState != iState_prev ) {
gitakichi 1:4847c54eed20 38 if(iState == 0) {
gitakichi 1:4847c54eed20 39 //timer.start();//reset
gitakichi 3:31c005437fa5 40 t_negedge = timer.read_us();//start(detect negedge
gitakichi 2:eca0702650ca 41
gitakichi 2:eca0702650ca 42 if(data_en == 1) {
gitakichi 3:31c005437fa5 43 t_delta = t_negedge - t_posedge;
gitakichi 2:eca0702650ca 44 data_en = 0;
gitakichi 3:31c005437fa5 45 if(t_delta > 1523) strcat(rx_data, "1");//g_serial.printf("1");//625*2.5
gitakichi 3:31c005437fa5 46 else strcat(rx_data, "0");//g_serial.printf("0");
gitakichi 3:31c005437fa5 47
gitakichi 3:31c005437fa5 48 if(strlen(rx_data) == 33){
gitakichi 3:31c005437fa5 49 //g_serial.printf("data=%s\r\n",rx_data);
gitakichi 3:31c005437fa5 50 if (strcmp(rx_data,OPT_PWR) == 0) g_serial.printf("received=PWR\r\n",rx_data);
gitakichi 3:31c005437fa5 51 else if (strcmp(rx_data,OPT_CENTRE) == 0) g_serial.printf("received=CENTRE\r\n",rx_data);
gitakichi 3:31c005437fa5 52 }
gitakichi 3:31c005437fa5 53
gitakichi 2:eca0702650ca 54 }
gitakichi 2:eca0702650ca 55 } else if(iState == 1) { //end (detect posedge
gitakichi 2:eca0702650ca 56
gitakichi 2:eca0702650ca 57
gitakichi 3:31c005437fa5 58 t_posedge = timer.read_us();//over flow?
gitakichi 1:4847c54eed20 59 //compare and output
gitakichi 3:31c005437fa5 60 t_delta = t_posedge - t_negedge;
gitakichi 2:eca0702650ca 61
gitakichi 3:31c005437fa5 62 if(t_delta > 8430) {
gitakichi 3:31c005437fa5 63 //g_serial.printf("flame,");//625*15
gitakichi 3:31c005437fa5 64 rx_data[0] = '\0';
gitakichi 3:31c005437fa5 65 } else {
gitakichi 2:eca0702650ca 66 data_en = 1;
gitakichi 2:eca0702650ca 67 //g_serial.printf("data,");
gitakichi 3:31c005437fa5 68 //g_serial.printf( "%d, ", t_negedge - t_posedge);
gitakichi 2:eca0702650ca 69 }
gitakichi 1:4847c54eed20 70 }
gitakichi 2:eca0702650ca 71 }
gitakichi 1:4847c54eed20 72 iState_prev = iState;
gitakichi 2:eca0702650ca 73
gitakichi 1:4847c54eed20 74 //iState_prev = iState;
gitakichi 1:4847c54eed20 75 //int iMicroSec = timer.read_us();
gitakichi 1:4847c54eed20 76 //g_serial.printf( "%d, ", iMicroSec - iMicroSec_prev );
gitakichi 1:4847c54eed20 77 //iMicroSec_prev = iMicroSec;
gitakichi 0:a3131d121a8f 78 }
gitakichi 0:a3131d121a8f 79 }