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
- Committer:
- CharlesXu
- Date:
- 2018-12-14
- Revision:
- 1:8771f19aeeab
- Parent:
- 0:28bd5ee534a3
File content as of revision 1:8771f19aeeab:
#include "mbed.h" #include "emic2.h" #include "uLCD_4DGL.h" #include<string> using namespace std; //serial RX,TX pins to emic uLCD_4DGL uLCD(p28,p27,p5); // serial tx, serial rx, reset pin; #define length_sprite 20 #define width_sprite 75 #define width_sprite2 47 #define length_sprite2 18 #define Q 0x808000 //OLIVE #define I 0x008000 //GREEN #define S 0xC0C0C0 //SILVER #define R 0xF1C40F //YELLOW #define O 0xF39C12 //ORANGE #define X 0xFFFFFF //WHITE #define B 0x0000FF //BLUE #define G 0xAAB7B8 //GREY #define D 0x797D7F //DARK GREY #define L 0x00FF00 //LIME #define P 0xFF00FF //K #define _ 0x000000 //BLACK #define r 0xFF0000 //RED class TMP36{ public: TMP36(PinName pin); TMP36(); float read(); private: //class sets up the AnalogIn pin AnalogIn _pin; }; TMP36::TMP36(PinName pin) : _pin(pin) {} //This is an initializer list float TMP36::read() { //convert sensor reading to temperature in degrees C return ((_pin.read()*3.3)-0.500)*100.0; //read() function returns a normalized value of the voltage from 0 to 1 as a float } //instantiate new class to set p15 to analog input //to read and convert TMP36 sensor's voltage output } TMP36 myTMP36(p20); // analog in pin for temp sensor // make 3 different sprites // decrease the sprite dimensions to increasing processing speed // for the glove sprite appearing in the beginning int Glove[length_sprite*width_sprite] = { _,_,_,_,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,_,_,_,_,_,_, _,_,_,_,_,R,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,R,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,I,_,_,_,_,_,I,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,R,_,_,_,_,_,R,R,_,_,_,_,_,_,R,_,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,I,_,_,_,I,_,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,R,_,_,_,R,_,_,R,_,_,_,_,R,_,_,_,_,S,S,S,S,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,_,I,_,I,_,_,_,I,_,R,R,R,R,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,R,_,R,_,_,_,_,R,_,_,R,_,_,_,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,_,_,I,_,_,_,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,R,_,_,_,_,_,_,R,R,_,_,_,_,_,_,S,_,_,_,_,_,_,O,_,_,_,_,_,r,_,_,_,_,_,D,_,_,_,_,D,_,I,_,_,_,_,_,_,_,_,_,I,_,R,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,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,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,B,B,B,B,B,B,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,_,_,_,_,_,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,G,_,_,_,_,_,_,B,B,B,B,B,B,B,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, }; int Fourty_One_Eighty[width_sprite2*length_sprite2]= { _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,B,B,B,B,B,B,B,B,_, _,_,_,_,_,_,_,_,_,_,_,L,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,L,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,L,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,L,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,L,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,L,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,L,L,L,L,L,L,L,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,_,_,_,_,_,_,_,G,_,_,_,B,_,_,_,_,_,_,_,B,_, _,_,_,_,_,_,_,_,_,_,_,_,L,_,_,_,_,O,O,O,_,_,_,_,_,G,G,G,G,G,G,G,G,G,_,_,_,B,B,B,B,B,B,B,B,B,_, _,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, }; Serial xbee1(p9,p10); DigitalOut rst1(p11); DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); //emic2 myTTS(p13, p14); AnalogIn a1(p15); AnalogIn a2(p16); AnalogIn a3(p17); AnalogIn a4(p18); AnalogIn a5(p19); Serial pc(USBTX, USBRX); float i1; float i2; float i3; float i4; float i5; float ref1; float ref2; float ref3; float ref4; float ref5; float avg1; float avg2; float avg3; float avg4; float avg5; float diff1, diff2, diff3, diff4, diff5; int counter; float sum; int main() { float tempC, tempF; int i = 0; uLCD.BLIT(30,30,width_sprite, length_sprite, Glove); wait(1); uLCD.cls(); uLCD.BLIT(30,30, width_sprite2, length_sprite2, Fourty_One_Eighty); wait(1.0); for (unsigned int j = 0; j <= 128; j+=7){ // DRAW ---- animation of walls uLCD.line(j,127,j+7,0,RED); // horizontal animation uLCD.line(j+1, 127, j+8, 0, RED); uLCD.line(127 - j, 0, 127 - (j+7), 127, BLUE); uLCD.line(127-j-1,0,127 - (j+8), 127, BLUE); // Erase wait(.1); uLCD.line(j,127,j+7,0,BLACK); uLCD.line(j+1, 127, j+8, 0, BLACK); uLCD.line(127 - j, 0, 127 - (j+7), 127, BLACK); // vertical animation uLCD.line(127-j-1,0,127 - (j+8), 127, BLACK); } uLCD.cls(); ref1 = 0; ref2 = 0; ref3 = 0; ref4 = 0; ref5 = 0; counter = 0; rst1 = 0; wait_ms(1); rst1 = 1; wait_ms(1); char o; while(1) { wait(0.5); i1 = a1; i2 = a2; i3 = a3; i4 = a4; i5 = a5; ref1 += i1; ref2 += i2; ref3 += i3; ref4 += i4; ref5 += i5; avg1 = ref1 / counter; avg2 = ref2 / counter; avg3 = ref3 / counter; avg4 = ref4 / counter; avg5 = ref5 / counter; o = 'I'; myled1 = 0; myled2 = 0; myled3 = 0; myled4 = 0; diff1 = i1 - avg1; diff2 = i2 - avg2; diff3 = i3 - avg3; diff4 = i4 - avg4; diff5 = i5 - avg5; if (diff1 > 0.01) { o = 'A'; ref1 -= i1; myled1 = 1; } else if (diff2 > 0.01) { o = 'B'; ref2 -= i2; myled2 = 1; } else if (diff3 > 0.01) { o = 'C'; ref3 -= i3; myled3 = 1; } else if (diff4 > 0.01) { o = 'D'; ref4 -= i4; myled4 = 1; } else if (diff5 > 0.01) { o = 'E'; ref5 -= i5; myled1 = 1; myled2 = 1; } else { counter++; } xbee1.putc(o); pc.printf("%4.2f, %4.2f\r\n", avg4, diff4); uLCD.filled_circle(63,63,63, 0x0000ff); uLCD.baudrate(3000000); //uLCD.set_font_size(3,3); /* uLCD.text_char('B', 9, 8, BLACK); uLCD.text_char('I',10, 8, BLACK); uLCD.text_char('G',11, 8, BLACK); uLCD.text_italic(ON); */ if (i == 0){ uLCD.locate(40,40); uLCD.text_italic(ON); uLCD.text_string("Welcome to 4180", 0, 5, FONT_7X8, WHITE); uLCD.text_italic(ON); wait(0.2); uLCD.cls(); uLCD.text_string("Final", 0, 9, FONT_7X8, WHITE); uLCD.text_string("Project", 0, 11, FONT_7X8, WHITE); i++; uLCD.cls(); uLCD.filled_circle(63,63,63, 0x0000ff); wait(0.2); } tempC = myTMP36.read(); //convert to degrees F tempF = (9.0*tempC)/5.0 + 32.0; //print current temp uLCD.locate(0,0); uLCD.printf("%5.2f C %5.2f F \n\r", tempC, tempF); uLCD.filled_rectangle(40, 127, 50, 127 - 2*tempC , 0xFF0000); // MAX- Celcius 64 for celcius bar uLCD.filled_rectangle(60, 127, 70, 127 - tempF, 0xFFFF00); // MAX- farenheit yellow for farenheit bar wait(0.2); // uLCD.cls(); uLCD.filled_rectangle(0,0,127, 7, 0x000000); uLCD.filled_circle(63,63,63, 0x0000ff); uLCD.filled_rectangle(40, 127, 50, 127 - 2*tempC , 0x000000); // ERASE uLCD.filled_rectangle(60, 127, 70, 127 - tempF, 0x000000); // MAX- farenheit yellow for farenheit bar } }