ryo seki
/
serialSend5_5
final_slave
main.cpp@0:7d0227dcc289, 2013-06-19 (annotated)
- Committer:
- akudohune
- Date:
- Wed Jun 19 08:42:10 2013 +0000
- Revision:
- 0:7d0227dcc289
slave
Who changed what in which revision?
User | Revision | Line number | New 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 | } |