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
00001 #include "mbed.h" 00002 #include "TextLCD.h" 00003 00004 #define THR 200 00005 00006 enum SignalMode{NOT_USED,FORWARD,BACK,LEFT,RIGHT,DASH_FORWARD,FORWARD_LEFT,FORWARD_RIGHT,DASH_FORWARD_LEFT, 00007 DASH_FORWARD_RIGHT,BACK_LEFT,BACK_RIGHT,DASH_BACK,DASH_BACK_LEFT,DASH_BACK_RIGHT, STOP}; 00008 SignalMode STAT; 00009 00010 int steering; 00011 int signal; 00012 00013 InterruptIn event(p21) ; 00014 00015 TextLCD lcd(p24, p26, p27, p28, p29, p30); 00016 BusOut myleds(LED1,LED2,LED3,LED4); 00017 00018 int bitCnt = 0; 00019 Timer timer; 00020 int begin,end,interval; 00021 00022 void tStart() 00023 { 00024 interval = 0; 00025 begin = timer.read_us(); 00026 } 00027 00028 void tEnd() 00029 { 00030 end = timer.read_us(); 00031 interval = end - begin ; 00032 timer.reset(); 00033 00034 if( 2000 - THR < interval && interval < 2000 + THR ){ 00035 bitCnt = 0 ; 00036 signal = 0; 00037 }else if ( 500 -THR < interval && interval < 500 + THR ){ 00038 signal <<= 1; 00039 bitCnt++; 00040 }else if ( 1000 -THR < interval && interval < 1000 + THR ){ 00041 signal <<= 1; 00042 signal++; 00043 bitCnt++; 00044 } 00045 } 00046 00047 int main() { 00048 int data = 0; 00049 timer.start() ; 00050 event.fall(&tStart) ; 00051 event.rise(&tEnd) ; 00052 00053 while(1) { 00054 if ( bitCnt == 6){ 00055 data = signal; 00056 lcd.locate(0,0); 00057 lcd.printf("%3d",data); 00058 lcd.locate(4,0); 00059 lcd.printf("%d%d",(data&0x20)?1:0,(data&0x10)?1:0); 00060 lcd.printf("%d%d%d%d",(data&0x08)?1:0,(data&0x04)?1:0,(data&0x02)?1:0,(data&0x01)?1:0); 00061 lcd.locate(0,1); 00062 00063 if ( data < 16 ) 00064 lcd.printf("CH A"); 00065 else if ( data < 32 ) 00066 lcd.printf("CH B"); 00067 else if ( data < 48) 00068 lcd.printf("CH C"); 00069 else if ( data < 64) 00070 lcd.printf("CH D"); 00071 00072 steering = (int)(data&0x0F) ; 00073 lcd.locate(5,1); 00074 switch(steering){ 00075 case LEFT: 00076 lcd.printf("LEFT "); 00077 myleds = 0x01; 00078 break; 00079 case RIGHT: 00080 lcd.printf("RIGHT "); 00081 myleds = 0x08; 00082 break; 00083 case FORWARD: 00084 lcd.printf("FORWARD"); 00085 break; 00086 case BACK: 00087 lcd.printf("BACK "); 00088 break; 00089 case DASH_FORWARD: 00090 lcd.printf("DASH_FOR "); 00091 break; 00092 case DASH_BACK: 00093 lcd.printf("DASH_BACK"); 00094 break; 00095 case STOP: 00096 lcd.printf("STOP "); 00097 wait_ms(50); 00098 lcd.cls(); 00099 myleds =0x00; 00100 } 00101 } 00102 } 00103 }
Generated on Sat Jul 30 2022 20:45:55 by
1.7.2