Tadao Iida / Mbed 2 deprecated choroq_signal

Dependencies:   TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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 }