Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: 4DGL-uLCD-SE PinDetect Servo mbed
Fork of 4180FinalProject_Fall2017_ArmaanMehta_JasonLukose by
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 }
Generated on Sun Jul 17 2022 03:20:02 by
1.7.2
