final

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers uart1.cpp Source File

uart1.cpp

00001 
00002 #include "mbed.h"
00003 #include "uart1.h"
00004 #include "HMC6352.h"
00005 
00006 //extern Serial pc;
00007 extern Serial device2;
00008 extern HMC6352 compass;
00009 extern BusOut mbedleds;
00010 extern DigitalOut led1; 
00011 extern DigitalOut led2;
00012 extern DigitalOut led3;
00013 extern DigitalOut led4;
00014 
00015 extern uint8_t state;
00016 extern uint8_t hold_flag;
00017 
00018 int diff;
00019 uint16_t ultrasonicVal[4];
00020 uint8_t direction;
00021 uint8_t Distance;
00022 uint8_t IR_found;
00023 uint8_t xbee;
00024 
00025 void dev_rx()
00026 {
00027     static uint8_t count = 0;
00028     static uint8_t RecData[RECEIVE_DATA_NUM];
00029     static uint8_t last_data;
00030     
00031     RecData[count] = device2.getc();
00032     
00033     if(RecData[KEY] == KEYCODE){
00034         count++;
00035     }else{
00036         count = 0;
00037     }
00038     if(count >= RECEIVE_DATA_NUM){
00039         if(RecData[CHECK] == CHECKCODE){
00040             //mbedleds = 15;
00041             
00042             if((RecData[DIRECTION] <= 15) || (RecData[DIRECTION] == 200)){
00043                 direction = RecData[DIRECTION];
00044             }
00045             if(RecData[DISTANCE] <= 180){
00046                 Distance = RecData[DISTANCE];
00047             }
00048             
00049             ultrasonicVal[0] = (int)((RecData[SONIC1_1] + (RecData[SONIC1_2] << 8)) / 10.0);
00050             if(ultrasonicVal[0] == 6553)ultrasonicVal[0] = 0xFFFF;
00051             ultrasonicVal[1] = (int)((RecData[SONIC2_1] + (RecData[SONIC2_2] << 8)) / 10.0);
00052             if(ultrasonicVal[1] == 6553)ultrasonicVal[1] = 0xFFFF;
00053             ultrasonicVal[2] = (int)((RecData[SONIC3_1] + (RecData[SONIC3_2] << 8)) / 10.0);
00054             if(ultrasonicVal[2] == 6553)ultrasonicVal[2] = 0xFFFF;
00055             ultrasonicVal[3] = (int)((RecData[SONIC4_1] + (RecData[SONIC4_2] << 8)) / 10.0);
00056             if(ultrasonicVal[3] == 6553)ultrasonicVal[3] = 0xFFFF;
00057             
00058             if((RecData[IR_FOUND] == 0) || (RecData[IR_FOUND] == 1)){
00059                 IR_found = RecData[IR_FOUND];
00060             }
00061             xbee = RecData[XBEE];
00062             
00063             
00064             //pc.printf("%f\t%f\t%f\t%f\n",ultrasonicVal[0],ultrasonicVal[1],ultrasonicVal[2],ultrasonicVal[3]);
00065             //pc.printf("%d\n",xbee);
00066             //pc.printf("%d\n",IR_found);
00067             
00068             diff = last_data - Distance;
00069             last_data = Distance;
00070         }
00071         count = 0;
00072     }  
00073 }
00074 
00075 void dev_tx()
00076 {
00077     static uint8_t count2 = 0;
00078     static uint8_t SendData[SEND_DATA_NUM];
00079     
00080     if(count2 >= SEND_DATA_NUM){
00081         SendData[KEY2]     = KEYCODE2;
00082         SendData[DATA1]    = ((int)(compass.sample())) >> 8 ;
00083         SendData[DATA2]    = (int)(compass.sample());
00084         SendData[DATA3]    = state;
00085         SendData[DATA4]    = 1;
00086         SendData[CHECK2]   = CHECKCODE2;
00087         
00088         count2 = 0;
00089         
00090     }
00091     device2.putc(SendData[count2]);
00092     
00093     count2++;
00094 }