This code will be implemented on the receiving end of the device, which contains a speaker, an Emic2 text-to-speech converter, as well as a vehicle module that can move or rotate upon request
Dependencies: mbed 4DGL-uLCD-SE emic2 PinDetect
main.cpp@0:28bd5ee534a3, 2018-12-04 (annotated)
- Committer:
- CharlesXu
- Date:
- Tue Dec 04 15:19:56 2018 +0000
- Revision:
- 0:28bd5ee534a3
- Child:
- 1:8771f19aeeab
transmitter code for Air Rendezvous
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
CharlesXu | 0:28bd5ee534a3 | 1 | #include "mbed.h" |
CharlesXu | 0:28bd5ee534a3 | 2 | #include "emic2.h" |
CharlesXu | 0:28bd5ee534a3 | 3 | //serial RX,TX pins to emic |
CharlesXu | 0:28bd5ee534a3 | 4 | Serial xbee1(p9,p10); |
CharlesXu | 0:28bd5ee534a3 | 5 | DigitalOut rst1(p11); |
CharlesXu | 0:28bd5ee534a3 | 6 | //emic2 myTTS(p13, p14); |
CharlesXu | 0:28bd5ee534a3 | 7 | AnalogIn a1(p15); |
CharlesXu | 0:28bd5ee534a3 | 8 | AnalogIn a2(p16); |
CharlesXu | 0:28bd5ee534a3 | 9 | AnalogIn a3(p17); |
CharlesXu | 0:28bd5ee534a3 | 10 | AnalogIn a4(p18); |
CharlesXu | 0:28bd5ee534a3 | 11 | AnalogIn a5(p19); |
CharlesXu | 0:28bd5ee534a3 | 12 | Serial pc(USBTX, USBRX); |
CharlesXu | 0:28bd5ee534a3 | 13 | float i1; |
CharlesXu | 0:28bd5ee534a3 | 14 | float i2; |
CharlesXu | 0:28bd5ee534a3 | 15 | float i3; |
CharlesXu | 0:28bd5ee534a3 | 16 | float i4; |
CharlesXu | 0:28bd5ee534a3 | 17 | float i5; |
CharlesXu | 0:28bd5ee534a3 | 18 | float ref1; |
CharlesXu | 0:28bd5ee534a3 | 19 | float ref2; |
CharlesXu | 0:28bd5ee534a3 | 20 | float ref3; |
CharlesXu | 0:28bd5ee534a3 | 21 | float ref4; |
CharlesXu | 0:28bd5ee534a3 | 22 | float ref5; |
CharlesXu | 0:28bd5ee534a3 | 23 | |
CharlesXu | 0:28bd5ee534a3 | 24 | |
CharlesXu | 0:28bd5ee534a3 | 25 | |
CharlesXu | 0:28bd5ee534a3 | 26 | int counter; |
CharlesXu | 0:28bd5ee534a3 | 27 | |
CharlesXu | 0:28bd5ee534a3 | 28 | int main() { |
CharlesXu | 0:28bd5ee534a3 | 29 | counter = 0; |
CharlesXu | 0:28bd5ee534a3 | 30 | rst1 = 0; |
CharlesXu | 0:28bd5ee534a3 | 31 | wait_ms(1); |
CharlesXu | 0:28bd5ee534a3 | 32 | rst1 = 1; |
CharlesXu | 0:28bd5ee534a3 | 33 | wait_ms(1); |
CharlesXu | 0:28bd5ee534a3 | 34 | float avg = 0; |
CharlesXu | 0:28bd5ee534a3 | 35 | float max = 0; |
CharlesXu | 0:28bd5ee534a3 | 36 | float diff = 0; |
CharlesXu | 0:28bd5ee534a3 | 37 | char c; |
CharlesXu | 0:28bd5ee534a3 | 38 | while(1) { |
CharlesXu | 0:28bd5ee534a3 | 39 | if (counter % 100) //update reference data every 100 inputs |
CharlesXu | 0:28bd5ee534a3 | 40 | { |
CharlesXu | 0:28bd5ee534a3 | 41 | ref1 = a1; |
CharlesXu | 0:28bd5ee534a3 | 42 | ref2 = a2; |
CharlesXu | 0:28bd5ee534a3 | 43 | ref3 = a3; |
CharlesXu | 0:28bd5ee534a3 | 44 | ref4 = a4; |
CharlesXu | 0:28bd5ee534a3 | 45 | ref5 = a5; |
CharlesXu | 0:28bd5ee534a3 | 46 | |
CharlesXu | 0:28bd5ee534a3 | 47 | } |
CharlesXu | 0:28bd5ee534a3 | 48 | counter++; |
CharlesXu | 0:28bd5ee534a3 | 49 | wait(0.5); |
CharlesXu | 0:28bd5ee534a3 | 50 | i1 = a1; |
CharlesXu | 0:28bd5ee534a3 | 51 | i2 = a2; |
CharlesXu | 0:28bd5ee534a3 | 52 | i3 = a3; |
CharlesXu | 0:28bd5ee534a3 | 53 | i4 = a4; |
CharlesXu | 0:28bd5ee534a3 | 54 | i5 = a5; |
CharlesXu | 0:28bd5ee534a3 | 55 | |
CharlesXu | 0:28bd5ee534a3 | 56 | c = 'I'; |
CharlesXu | 0:28bd5ee534a3 | 57 | if (i1 > i2) { |
CharlesXu | 0:28bd5ee534a3 | 58 | max = i1; |
CharlesXu | 0:28bd5ee534a3 | 59 | c = 'A'; |
CharlesXu | 0:28bd5ee534a3 | 60 | } else |
CharlesXu | 0:28bd5ee534a3 | 61 | { |
CharlesXu | 0:28bd5ee534a3 | 62 | max = i2; |
CharlesXu | 0:28bd5ee534a3 | 63 | c = 'B'; |
CharlesXu | 0:28bd5ee534a3 | 64 | } |
CharlesXu | 0:28bd5ee534a3 | 65 | if (max < i3) |
CharlesXu | 0:28bd5ee534a3 | 66 | { |
CharlesXu | 0:28bd5ee534a3 | 67 | max = i3; |
CharlesXu | 0:28bd5ee534a3 | 68 | c = 'C'; |
CharlesXu | 0:28bd5ee534a3 | 69 | } |
CharlesXu | 0:28bd5ee534a3 | 70 | if (max < i4) |
CharlesXu | 0:28bd5ee534a3 | 71 | { |
CharlesXu | 0:28bd5ee534a3 | 72 | max = i4; |
CharlesXu | 0:28bd5ee534a3 | 73 | c = 'D'; |
CharlesXu | 0:28bd5ee534a3 | 74 | } |
CharlesXu | 0:28bd5ee534a3 | 75 | if (max < i5) |
CharlesXu | 0:28bd5ee534a3 | 76 | { |
CharlesXu | 0:28bd5ee534a3 | 77 | max = i5; |
CharlesXu | 0:28bd5ee534a3 | 78 | c = 'E'; |
CharlesXu | 0:28bd5ee534a3 | 79 | } |
CharlesXu | 0:28bd5ee534a3 | 80 | avg = (i1 + i2 + i3 + i4 + i5) / 5; |
CharlesXu | 0:28bd5ee534a3 | 81 | diff = max - avg; |
CharlesXu | 0:28bd5ee534a3 | 82 | if (diff*100 > 0.7) |
CharlesXu | 0:28bd5ee534a3 | 83 | { |
CharlesXu | 0:28bd5ee534a3 | 84 | xbee1.putc(c); |
CharlesXu | 0:28bd5ee534a3 | 85 | } else |
CharlesXu | 0:28bd5ee534a3 | 86 | { |
CharlesXu | 0:28bd5ee534a3 | 87 | xbee1.putc ('I'); |
CharlesXu | 0:28bd5ee534a3 | 88 | } |
CharlesXu | 0:28bd5ee534a3 | 89 | pc.printf("%4.2f ", diff*100); |
CharlesXu | 0:28bd5ee534a3 | 90 | } |
CharlesXu | 0:28bd5ee534a3 | 91 | } |