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.
main.cpp
- Committer:
- gitakichi
- Date:
- 2020-02-11
- Revision:
- 3:31c005437fa5
- Parent:
- 2:eca0702650ca
- Child:
- 4:ab83633679f4
File content as of revision 3:31c005437fa5:
//reference from //https://www.hiramine.com/physicalcomputing/mbed/irreceiver.html #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() { g_serial.baud(115200); Timer timer; timer.start(); int iState_prev = 1; int t_negedge,t_posedge,t_delta; int data_en = 0; char rx_data[64] = ""; while(1) { int iState = g_dpinIrReceiver; //detect H signal if( iState != iState_prev ) { if(iState == 0) { //timer.start();//reset t_negedge = timer.read_us();//start(detect negedge if(data_en == 1) { t_delta = t_negedge - t_posedge; data_en = 0; 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 t_posedge = timer.read_us();//over flow? //compare and output t_delta = t_posedge - t_negedge; 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, ", t_negedge - t_posedge); } } } iState_prev = iState; //iState_prev = iState; //int iMicroSec = timer.read_us(); //g_serial.printf( "%d, ", iMicroSec - iMicroSec_prev ); //iMicroSec_prev = iMicroSec; } }