aa

Dependencies:   HMC6352 PID mbed

Committer:
akudohune
Date:
Wed Jun 19 08:42:55 2013 +0000
Revision:
0:bde8ed56b164
final_master

Who changed what in which revision?

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