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@1:8771f19aeeab, 2018-12-14 (annotated)
- Committer:
- CharlesXu
- Date:
- Fri Dec 14 16:40:34 2018 +0000
- Revision:
- 1:8771f19aeeab
- Parent:
- 0:28bd5ee534a3
Transmitter final
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 | 1:8771f19aeeab | 3 | #include "uLCD_4DGL.h" |
CharlesXu | 1:8771f19aeeab | 4 | #include<string> |
CharlesXu | 1:8771f19aeeab | 5 | |
CharlesXu | 1:8771f19aeeab | 6 | using namespace std; |
CharlesXu | 1:8771f19aeeab | 7 | //serial RX,TX pins to emic |
CharlesXu | 1:8771f19aeeab | 8 | uLCD_4DGL uLCD(p28,p27,p5); // serial tx, serial rx, reset pin; |
CharlesXu | 1:8771f19aeeab | 9 | #define length_sprite 20 |
CharlesXu | 1:8771f19aeeab | 10 | #define width_sprite 75 |
CharlesXu | 1:8771f19aeeab | 11 | #define width_sprite2 47 |
CharlesXu | 1:8771f19aeeab | 12 | #define length_sprite2 18 |
CharlesXu | 1:8771f19aeeab | 13 | |
CharlesXu | 1:8771f19aeeab | 14 | #define Q 0x808000 //OLIVE |
CharlesXu | 1:8771f19aeeab | 15 | #define I 0x008000 //GREEN |
CharlesXu | 1:8771f19aeeab | 16 | #define S 0xC0C0C0 //SILVER |
CharlesXu | 1:8771f19aeeab | 17 | #define R 0xF1C40F //YELLOW |
CharlesXu | 1:8771f19aeeab | 18 | #define O 0xF39C12 //ORANGE |
CharlesXu | 1:8771f19aeeab | 19 | #define X 0xFFFFFF //WHITE |
CharlesXu | 1:8771f19aeeab | 20 | #define B 0x0000FF //BLUE |
CharlesXu | 1:8771f19aeeab | 21 | #define G 0xAAB7B8 //GREY |
CharlesXu | 1:8771f19aeeab | 22 | #define D 0x797D7F //DARK GREY |
CharlesXu | 1:8771f19aeeab | 23 | #define L 0x00FF00 //LIME |
CharlesXu | 1:8771f19aeeab | 24 | #define P 0xFF00FF //K |
CharlesXu | 1:8771f19aeeab | 25 | #define _ 0x000000 //BLACK |
CharlesXu | 1:8771f19aeeab | 26 | #define r 0xFF0000 //RED |
CharlesXu | 1:8771f19aeeab | 27 | |
CharlesXu | 1:8771f19aeeab | 28 | |
CharlesXu | 1:8771f19aeeab | 29 | class TMP36{ |
CharlesXu | 1:8771f19aeeab | 30 | public: |
CharlesXu | 1:8771f19aeeab | 31 | TMP36(PinName pin); |
CharlesXu | 1:8771f19aeeab | 32 | TMP36(); |
CharlesXu | 1:8771f19aeeab | 33 | float read(); |
CharlesXu | 1:8771f19aeeab | 34 | private: |
CharlesXu | 1:8771f19aeeab | 35 | //class sets up the AnalogIn pin |
CharlesXu | 1:8771f19aeeab | 36 | AnalogIn _pin; |
CharlesXu | 1:8771f19aeeab | 37 | }; |
CharlesXu | 1:8771f19aeeab | 38 | TMP36::TMP36(PinName pin) : _pin(pin) {} //This is an initializer list |
CharlesXu | 1:8771f19aeeab | 39 | float TMP36::read() |
CharlesXu | 1:8771f19aeeab | 40 | { |
CharlesXu | 1:8771f19aeeab | 41 | //convert sensor reading to temperature in degrees C |
CharlesXu | 1:8771f19aeeab | 42 | return ((_pin.read()*3.3)-0.500)*100.0; |
CharlesXu | 1:8771f19aeeab | 43 | //read() function returns a normalized value of the voltage from 0 to 1 as a float } |
CharlesXu | 1:8771f19aeeab | 44 | //instantiate new class to set p15 to analog input //to read and convert TMP36 sensor's voltage output |
CharlesXu | 1:8771f19aeeab | 45 | } |
CharlesXu | 1:8771f19aeeab | 46 | TMP36 myTMP36(p20); // analog in pin for temp sensor |
CharlesXu | 1:8771f19aeeab | 47 | |
CharlesXu | 1:8771f19aeeab | 48 | |
CharlesXu | 1:8771f19aeeab | 49 | // make 3 different sprites |
CharlesXu | 1:8771f19aeeab | 50 | // decrease the sprite dimensions to increasing processing speed |
CharlesXu | 1:8771f19aeeab | 51 | // for the glove sprite appearing in the beginning |
CharlesXu | 1:8771f19aeeab | 52 | int Glove[length_sprite*width_sprite] = { |
CharlesXu | 1:8771f19aeeab | 53 | _,_,_,_,R,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,R,_,S,S,S,S,S,S,_,O,_,_,_,_,_,r,r,r,r,r,_,D,D,D,D,D,D,_,I,I,_,_,_,_,_,_,_,I,I,_,R,R,R,R,R,R,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 54 | _,_,_,_,_,R,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,R,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,I,_,_,_,_,_,I,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 55 | _,_,_,_,_,_,R,_,_,_,_,_,R,R,_,_,_,_,_,_,R,_,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,I,_,_,_,I,_,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 56 | _,_,_,_,_,_,_,R,_,_,_,R,_,_,R,_,_,_,_,R,_,_,_,_,S,S,S,S,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,_,I,_,I,_,_,_,I,_,R,R,R,R,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 57 | _,_,_,_,_,_,_,_,R,_,R,_,_,_,_,R,_,_,R,_,_,_,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,_,_,I,_,_,_,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 58 | _,_,_,_,_,_,_,_,_,R,_,_,_,_,_,_,R,R,_,_,_,_,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,_,_,_,_,_,_,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 59 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,S,S,S,S,S,S,_,O,O,O,O,O,_,r,r,r,r,r,_,D,D,D,D,D,D,_,I,_,_,_,_,_,_,_,_,_,I,_,R,R,R,R,R,R,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 60 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 61 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 62 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 63 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,B,B,B,B,B,B,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 64 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 65 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 66 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 67 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 68 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 69 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 70 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 71 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,B,B,B,B,B,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 72 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 73 | }; |
CharlesXu | 1:8771f19aeeab | 74 | |
CharlesXu | 1:8771f19aeeab | 75 | |
CharlesXu | 1:8771f19aeeab | 76 | int Fourty_One_Eighty[width_sprite2*length_sprite2]= { |
CharlesXu | 1:8771f19aeeab | 77 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 78 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,B,B,B,B,B,B,B,B,_, |
CharlesXu | 1:8771f19aeeab | 79 | _,_,_,_,_,_,_,_,_,_,_,L,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 80 | _,_,_,_,_,_,_,_,_,_,L,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 81 | _,_,_,_,_,_,_,_,_,L,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 82 | _,_,_,_,_,_,_,_,L,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 83 | _,_,_,_,_,_,_,L,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 84 | _,_,_,_,_,_,L,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 85 | _,_,_,_,_,L,L,L,L,L,L,L,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 86 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 87 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 88 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 89 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 90 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 91 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 92 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, |
CharlesXu | 1:8771f19aeeab | 93 | _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,B,B,B,B,B,B,B,B,_, |
CharlesXu | 1:8771f19aeeab | 94 | _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, |
CharlesXu | 1:8771f19aeeab | 95 | |
CharlesXu | 1:8771f19aeeab | 96 | }; |
CharlesXu | 1:8771f19aeeab | 97 | |
CharlesXu | 1:8771f19aeeab | 98 | |
CharlesXu | 0:28bd5ee534a3 | 99 | Serial xbee1(p9,p10); |
CharlesXu | 0:28bd5ee534a3 | 100 | DigitalOut rst1(p11); |
CharlesXu | 1:8771f19aeeab | 101 | |
CharlesXu | 1:8771f19aeeab | 102 | DigitalOut myled1(LED1); |
CharlesXu | 1:8771f19aeeab | 103 | DigitalOut myled2(LED2); |
CharlesXu | 1:8771f19aeeab | 104 | DigitalOut myled3(LED3); |
CharlesXu | 1:8771f19aeeab | 105 | DigitalOut myled4(LED4); |
CharlesXu | 0:28bd5ee534a3 | 106 | //emic2 myTTS(p13, p14); |
CharlesXu | 0:28bd5ee534a3 | 107 | AnalogIn a1(p15); |
CharlesXu | 0:28bd5ee534a3 | 108 | AnalogIn a2(p16); |
CharlesXu | 0:28bd5ee534a3 | 109 | AnalogIn a3(p17); |
CharlesXu | 0:28bd5ee534a3 | 110 | AnalogIn a4(p18); |
CharlesXu | 0:28bd5ee534a3 | 111 | AnalogIn a5(p19); |
CharlesXu | 0:28bd5ee534a3 | 112 | Serial pc(USBTX, USBRX); |
CharlesXu | 0:28bd5ee534a3 | 113 | float i1; |
CharlesXu | 0:28bd5ee534a3 | 114 | float i2; |
CharlesXu | 0:28bd5ee534a3 | 115 | float i3; |
CharlesXu | 0:28bd5ee534a3 | 116 | float i4; |
CharlesXu | 0:28bd5ee534a3 | 117 | float i5; |
CharlesXu | 0:28bd5ee534a3 | 118 | float ref1; |
CharlesXu | 0:28bd5ee534a3 | 119 | float ref2; |
CharlesXu | 0:28bd5ee534a3 | 120 | float ref3; |
CharlesXu | 0:28bd5ee534a3 | 121 | float ref4; |
CharlesXu | 0:28bd5ee534a3 | 122 | float ref5; |
CharlesXu | 1:8771f19aeeab | 123 | float avg1; |
CharlesXu | 1:8771f19aeeab | 124 | float avg2; |
CharlesXu | 1:8771f19aeeab | 125 | float avg3; |
CharlesXu | 1:8771f19aeeab | 126 | float avg4; |
CharlesXu | 1:8771f19aeeab | 127 | float avg5; |
CharlesXu | 1:8771f19aeeab | 128 | float diff1, diff2, diff3, diff4, diff5; |
CharlesXu | 1:8771f19aeeab | 129 | int counter; |
CharlesXu | 1:8771f19aeeab | 130 | float sum; |
CharlesXu | 1:8771f19aeeab | 131 | int main() { |
CharlesXu | 1:8771f19aeeab | 132 | float tempC, tempF; |
CharlesXu | 1:8771f19aeeab | 133 | int i = 0; |
CharlesXu | 1:8771f19aeeab | 134 | uLCD.BLIT(30,30,width_sprite, length_sprite, Glove); |
CharlesXu | 1:8771f19aeeab | 135 | wait(1); |
CharlesXu | 1:8771f19aeeab | 136 | uLCD.cls(); |
CharlesXu | 0:28bd5ee534a3 | 137 | |
CharlesXu | 1:8771f19aeeab | 138 | uLCD.BLIT(30,30, width_sprite2, length_sprite2, Fourty_One_Eighty); |
CharlesXu | 1:8771f19aeeab | 139 | |
CharlesXu | 1:8771f19aeeab | 140 | wait(1.0); |
CharlesXu | 0:28bd5ee534a3 | 141 | |
CharlesXu | 0:28bd5ee534a3 | 142 | |
CharlesXu | 1:8771f19aeeab | 143 | for (unsigned int j = 0; j <= 128; j+=7){ |
CharlesXu | 1:8771f19aeeab | 144 | // DRAW ---- animation of walls |
CharlesXu | 1:8771f19aeeab | 145 | uLCD.line(j,127,j+7,0,RED); // horizontal animation |
CharlesXu | 1:8771f19aeeab | 146 | uLCD.line(j+1, 127, j+8, 0, RED); |
CharlesXu | 1:8771f19aeeab | 147 | |
CharlesXu | 1:8771f19aeeab | 148 | uLCD.line(127 - j, 0, 127 - (j+7), 127, BLUE); |
CharlesXu | 1:8771f19aeeab | 149 | uLCD.line(127-j-1,0,127 - (j+8), 127, BLUE); |
CharlesXu | 0:28bd5ee534a3 | 150 | |
CharlesXu | 1:8771f19aeeab | 151 | // Erase |
CharlesXu | 1:8771f19aeeab | 152 | wait(.1); |
CharlesXu | 1:8771f19aeeab | 153 | uLCD.line(j,127,j+7,0,BLACK); |
CharlesXu | 1:8771f19aeeab | 154 | uLCD.line(j+1, 127, j+8, 0, BLACK); |
CharlesXu | 1:8771f19aeeab | 155 | uLCD.line(127 - j, 0, 127 - (j+7), 127, BLACK); // vertical animation |
CharlesXu | 1:8771f19aeeab | 156 | uLCD.line(127-j-1,0,127 - (j+8), 127, BLACK); |
CharlesXu | 1:8771f19aeeab | 157 | } |
CharlesXu | 1:8771f19aeeab | 158 | |
CharlesXu | 1:8771f19aeeab | 159 | uLCD.cls(); |
CharlesXu | 1:8771f19aeeab | 160 | |
CharlesXu | 1:8771f19aeeab | 161 | |
CharlesXu | 1:8771f19aeeab | 162 | |
CharlesXu | 1:8771f19aeeab | 163 | ref1 = 0; |
CharlesXu | 1:8771f19aeeab | 164 | ref2 = 0; |
CharlesXu | 1:8771f19aeeab | 165 | ref3 = 0; |
CharlesXu | 1:8771f19aeeab | 166 | ref4 = 0; |
CharlesXu | 1:8771f19aeeab | 167 | ref5 = 0; |
CharlesXu | 0:28bd5ee534a3 | 168 | counter = 0; |
CharlesXu | 0:28bd5ee534a3 | 169 | rst1 = 0; |
CharlesXu | 0:28bd5ee534a3 | 170 | wait_ms(1); |
CharlesXu | 0:28bd5ee534a3 | 171 | rst1 = 1; |
CharlesXu | 0:28bd5ee534a3 | 172 | wait_ms(1); |
CharlesXu | 1:8771f19aeeab | 173 | char o; |
CharlesXu | 0:28bd5ee534a3 | 174 | while(1) { |
CharlesXu | 0:28bd5ee534a3 | 175 | wait(0.5); |
CharlesXu | 0:28bd5ee534a3 | 176 | i1 = a1; |
CharlesXu | 0:28bd5ee534a3 | 177 | i2 = a2; |
CharlesXu | 0:28bd5ee534a3 | 178 | i3 = a3; |
CharlesXu | 0:28bd5ee534a3 | 179 | i4 = a4; |
CharlesXu | 0:28bd5ee534a3 | 180 | i5 = a5; |
CharlesXu | 1:8771f19aeeab | 181 | ref1 += i1; |
CharlesXu | 1:8771f19aeeab | 182 | ref2 += i2; |
CharlesXu | 1:8771f19aeeab | 183 | ref3 += i3; |
CharlesXu | 1:8771f19aeeab | 184 | ref4 += i4; |
CharlesXu | 1:8771f19aeeab | 185 | ref5 += i5; |
CharlesXu | 1:8771f19aeeab | 186 | avg1 = ref1 / counter; |
CharlesXu | 1:8771f19aeeab | 187 | avg2 = ref2 / counter; |
CharlesXu | 1:8771f19aeeab | 188 | avg3 = ref3 / counter; |
CharlesXu | 1:8771f19aeeab | 189 | avg4 = ref4 / counter; |
CharlesXu | 1:8771f19aeeab | 190 | avg5 = ref5 / counter; |
CharlesXu | 1:8771f19aeeab | 191 | o = 'I'; |
CharlesXu | 1:8771f19aeeab | 192 | myled1 = 0; |
CharlesXu | 1:8771f19aeeab | 193 | myled2 = 0; |
CharlesXu | 1:8771f19aeeab | 194 | myled3 = 0; |
CharlesXu | 1:8771f19aeeab | 195 | myled4 = 0; |
CharlesXu | 1:8771f19aeeab | 196 | diff1 = i1 - avg1; |
CharlesXu | 1:8771f19aeeab | 197 | diff2 = i2 - avg2; |
CharlesXu | 1:8771f19aeeab | 198 | diff3 = i3 - avg3; |
CharlesXu | 1:8771f19aeeab | 199 | diff4 = i4 - avg4; |
CharlesXu | 1:8771f19aeeab | 200 | diff5 = i5 - avg5; |
CharlesXu | 1:8771f19aeeab | 201 | if (diff1 > 0.01) { |
CharlesXu | 1:8771f19aeeab | 202 | o = 'A'; |
CharlesXu | 1:8771f19aeeab | 203 | ref1 -= i1; |
CharlesXu | 1:8771f19aeeab | 204 | myled1 = 1; |
CharlesXu | 1:8771f19aeeab | 205 | } else if (diff2 > 0.01) |
CharlesXu | 0:28bd5ee534a3 | 206 | { |
CharlesXu | 1:8771f19aeeab | 207 | o = 'B'; |
CharlesXu | 1:8771f19aeeab | 208 | ref2 -= i2; |
CharlesXu | 1:8771f19aeeab | 209 | myled2 = 1; |
CharlesXu | 1:8771f19aeeab | 210 | } else if (diff3 > 0.01) |
CharlesXu | 0:28bd5ee534a3 | 211 | { |
CharlesXu | 1:8771f19aeeab | 212 | o = 'C'; |
CharlesXu | 1:8771f19aeeab | 213 | ref3 -= i3; |
CharlesXu | 1:8771f19aeeab | 214 | myled3 = 1; |
CharlesXu | 1:8771f19aeeab | 215 | } else if (diff4 > 0.01) |
CharlesXu | 1:8771f19aeeab | 216 | { |
CharlesXu | 1:8771f19aeeab | 217 | o = 'D'; |
CharlesXu | 1:8771f19aeeab | 218 | ref4 -= i4; |
CharlesXu | 1:8771f19aeeab | 219 | myled4 = 1; |
CharlesXu | 1:8771f19aeeab | 220 | } else if (diff5 > 0.01) |
CharlesXu | 0:28bd5ee534a3 | 221 | { |
CharlesXu | 1:8771f19aeeab | 222 | o = 'E'; |
CharlesXu | 1:8771f19aeeab | 223 | ref5 -= i5; |
CharlesXu | 1:8771f19aeeab | 224 | myled1 = 1; |
CharlesXu | 1:8771f19aeeab | 225 | myled2 = 1; |
CharlesXu | 1:8771f19aeeab | 226 | } else { |
CharlesXu | 1:8771f19aeeab | 227 | counter++; |
CharlesXu | 0:28bd5ee534a3 | 228 | } |
CharlesXu | 1:8771f19aeeab | 229 | xbee1.putc(o); |
CharlesXu | 1:8771f19aeeab | 230 | |
CharlesXu | 1:8771f19aeeab | 231 | pc.printf("%4.2f, %4.2f\r\n", avg4, diff4); |
CharlesXu | 1:8771f19aeeab | 232 | uLCD.filled_circle(63,63,63, 0x0000ff); |
CharlesXu | 1:8771f19aeeab | 233 | |
CharlesXu | 1:8771f19aeeab | 234 | uLCD.baudrate(3000000); |
CharlesXu | 1:8771f19aeeab | 235 | //uLCD.set_font_size(3,3); |
CharlesXu | 1:8771f19aeeab | 236 | /* |
CharlesXu | 1:8771f19aeeab | 237 | uLCD.text_char('B', 9, 8, BLACK); |
CharlesXu | 1:8771f19aeeab | 238 | uLCD.text_char('I',10, 8, BLACK); |
CharlesXu | 1:8771f19aeeab | 239 | uLCD.text_char('G',11, 8, BLACK); |
CharlesXu | 1:8771f19aeeab | 240 | uLCD.text_italic(ON); */ |
CharlesXu | 1:8771f19aeeab | 241 | if (i == 0){ |
CharlesXu | 1:8771f19aeeab | 242 | uLCD.locate(40,40); |
CharlesXu | 1:8771f19aeeab | 243 | uLCD.text_italic(ON); |
CharlesXu | 1:8771f19aeeab | 244 | uLCD.text_string("Welcome to 4180", 0, 5, FONT_7X8, WHITE); |
CharlesXu | 1:8771f19aeeab | 245 | uLCD.text_italic(ON); |
CharlesXu | 1:8771f19aeeab | 246 | wait(0.2); |
CharlesXu | 1:8771f19aeeab | 247 | uLCD.cls(); |
CharlesXu | 1:8771f19aeeab | 248 | uLCD.text_string("Final", 0, 9, FONT_7X8, WHITE); |
CharlesXu | 1:8771f19aeeab | 249 | uLCD.text_string("Project", 0, 11, FONT_7X8, WHITE); |
CharlesXu | 1:8771f19aeeab | 250 | |
CharlesXu | 1:8771f19aeeab | 251 | i++; uLCD.cls(); |
CharlesXu | 1:8771f19aeeab | 252 | uLCD.filled_circle(63,63,63, 0x0000ff); |
CharlesXu | 1:8771f19aeeab | 253 | wait(0.2); |
CharlesXu | 0:28bd5ee534a3 | 254 | } |
CharlesXu | 1:8771f19aeeab | 255 | |
CharlesXu | 1:8771f19aeeab | 256 | tempC = myTMP36.read(); //convert to degrees F |
CharlesXu | 1:8771f19aeeab | 257 | tempF = (9.0*tempC)/5.0 + 32.0; //print current temp |
CharlesXu | 1:8771f19aeeab | 258 | |
CharlesXu | 1:8771f19aeeab | 259 | uLCD.locate(0,0); |
CharlesXu | 1:8771f19aeeab | 260 | uLCD.printf("%5.2f C %5.2f F \n\r", tempC, tempF); |
CharlesXu | 1:8771f19aeeab | 261 | |
CharlesXu | 1:8771f19aeeab | 262 | |
CharlesXu | 1:8771f19aeeab | 263 | uLCD.filled_rectangle(40, 127, 50, 127 - 2*tempC , 0xFF0000); // MAX- Celcius 64 for celcius bar |
CharlesXu | 1:8771f19aeeab | 264 | uLCD.filled_rectangle(60, 127, 70, 127 - tempF, 0xFFFF00); // MAX- farenheit yellow for farenheit bar |
CharlesXu | 1:8771f19aeeab | 265 | wait(0.2); |
CharlesXu | 1:8771f19aeeab | 266 | // uLCD.cls(); |
CharlesXu | 1:8771f19aeeab | 267 | uLCD.filled_rectangle(0,0,127, 7, 0x000000); |
CharlesXu | 1:8771f19aeeab | 268 | uLCD.filled_circle(63,63,63, 0x0000ff); |
CharlesXu | 1:8771f19aeeab | 269 | uLCD.filled_rectangle(40, 127, 50, 127 - 2*tempC , 0x000000); // ERASE |
CharlesXu | 1:8771f19aeeab | 270 | uLCD.filled_rectangle(60, 127, 70, 127 - tempF, 0x000000); // MAX- farenheit yellow for farenheit bar |
CharlesXu | 0:28bd5ee534a3 | 271 | } |
CharlesXu | 0:28bd5ee534a3 | 272 | } |