final_slave

Dependencies:   TextLCD mbed

Committer:
akudohune
Date:
Wed Jun 19 08:42:10 2013 +0000
Revision:
0:7d0227dcc289
slave

Who changed what in which revision?

UserRevisionLine numberNew contents of line
akudohune 0:7d0227dcc289 1 #include "mbed.h"
akudohune 0:7d0227dcc289 2 #include "TextLCD.h"
akudohune 0:7d0227dcc289 3 #include "main.h"
akudohune 0:7d0227dcc289 4
akudohune 0:7d0227dcc289 5 int ave5point(int source)
akudohune 0:7d0227dcc289 6 {
akudohune 0:7d0227dcc289 7 static int tmp[5] = {0};
akudohune 0:7d0227dcc289 8 static int sum = 0;
akudohune 0:7d0227dcc289 9
akudohune 0:7d0227dcc289 10 sum -= tmp[4];
akudohune 0:7d0227dcc289 11 sum += source;
akudohune 0:7d0227dcc289 12 tmp[4] = tmp[3];
akudohune 0:7d0227dcc289 13 tmp[3] = tmp[2];
akudohune 0:7d0227dcc289 14 tmp[2] = tmp[1];
akudohune 0:7d0227dcc289 15 tmp[1] = tmp[0];
akudohune 0:7d0227dcc289 16 tmp[0] = source;
akudohune 0:7d0227dcc289 17
akudohune 0:7d0227dcc289 18 for(uint8_t i = 0; i < 5; i++){
akudohune 0:7d0227dcc289 19 if((tmp[i] > 180) || (tmp[i] < 10)){
akudohune 0:7d0227dcc289 20 return 0xFF;
akudohune 0:7d0227dcc289 21 }
akudohune 0:7d0227dcc289 22 }
akudohune 0:7d0227dcc289 23
akudohune 0:7d0227dcc289 24 return (int)(sum / 5.0);
akudohune 0:7d0227dcc289 25
akudohune 0:7d0227dcc289 26 }
akudohune 0:7d0227dcc289 27
akudohune 0:7d0227dcc289 28 void init()
akudohune 0:7d0227dcc289 29 {
akudohune 0:7d0227dcc289 30 device.baud(BAUD_RATE);
akudohune 0:7d0227dcc289 31 device.printf("START");
akudohune 0:7d0227dcc289 32 device2.printf("START");
akudohune 0:7d0227dcc289 33 device.attach(&dev_tx,Serial::TxIrq);
akudohune 0:7d0227dcc289 34 device.attach(&dev_rx,Serial::RxIrq);
akudohune 0:7d0227dcc289 35 device2.attach(&dev2_tx,Serial::TxIrq);
akudohune 0:7d0227dcc289 36 device2.attach(&dev2_rx,Serial::RxIrq);
akudohune 0:7d0227dcc289 37 Button.mode(PullUp);
akudohune 0:7d0227dcc289 38
akudohune 0:7d0227dcc289 39 timer2.start();
akudohune 0:7d0227dcc289 40
akudohune 0:7d0227dcc289 41 lcd.cls();
akudohune 0:7d0227dcc289 42 }
akudohune 0:7d0227dcc289 43
akudohune 0:7d0227dcc289 44 int main()
akudohune 0:7d0227dcc289 45 {
akudohune 0:7d0227dcc289 46 uint8_t state = 0;
akudohune 0:7d0227dcc289 47
akudohune 0:7d0227dcc289 48 init();
akudohune 0:7d0227dcc289 49
akudohune 0:7d0227dcc289 50 for(;;){
akudohune 0:7d0227dcc289 51 if((!Button) && (state == 0)){
akudohune 0:7d0227dcc289 52 wait(0.3);
akudohune 0:7d0227dcc289 53 state = 1;
akudohune 0:7d0227dcc289 54 }else if((!Button) && (state == 1)){
akudohune 0:7d0227dcc289 55 wait(0.3);
akudohune 0:7d0227dcc289 56 state = 2;
akudohune 0:7d0227dcc289 57 }else if((!Button) &&(state == 2)){
akudohune 0:7d0227dcc289 58 wait(0.3);
akudohune 0:7d0227dcc289 59 state = 0;
akudohune 0:7d0227dcc289 60 }
akudohune 0:7d0227dcc289 61
akudohune 0:7d0227dcc289 62 mbedleds = 0;
akudohune 0:7d0227dcc289 63
akudohune 0:7d0227dcc289 64 Ultrasonic();
akudohune 0:7d0227dcc289 65 IR_Position();
akudohune 0:7d0227dcc289 66 AveDistance = ave5point(Distance);
akudohune 0:7d0227dcc289 67
akudohune 0:7d0227dcc289 68 lcd.cls();
akudohune 0:7d0227dcc289 69
akudohune 0:7d0227dcc289 70 if(state == 0){
akudohune 0:7d0227dcc289 71 lcd.locate(0,0);
akudohune 0:7d0227dcc289 72 lcd.printf("R:%d,F:%d",(int)ultrasonicValue[1],(int)ultrasonicValue[0]);
akudohune 0:7d0227dcc289 73 lcd.locate(0,1);
akudohune 0:7d0227dcc289 74 lcd.printf("L:%d,B:%d",(int)ultrasonicValue[3],(int)ultrasonicValue[2]);
akudohune 0:7d0227dcc289 75 }else if(state == 1){
akudohune 0:7d0227dcc289 76 lcd.locate(0,0);
akudohune 0:7d0227dcc289 77 lcd.printf("%d,%d,%d",direction,data[2],(data[0] << 8) + data[1]);//data[2]
akudohune 0:7d0227dcc289 78 lcd.locate(0,1);
akudohune 0:7d0227dcc289 79 lcd.printf("%d,%d",AveDistance,data2[0]);
akudohune 0:7d0227dcc289 80 }else if(state == 2){
akudohune 0:7d0227dcc289 81 lcd.locate(0,0);
akudohune 0:7d0227dcc289 82 lcd.printf("%d,%d,%d",irDistance[0],irDistance[1],irDistance[2]);//data[2]
akudohune 0:7d0227dcc289 83 lcd.locate(0,1);
akudohune 0:7d0227dcc289 84 lcd.printf("%d,%d,%d",irDistance[3],irDistance[4],irDistance[5]);
akudohune 0:7d0227dcc289 85 }
akudohune 0:7d0227dcc289 86
akudohune 0:7d0227dcc289 87 //pc.printf("%d\n",direction);
akudohune 0:7d0227dcc289 88 /*
akudohune 0:7d0227dcc289 89 pc.printf("R:%d,\tF:%d\t",(int)ultrasonicValue[1],(int)ultrasonicValue[0]);
akudohune 0:7d0227dcc289 90 pc.printf("L:%d,\tB:%d\n",(int)ultrasonicValue[3],(int)ultrasonicValue[2]);
akudohune 0:7d0227dcc289 91 */
akudohune 0:7d0227dcc289 92 /*
akudohune 0:7d0227dcc289 93 lcd.locate(0,0);
akudohune 0:7d0227dcc289 94 lcd.printf("%d",(data[0] << 8) + data[1]);
akudohune 0:7d0227dcc289 95 lcd.locate(0,1);
akudohune 0:7d0227dcc289 96 lcd.printf("%d",data[2]);
akudohune 0:7d0227dcc289 97 */
akudohune 0:7d0227dcc289 98 /*
akudohune 0:7d0227dcc289 99 lcd.locate(0,0);
akudohune 0:7d0227dcc289 100 lcd.printf("%d,%d",direction,data[3]);//data[2]
akudohune 0:7d0227dcc289 101 lcd.locate(0,1);
akudohune 0:7d0227dcc289 102 lcd.printf("%d",AveDistance);
akudohune 0:7d0227dcc289 103 */
akudohune 0:7d0227dcc289 104 /*
akudohune 0:7d0227dcc289 105 lcd.locate(0,0);
akudohune 0:7d0227dcc289 106 lcd.printf("%d",data[0]);
akudohune 0:7d0227dcc289 107 lcd.locate(0,1);
akudohune 0:7d0227dcc289 108 lcd.printf("%d",data[1]);*/
akudohune 0:7d0227dcc289 109 }
akudohune 0:7d0227dcc289 110 }