final

Committer:
akudohune
Date:
Wed May 01 08:47:59 2013 +0000
Revision:
0:fb6510639aa4
aa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akudohune 0:fb6510639aa4 1
akudohune 0:fb6510639aa4 2 #include "mbed.h"
akudohune 0:fb6510639aa4 3 #include "uart1.h"
akudohune 0:fb6510639aa4 4 #include "HMC6352.h"
akudohune 0:fb6510639aa4 5
akudohune 0:fb6510639aa4 6 //extern Serial pc;
akudohune 0:fb6510639aa4 7 extern Serial device2;
akudohune 0:fb6510639aa4 8 extern HMC6352 compass;
akudohune 0:fb6510639aa4 9 extern BusOut mbedleds;
akudohune 0:fb6510639aa4 10 extern DigitalOut led1;
akudohune 0:fb6510639aa4 11 extern DigitalOut led2;
akudohune 0:fb6510639aa4 12 extern DigitalOut led3;
akudohune 0:fb6510639aa4 13 extern DigitalOut led4;
akudohune 0:fb6510639aa4 14
akudohune 0:fb6510639aa4 15 extern uint8_t state;
akudohune 0:fb6510639aa4 16 extern uint8_t hold_flag;
akudohune 0:fb6510639aa4 17
akudohune 0:fb6510639aa4 18 int diff;
akudohune 0:fb6510639aa4 19 uint16_t ultrasonicVal[4];
akudohune 0:fb6510639aa4 20 uint8_t direction;
akudohune 0:fb6510639aa4 21 uint8_t Distance;
akudohune 0:fb6510639aa4 22 uint8_t IR_found;
akudohune 0:fb6510639aa4 23 uint8_t xbee;
akudohune 0:fb6510639aa4 24
akudohune 0:fb6510639aa4 25 void dev_rx()
akudohune 0:fb6510639aa4 26 {
akudohune 0:fb6510639aa4 27 static uint8_t count = 0;
akudohune 0:fb6510639aa4 28 static uint8_t RecData[RECEIVE_DATA_NUM];
akudohune 0:fb6510639aa4 29 static uint8_t last_data;
akudohune 0:fb6510639aa4 30
akudohune 0:fb6510639aa4 31 RecData[count] = device2.getc();
akudohune 0:fb6510639aa4 32
akudohune 0:fb6510639aa4 33 if(RecData[KEY] == KEYCODE){
akudohune 0:fb6510639aa4 34 count++;
akudohune 0:fb6510639aa4 35 }else{
akudohune 0:fb6510639aa4 36 count = 0;
akudohune 0:fb6510639aa4 37 }
akudohune 0:fb6510639aa4 38 if(count >= RECEIVE_DATA_NUM){
akudohune 0:fb6510639aa4 39 if(RecData[CHECK] == CHECKCODE){
akudohune 0:fb6510639aa4 40 //mbedleds = 15;
akudohune 0:fb6510639aa4 41
akudohune 0:fb6510639aa4 42 if((RecData[DIRECTION] <= 15) || (RecData[DIRECTION] == 200)){
akudohune 0:fb6510639aa4 43 direction = RecData[DIRECTION];
akudohune 0:fb6510639aa4 44 }
akudohune 0:fb6510639aa4 45 if(RecData[DISTANCE] <= 180){
akudohune 0:fb6510639aa4 46 Distance = RecData[DISTANCE];
akudohune 0:fb6510639aa4 47 }
akudohune 0:fb6510639aa4 48
akudohune 0:fb6510639aa4 49 ultrasonicVal[0] = (int)((RecData[SONIC1_1] + (RecData[SONIC1_2] << 8)) / 10.0);
akudohune 0:fb6510639aa4 50 if(ultrasonicVal[0] == 6553)ultrasonicVal[0] = 0xFFFF;
akudohune 0:fb6510639aa4 51 ultrasonicVal[1] = (int)((RecData[SONIC2_1] + (RecData[SONIC2_2] << 8)) / 10.0);
akudohune 0:fb6510639aa4 52 if(ultrasonicVal[1] == 6553)ultrasonicVal[1] = 0xFFFF;
akudohune 0:fb6510639aa4 53 ultrasonicVal[2] = (int)((RecData[SONIC3_1] + (RecData[SONIC3_2] << 8)) / 10.0);
akudohune 0:fb6510639aa4 54 if(ultrasonicVal[2] == 6553)ultrasonicVal[2] = 0xFFFF;
akudohune 0:fb6510639aa4 55 ultrasonicVal[3] = (int)((RecData[SONIC4_1] + (RecData[SONIC4_2] << 8)) / 10.0);
akudohune 0:fb6510639aa4 56 if(ultrasonicVal[3] == 6553)ultrasonicVal[3] = 0xFFFF;
akudohune 0:fb6510639aa4 57
akudohune 0:fb6510639aa4 58 if((RecData[IR_FOUND] == 0) || (RecData[IR_FOUND] == 1)){
akudohune 0:fb6510639aa4 59 IR_found = RecData[IR_FOUND];
akudohune 0:fb6510639aa4 60 }
akudohune 0:fb6510639aa4 61 xbee = RecData[XBEE];
akudohune 0:fb6510639aa4 62
akudohune 0:fb6510639aa4 63
akudohune 0:fb6510639aa4 64 //pc.printf("%f\t%f\t%f\t%f\n",ultrasonicVal[0],ultrasonicVal[1],ultrasonicVal[2],ultrasonicVal[3]);
akudohune 0:fb6510639aa4 65 //pc.printf("%d\n",xbee);
akudohune 0:fb6510639aa4 66 //pc.printf("%d\n",IR_found);
akudohune 0:fb6510639aa4 67
akudohune 0:fb6510639aa4 68 diff = last_data - Distance;
akudohune 0:fb6510639aa4 69 last_data = Distance;
akudohune 0:fb6510639aa4 70 }
akudohune 0:fb6510639aa4 71 count = 0;
akudohune 0:fb6510639aa4 72 }
akudohune 0:fb6510639aa4 73 }
akudohune 0:fb6510639aa4 74
akudohune 0:fb6510639aa4 75 void dev_tx()
akudohune 0:fb6510639aa4 76 {
akudohune 0:fb6510639aa4 77 static uint8_t count2 = 0;
akudohune 0:fb6510639aa4 78 static uint8_t SendData[SEND_DATA_NUM];
akudohune 0:fb6510639aa4 79
akudohune 0:fb6510639aa4 80 if(count2 >= SEND_DATA_NUM){
akudohune 0:fb6510639aa4 81 SendData[KEY2] = KEYCODE2;
akudohune 0:fb6510639aa4 82 SendData[DATA1] = ((int)(compass.sample())) >> 8 ;
akudohune 0:fb6510639aa4 83 SendData[DATA2] = (int)(compass.sample());
akudohune 0:fb6510639aa4 84 SendData[DATA3] = state;
akudohune 0:fb6510639aa4 85 SendData[DATA4] = 1;
akudohune 0:fb6510639aa4 86 SendData[CHECK2] = CHECKCODE2;
akudohune 0:fb6510639aa4 87
akudohune 0:fb6510639aa4 88 count2 = 0;
akudohune 0:fb6510639aa4 89
akudohune 0:fb6510639aa4 90 }
akudohune 0:fb6510639aa4 91 device2.putc(SendData[count2]);
akudohune 0:fb6510639aa4 92
akudohune 0:fb6510639aa4 93 count2++;
akudohune 0:fb6510639aa4 94 }