Armaan Mehta / Mbed 2 deprecated 4180FinalProject_Fall2017_ArmaanMehta_JasonLukose

Dependencies:   4DGL-uLCD-SE PinDetect Servo mbed

Fork of 4180FinalProject_Fall2017_ArmaanMehta_JasonLukose by Armaan Mehta

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // uLCD-144-G2 demo program for uLCD-4GL LCD driver library
00002 //
00003 #include "mbed.h"
00004 #include "uLCD_4DGL.h"
00005 #include "PinDetect.h"
00006 #include "Servo.h"
00007 
00008 
00009 uLCD_4DGL uLCD(p28,p27,p29); // serial tx, serial rx, reset pin;
00010 
00011 int mode = 0;
00012 int enter = 0;
00013 int menu = 0;
00014 int temp = 70;
00015 
00016 Timer t;
00017 
00018 //DigitalIn prog(p5);
00019 //DigitalIn onoff(p6);
00020 //DigitalIn up(p7);
00021 //DigitalIn down(p8);
00022 
00023 DigitalOut progo(p9);
00024 DigitalOut myled1(LED1);
00025 DigitalOut onoffo(p10);
00026 DigitalOut myled2(LED2);
00027 DigitalOut upo(p11);
00028 DigitalOut myled3(LED3);
00029 DigitalOut downo(p12);
00030 DigitalOut myled4(LED4);
00031 
00032 AnalogIn ain(p20);
00033 
00034 InterruptIn button1(p5);
00035 InterruptIn button2(p6);
00036 InterruptIn button3(p7);
00037 InterruptIn button4(p8);
00038 
00039 Servo myservo(p22);
00040 
00041 //PinDetect button1(p5);
00042 //PinDetect button2(p6);
00043 //PinDetect button3(p7);
00044 //PinDetect button4(p8);
00045 
00046 void bisr1()
00047 {
00048     myled1 = 1;
00049     if (mode < 1) {
00050         menu = menu++;
00051     } else if (mode < 2) {
00052         menu = menu++;
00053         if (temp > 70)
00054             temp = temp -5;
00055         else
00056             temp = 70;
00057     } else if (mode < 3) {
00058         menu = menu++;
00059     } else {
00060     }
00061 }
00062 void bisr2()
00063 {
00064     myled2 = 1;
00065     if (mode < 1) {
00066         enter = 1 - enter;
00067     } else if (mode < 2) {
00068         enter = 1 - enter;
00069     } else if (mode < 3) {
00070         enter = 1 - enter;
00071     } else {
00072     }
00073 }
00074 void bisr3()
00075 {
00076     myled3 = 1;
00077     if (mode < 1) {
00078         menu = menu--;
00079     } else if (mode < 2) {
00080         menu = menu--;
00081         if (temp < 212)
00082             temp = temp +5;
00083         else
00084             temp = 215;
00085     } else if (mode < 3) {
00086         menu = menu--;
00087     } else {
00088     }
00089 }
00090 void bisr4()
00091 {
00092     myled4 =1;
00093     progo = !progo;
00094     if (mode < 1) {
00095     } else if (mode < 2) {
00096     } else if (mode < 3) {
00097     } else {
00098     }
00099 }
00100 
00101 float readain(int res)
00102 {
00103     float boil = 1.0;
00104     float calib = 0.606;
00105     float tmp[res];
00106     for (int i = 0; i < res; i++) {
00107         tmp[i] = ((((ain.read()-calib)/(boil-calib))*142)+70);//ain.read();//((ain.read()-0.89)*1410+60);
00108     }
00109     float sum = 0;
00110     for (int i = 0; i < res; i++) {
00111         sum = sum + tmp[i];
00112     }
00113     return sum/res;
00114 }
00115 
00116 bool TimerDone(Timer &timerobj, float endTime)
00117 {
00118     float timeNow = timerobj.read();
00119     //printf("The time taken was %f seconds\n", timeNow);
00120 
00121     if (timeNow >= endTime) {
00122         return true;
00123     } else {
00124         return false;
00125     }
00126 
00127 }
00128 
00129 int menumain()
00130 {
00131     mode = 0;
00132     enter = 0;
00133     menu = 0;
00134     uLCD.printf("\n Welcome to your tea maker\n"); //Default Green on black text
00135     uLCD.printf("\n  Please choose an option: \n");
00136     uLCD.color(RED);
00137     while(1) {
00138         if (menu < 1) {
00139             uLCD.locate(3,7);
00140             uLCD.textbackground_color(BLUE);
00141             uLCD.printf("\n  Heat Water \n");
00142             uLCD.textbackground_color(BLACK);
00143             uLCD.printf("\n  Make a Tea \n");
00144         } else {
00145             uLCD.locate(3,7);
00146             uLCD.textbackground_color(BLACK);
00147             uLCD.printf("\n  Heat Water \n");
00148             uLCD.textbackground_color(BLUE);
00149             uLCD.printf("\n  Make a Tea \n");
00150         }
00151         if (enter)
00152             return menu;
00153     }
00154 }
00155 
00156 int menutwo(int response)
00157 {
00158     mode = 1;
00159     enter = 0;
00160     menu = 0;
00161     uLCD.cls();
00162     uLCD.textbackground_color(BLACK);
00163     if (response < 1) {
00164         uLCD.locate(3,3);
00165         uLCD.printf("\n  Please choose a temperature: \n");
00166         uLCD.color(RED);
00167         float temporary = 0;
00168         while (1) {
00169             uLCD.locate(3,7);
00170             temporary = readain(5000);
00171             uLCD.printf("%d \n %f", temp, temporary);
00172             if (temporary < (temp - 7)) {
00173                 progo = 1;
00174             } else if (temporary > (temp - 5)) {
00175                 progo = 0;
00176             }
00177         }
00178     } else {
00179         uLCD.printf("\n  Please choose a tea type: \n");
00180         uLCD.color(RED);
00181         while(1) {
00182             if (menu < 1) {
00183                 uLCD.locate(3,7);
00184                 uLCD.textbackground_color(BLUE);
00185                 uLCD.printf("  White \n");
00186                 uLCD.textbackground_color(BLACK);
00187                 uLCD.printf("  Yellow \n");
00188                 uLCD.textbackground_color(BLACK);
00189                 uLCD.printf("  Green \n");
00190                 uLCD.textbackground_color(BLACK);
00191                 uLCD.printf("  Red \n");
00192                 uLCD.textbackground_color(BLACK);
00193                 uLCD.printf("  Black \n");
00194             } else if (menu < 2) {
00195                 uLCD.locate(3,7);
00196                 uLCD.textbackground_color(BLACK);
00197                 uLCD.printf("  White \n");
00198                 uLCD.textbackground_color(BLUE);
00199                 uLCD.printf("  Yellow \n");
00200                 uLCD.textbackground_color(BLACK);
00201                 uLCD.printf("  Green \n");
00202                 uLCD.textbackground_color(BLACK);
00203                 uLCD.printf("  Red \n");
00204                 uLCD.textbackground_color(BLACK);
00205                 uLCD.printf("  Black \n");
00206             } else if (menu < 3) {
00207                 uLCD.locate(3,7);
00208                 uLCD.textbackground_color(BLACK);
00209                 uLCD.printf("  White \n");
00210                 uLCD.textbackground_color(BLACK);
00211                 uLCD.printf("  Yellow \n");
00212                 uLCD.textbackground_color(BLUE);
00213                 uLCD.printf("  Green \n");
00214                 uLCD.textbackground_color(BLACK);
00215                 uLCD.printf("  Red \n");
00216                 uLCD.textbackground_color(BLACK);
00217                 uLCD.printf("  Black \n");
00218             } else if (menu < 4) {
00219                 uLCD.locate(3,7);
00220                 uLCD.textbackground_color(BLACK);
00221                 uLCD.printf("  White \n");
00222                 uLCD.textbackground_color(BLACK);
00223                 uLCD.printf("  Yellow \n");
00224                 uLCD.textbackground_color(BLACK);
00225                 uLCD.printf("  Green \n");
00226                 uLCD.textbackground_color(BLUE);
00227                 uLCD.printf("  Red \n");
00228                 uLCD.textbackground_color(BLACK);
00229                 uLCD.printf("  Black \n");
00230             } else {
00231                 uLCD.locate(3,7);
00232                 uLCD.textbackground_color(BLACK);
00233                 uLCD.printf("  White \n");
00234                 uLCD.textbackground_color(BLACK);
00235                 uLCD.printf("  Yellow \n");
00236                 uLCD.textbackground_color(BLACK);
00237                 uLCD.printf("  Green \n");
00238                 uLCD.textbackground_color(BLACK);
00239                 uLCD.printf("  Red \n");
00240                 uLCD.textbackground_color(BLUE);
00241                 uLCD.printf("  Black \n");
00242             }
00243             if (enter)
00244                 return menu;
00245         }
00246     }
00247 }
00248 
00249 int menuthree(int response)
00250 {
00251     if (response == 2) {
00252         return menu;                            //170 2
00253     }
00254     mode = 2;
00255     enter = 0;
00256     menu = 0;
00257     uLCD.cls();
00258     uLCD.textbackground_color(BLACK);
00259     uLCD.printf("\n  Please choose a tea: \n");
00260     uLCD.color(RED);
00261     uLCD.locate(3,7);
00262     uLCD.textbackground_color(BLUE);
00263     if (response < 1) {
00264         uLCD.printf("  Bai Mudan \n");          //158, 4
00265         uLCD.textbackground_color(BLACK);
00266         uLCD.printf("  WhitHairSilvNeed\n");    //167, 5
00267         uLCD.textbackground_color(BLACK);
00268         uLCD.printf("  Shoumei \n");            //180, 2
00269         uLCD.textbackground_color(BLACK);
00270         uLCD.printf("  Darjeeling \n");         //195, 3
00271         uLCD.textbackground_color(BLACK);
00272         uLCD.printf("  Other/Fruity \n");       //212, 5
00273         while(1) {
00274             if (menu < 1) {
00275                 uLCD.locate(3,7);
00276                 uLCD.textbackground_color(BLUE);
00277                 uLCD.printf("  Bai Mudan \n");
00278                 uLCD.textbackground_color(BLACK);
00279                 uLCD.printf("  WhitHairSilvNeed\n");
00280             } else if (menu < 2) {
00281                 uLCD.locate(3,7);
00282                 uLCD.textbackground_color(BLACK);
00283                 uLCD.printf("  Bai Mudan \n");
00284                 uLCD.textbackground_color(BLUE);
00285                 uLCD.printf("  WhitHairSilvNeed\n");
00286                 uLCD.textbackground_color(BLACK);
00287                 uLCD.printf("  Shoumei \n");
00288             } else if (menu < 3) {
00289                 uLCD.locate(3,8);
00290                 uLCD.textbackground_color(BLACK);
00291                 uLCD.printf("  WhitHairSilvNeed\n");
00292                 uLCD.textbackground_color(BLUE);
00293                 uLCD.printf("  Shoumei \n");
00294                 uLCD.textbackground_color(BLACK);
00295                 uLCD.printf("  Darjeeling \n");
00296             } else if (menu < 4) {
00297                 uLCD.locate(3,9);
00298                 uLCD.textbackground_color(BLACK);
00299                 uLCD.printf("  Shoumei \n");
00300                 uLCD.textbackground_color(BLUE);
00301                 uLCD.printf("  Darjeeling \n");
00302                 uLCD.textbackground_color(BLACK);
00303                 uLCD.printf("  Other/Fruity \n");
00304             } else {
00305                 uLCD.locate(3,10);
00306                 uLCD.textbackground_color(BLACK);
00307                 uLCD.printf("  Darjeeling \n");
00308                 uLCD.textbackground_color(BLUE);
00309                 uLCD.printf("  Other/Fruity \n");
00310             }
00311             if (enter)
00312                 return menu;
00313         }
00314     } else if (response < 2) {
00315         uLCD.printf("  Silver Needle \n");       //175 3
00316         uLCD.textbackground_color(BLACK);
00317         uLCD.printf("  Huoshan \n");             //180 2
00318         uLCD.textbackground_color(BLACK);
00319         uLCD.printf("  Other \n");               //170 3
00320         while(1) {
00321             if (menu < 1) {
00322                 uLCD.locate(3,7);
00323                 uLCD.textbackground_color(BLUE);
00324                 uLCD.printf("  Silver Needle \n");
00325                 uLCD.textbackground_color(BLACK);
00326                 uLCD.printf("  Huoshan \n");
00327             } else if (menu < 2) {
00328                 uLCD.locate(3,7);
00329                 uLCD.textbackground_color(BLACK);
00330                 uLCD.printf("  Silver Needle \n");
00331                 uLCD.textbackground_color(BLUE);
00332                 uLCD.printf("  Huoshan \n");
00333                 uLCD.textbackground_color(BLACK);
00334                 uLCD.printf("  Other \n");
00335             } else if (menu < 3) {
00336                 uLCD.locate(3,8);
00337                 uLCD.textbackground_color(BLACK);
00338                 uLCD.printf("  Huoshan \n");
00339                 uLCD.textbackground_color(BLUE);
00340                 uLCD.printf("  Other \n");
00341             }
00342             if (enter)
00343                 return menu;
00344         }
00345     } else if (response < 4) {
00346         uLCD.printf("  Chinese \n");            //212 3
00347         uLCD.textbackground_color(BLACK);
00348         uLCD.printf("  Thai \n");               //212 5
00349         uLCD.textbackground_color(BLACK);
00350         uLCD.printf("  Rooibos \n");            //212 5
00351         uLCD.textbackground_color(BLACK);
00352         uLCD.printf("  Other \n");              //212 3
00353         while(1) {
00354             if (menu < 1) {
00355                 uLCD.locate(3,7);
00356                 uLCD.textbackground_color(BLUE);
00357                 uLCD.printf("  Chinese \n");
00358                 uLCD.textbackground_color(BLACK);
00359                 uLCD.printf("  Thai \n");
00360             } else if (menu < 2) {
00361                 uLCD.locate(3,7);
00362                 uLCD.textbackground_color(BLACK);
00363                 uLCD.printf("  Chinese \n");
00364                 uLCD.textbackground_color(BLUE);
00365                 uLCD.printf("  Thai \n");
00366                 uLCD.textbackground_color(BLACK);
00367                 uLCD.printf("  Rooibos \n");
00368             } else if (menu < 3) {
00369                 uLCD.locate(3,8);
00370                 uLCD.textbackground_color(BLACK);
00371                 uLCD.printf("  Thai \n");
00372                 uLCD.textbackground_color(BLUE);
00373                 uLCD.printf("  Rooibos \n");
00374                 uLCD.textbackground_color(BLACK);
00375                 uLCD.printf("  Other \n");
00376             } else {
00377                 uLCD.locate(3,9);
00378                 uLCD.textbackground_color(BLACK);
00379                 uLCD.printf("  Rooibos \n");
00380                 uLCD.textbackground_color(BLUE);
00381                 uLCD.printf("  Other \n");
00382             }
00383             if (enter)
00384                 return menu;
00385         }
00386     } else {
00387         menu = 1;
00388         return menu;
00389     }
00390 }
00391 
00392 void maketea(int response, int action)
00393 {
00394     int templ = 0;
00395     int time = 0;
00396     if (response == 2) {
00397         templ = 170;
00398         time = 2;
00399     } else if (response == 4) {
00400         templ = 212;
00401         time = 1;
00402     } else if (response == 3) {
00403         templ = 212;
00404         if (action == 0 || action == 3) {
00405             time = 3;
00406         } else {
00407             time = 5;
00408         }
00409     } else if (response == 1) {
00410         if (action == 0) {
00411             templ = 175;
00412             time = 3;
00413         } else if (action == 1) {
00414             templ = 180;
00415             time = 2;
00416         } else {
00417             templ = 170;
00418             time = 3;
00419         }
00420     } else {
00421         if (action == 0) {
00422             templ = 158;
00423             time = 1;
00424         } else if (action == 1) {
00425             templ = 167;
00426             time = 5;
00427         } else if (action == 2) {
00428             templ = 180;
00429             time = 2;
00430         } else if (action == 3) {
00431             templ = 195;
00432             time = 3;
00433         } else {
00434             templ = 212;
00435             time = 5;
00436         }
00437     }
00438     float temporary = 0;
00439     uLCD.cls();
00440     uLCD.printf("heating...");
00441     while (1) {
00442         temporary = readain(5000);
00443         uLCD.locate(3,1);
00444         uLCD.printf("heat to: %i \n current: %5.2f", templ, temporary);
00445         if (temporary < (templ - 7)) {
00446             progo = 1;
00447         } else if (temporary > (templ - 5)) {
00448             progo = 0;
00449             break;
00450         }
00451     }
00452     uLCD.cls();
00453     uLCD.printf("brewing... \n");
00454     for(int i = 180; i > 110; i--) {
00455         myservo = i/180.0;
00456         wait(0.05);
00457     }
00458     t.start();
00459     while(!TimerDone(t, time*60)) {
00460     }
00461     for(int i = 110; i < 180; i++) {
00462         myservo = i/180.0;
00463         wait(0.05);
00464     }
00465     uLCD.cls();
00466     uLCD.printf("Done...");
00467 }
00468 
00469 int main()
00470 {
00471     wait(1);
00472     button1.mode( PullUp );
00473     button2.mode( PullUp );
00474     button3.mode( PullUp );
00475     button4.mode( PullUp );
00476 
00477 //    button1.attach_deasserted(&bisr1);
00478 //    button2.attach_deasserted(&bisr2);
00479 //    button3.attach_deasserted(&bisr3);
00480 //    button4.attach_deasserted(&bisr4);
00481 
00482     button1.rise(&bisr1);
00483     button2.rise(&bisr2);
00484     button3.rise(&bisr3);
00485     button4.rise(&bisr4);
00486     
00487     progo = 0;
00488     for(int i = 110; i < 180; i++) {
00489         myservo = i/180.0;
00490         wait(0.05);
00491     }
00492     wait(1);
00493 
00494     int response;
00495     response = menumain();
00496     response = menutwo(response);
00497     int action = menuthree(response);
00498     maketea(response, action);
00499 
00500     while(1) {
00501         //   progo = prog;
00502         myled1 = progo;
00503         //   onoffo = onoff;
00504         myled2 = onoffo;
00505         //   upo = up;
00506         myled3 = upo;
00507         //   downo = down;
00508         myled4 = downo;
00509        // uLCD.locate(3,3);
00510         //uLCD.printf("TxtLine %f \n and %f",ain.read(), abs(ain.read()-ain.read()));
00511     }
00512 
00513 }