Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main.cpp
- Revision:
- 3:31c005437fa5
- Parent:
- 2:eca0702650ca
- Child:
- 4:ab83633679f4
diff -r eca0702650ca -r 31c005437fa5 main.cpp
--- 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);
}
}
}