Gitakichi Tokyo / Mbed 2 deprecated IR-remote

Dependencies:   mbed

Revision:
3:31c005437fa5
Parent:
2:eca0702650ca
Child:
4:ab83633679f4
--- a/main.cpp	Tue Feb 11 06:28:36 2020 +0000
+++ b/main.cpp	Tue Feb 11 08:26:57 2020 +0000
@@ -3,8 +3,19 @@
 
 #include "mbed.h"
 
+
+#define OPT_PWR     "000010001111011100011011111001001"
+#define OPT_A       "000010001111011100011111111000001"
+#define OPT_B       "000010001111011100011110111000011"
+#define OPT_C       "000010001111011100011010111001011"
+#define OPT_CENTRE  "000010001111011100000100111110111"
+#define OPT_TOP     "000010001111011100000101111110101"
+#define OPT_UNDER   "000010001111011100000000111111111"
+#define OPT_LEFT    "000010001111011100001000111101111"
+#define OPT_RIGHT   "000010001111011100000001111111101"
+
+
 DigitalIn g_dpinIrReceiver(D2);
-
 Serial g_serial(USBTX, USBRX);
 
 int main()
@@ -13,10 +24,11 @@
 
     Timer timer;
     timer.start();
-    //int iMicroSec_prev = timer.read_us();
+
     int iState_prev = 1;
-    int time_start,time_end,time_data,delta_t;
+    int t_negedge,t_posedge,t_delta;
     int data_en = 0;
+    char rx_data[64] = "";
 
     while(1) {
         int iState = g_dpinIrReceiver;
@@ -25,28 +37,35 @@
         if( iState != iState_prev ) {
             if(iState == 0) {
                 //timer.start();//reset
-                time_start = timer.read_us();//start(detect negedge
+                t_negedge = timer.read_us();//start(detect negedge
 
                 if(data_en == 1) {
-                    //time_data = timer.read_us();
-                    //delta_t = time_data - time_end;
-                    delta_t = time_start - time_end;
+                    t_delta = t_negedge - t_posedge;
                     data_en = 0;
-                    if(delta_t > 1523)    g_serial.printf("H");//625*2.5
-                    else                  g_serial.printf("L");
+                    if(t_delta > 1523)    strcat(rx_data, "1");//g_serial.printf("1");//625*2.5
+                    else                  strcat(rx_data, "0");//g_serial.printf("0");
+
+                    if(strlen(rx_data) == 33){
+                        //g_serial.printf("data=%s\r\n",rx_data);
+                        if      (strcmp(rx_data,OPT_PWR) == 0)      g_serial.printf("received=PWR\r\n",rx_data);
+                        else if (strcmp(rx_data,OPT_CENTRE) == 0)   g_serial.printf("received=CENTRE\r\n",rx_data);
+                    }
+
                 }
             } else if(iState == 1) { //end (detect posedge
 
 
-                time_end = timer.read_us();//over flow?
+                t_posedge = timer.read_us();//over flow?
                 //compare and output
-                delta_t = time_end - time_start;
+                t_delta = t_posedge - t_negedge;
 
-                if(delta_t > 8430)    g_serial.printf("flame,");//625*15
-                else {
+                if(t_delta > 8430) {
+                    //g_serial.printf("flame,");//625*15
+                    rx_data[0] = '\0';
+                } else {
                     data_en = 1;
                     //g_serial.printf("data,");
-                    //g_serial.printf( "%d, ", time_start - time_end);
+                    //g_serial.printf( "%d, ", t_negedge - t_posedge);
                 }
             }
         }