aa

Dependencies:   HMC6352 PID mbed

Committer:
akudohune
Date:
Mon Jun 17 00:12:40 2013 +0000
Revision:
0:e9b97faa3e37
zaaa

Who changed what in which revision?

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