final cup

Dependencies:   HMC6352 PID mbed

Committer:
akudohune
Date:
Mon Apr 29 06:39:53 2013 +0000
Revision:
0:2eebd0301c66
final

Who changed what in which revision?

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