aa
Dependencies: HMC6352 PID mbed
uart1.cpp@0:bde8ed56b164, 2013-06-19 (annotated)
- Committer:
- akudohune
- Date:
- Wed Jun 19 08:42:55 2013 +0000
- Revision:
- 0:bde8ed56b164
final_master
Who changed what in which revision?
User | Revision | Line number | New 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 | } |