eiei
Fork of test by
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 #include "mbed.h" 00002 #include "LCD4884.h" 00003 #include <iostream> 00004 00005 #define MENU_X 1 00006 #define MENU_Y 1 00007 AnalogIn joy(A0); 00008 LCD4884 lcd; 00009 Serial pc(PA_15,PB_7); 00010 Serial nutty(D1,D0); 00011 char func ; 00012 int i=0; 00013 int y=2; 00014 int XA=0; 00015 int YA=2; 00016 int check = 0; 00017 char mode[42]; 00018 int page = 0; 00019 float move=0; 00020 char V[5]; 00021 char word[42]; 00022 00023 00024 int main(){ 00025 lcd.backlight(ON); 00026 lcd.LCD_init(); 00027 pc.baud(38400); 00028 00029 while(1){ 00030 00031 printf("y=%d page=%d YA=%d XA=%d move=%.2f mode=%d\n",y,page,YA,XA,move,mode); 00032 move = joy.read()*1000; 00033 if(move >= 0 && move <= 5){ 00034 XA -= 8; //left 00035 wait(0.3); 00036 } 00037 if(move >= 475 && move <= 490){ 00038 YA += 1; //down 00039 y += 3; 00040 wait(0.3); 00041 } 00042 if(move >= 700 && move <= 745){ 00043 XA += 8; //right 00044 wait(0.3); 00045 } 00046 if(move >= 900){ 00047 YA -= 1; //up 00048 y -= 3; 00049 wait(0.3); 00050 } 00051 //switch 00052 if(XA == 0 && YA == 0){ 00053 mode[0] = 1; 00054 } 00055 else{ 00056 mode[0] = 0; 00057 } 00058 if(XA == 0 && YA == 2){ 00059 mode[2] = 1; 00060 } 00061 else{ 00062 mode[2] = 0; 00063 } 00064 if(XA == 0 && YA == 3){ 00065 mode[3] = 1; 00066 } 00067 else{ 00068 mode[3] = 0; 00069 } 00070 if(XA == 0 && y == 5){ 00071 mode[5] = 1; 00072 } 00073 else{ 00074 mode[5] = 0; 00075 } 00076 if(XA == 8 && YA == 0){ 00077 mode[1] = 1; 00078 } 00079 else{ 00080 mode[1] = 0; 00081 } 00082 if(XA == 16 && YA == 0){ 00083 mode[4] = 1; 00084 } 00085 else{ 00086 mode[4] = 0; 00087 } 00088 if(XA == 24 && YA == 0){ 00089 mode[6] = 1; 00090 } 00091 else{ 00092 mode[6] = 0; 00093 } 00094 if(XA == 32 && YA == 0){ 00095 mode[7] = 1; 00096 } 00097 else{ 00098 mode[7] = 0; 00099 } 00100 if(XA == 40 && YA == 0){ 00101 mode[8] = 1; 00102 } 00103 else{ 00104 mode[8] = 0; 00105 } 00106 if(XA == 48 && YA == 0){ 00107 mode[9] = 1; 00108 } 00109 else{ 00110 mode[9] = 0; 00111 } 00112 if(XA == 56 && YA == 0){ 00113 mode[10] = 1; 00114 } 00115 else{ 00116 mode[10] = 0; 00117 } 00118 if(XA == 64 && YA == 0){ 00119 mode[11] = 1; 00120 } 00121 else{ 00122 mode[11] = 0; 00123 } 00124 if(XA == 72 && YA == 0){ 00125 mode[12] = 1; 00126 } 00127 else{ 00128 mode[12] = 0; 00129 } 00130 if(XA == 0 && YA == 1){ 00131 mode[13] = 1; 00132 } 00133 else{ 00134 mode[13] = 0; 00135 } 00136 if(XA == 8 && YA == 1){ 00137 mode[14] = 1; 00138 } 00139 else{ 00140 mode[14] = 0; 00141 } 00142 if(XA == 16 && YA == 1){ 00143 mode[15] = 1; 00144 } 00145 else{ 00146 mode[15] = 0; 00147 } 00148 if(XA == 24 && YA == 1){ 00149 mode[16] = 1; 00150 } 00151 else{ 00152 mode[16] = 0; 00153 } 00154 if(XA == 32 && YA == 1){ 00155 mode[17] = 1; 00156 } 00157 else{ 00158 mode[17] = 0; 00159 } 00160 if(XA == 40 && YA == 1){ 00161 mode[18] = 1; 00162 } 00163 else{ 00164 mode[18] = 0; 00165 } 00166 if(XA == 48 && YA == 1){ 00167 mode[19] = 1; 00168 } 00169 else{ 00170 mode[19] = 0; 00171 } 00172 if(XA == 56 && YA == 1){ 00173 mode[20] = 1; 00174 } 00175 else{ 00176 mode[20] = 0; 00177 } 00178 if(XA == 64 && YA == 1){ 00179 mode[21] = 1; 00180 } 00181 else{ 00182 mode[21] = 0; 00183 } 00184 if(XA == 72 && YA == 1){ 00185 mode[22] = 1; 00186 } 00187 else{ 00188 mode[22] = 0; 00189 } 00190 if(XA == 0 && YA == 2){ 00191 mode[23] = 1; 00192 } 00193 else{ 00194 mode[23] = 0; 00195 } 00196 if(XA == 8 && YA == 2){ 00197 mode[24] = 1; 00198 } 00199 else{ 00200 mode[24] = 0; 00201 } 00202 if(XA == 16 && YA == 2){ 00203 mode[25] = 1; 00204 } 00205 else{ 00206 mode[25] = 0; 00207 } 00208 if(XA == 24 && YA == 2){ 00209 mode[26] = 1; 00210 } 00211 else{ 00212 mode[26] = 0; 00213 } 00214 if(XA == 0 && YA == 4){ 00215 mode[27] = 1; 00216 } 00217 else{ 00218 mode[27] = 0; 00219 } 00220 if(XA == 32 && YA == 2){ 00221 mode[28] = 1; 00222 } 00223 else{ 00224 mode[28] = 0; 00225 } 00226 if(XA == 40 && YA == 2){ 00227 mode[29] = 1; 00228 } 00229 else{ 00230 mode[29] = 0; 00231 } 00232 if(XA == 48 && YA == 2){ 00233 mode[31] = 1; 00234 } 00235 else{ 00236 mode[31] = 0; 00237 } 00238 if(XA == 8 && YA == 4){ 00239 mode[30] = 1; 00240 } 00241 else{ 00242 mode[30] = 0; 00243 } 00244 if(XA == 0 && YA == 3){ 00245 mode[32] = 1; 00246 } 00247 else{ 00248 mode[32] = 0; 00249 } 00250 if(XA == 8 && YA == 3){ 00251 mode[33] = 1; 00252 } 00253 else{ 00254 mode[33] = 0; 00255 } 00256 if(XA == 16 && YA == 3){ 00257 mode[34] = 1; 00258 } 00259 else{ 00260 mode[34] = 0; 00261 } 00262 if(XA == 24 && YA == 3){ 00263 mode[35] = 1; 00264 } 00265 else{ 00266 mode[35] = 0; 00267 } 00268 if(XA == 32 && YA == 3){ 00269 mode[36] = 1; 00270 } 00271 else{ 00272 mode[36] = 0; 00273 } 00274 if(XA == 40 && YA == 3){ 00275 mode[37] = 1; 00276 } 00277 else{ 00278 mode[37] = 0; 00279 } 00280 if(XA == 48 && YA == 3){ 00281 mode[38] = 1; 00282 } 00283 else{ 00284 mode[38] = 0; 00285 } 00286 if(XA == 56 && YA == 3){ 00287 mode[39] = 1; 00288 } 00289 else{ 00290 mode[39] = 0; 00291 } 00292 if(XA == 64 && YA == 3){ 00293 mode[40] = 1; 00294 } 00295 else{ 00296 mode[40] = 0; 00297 } 00298 if(XA == 72 && YA == 3){ 00299 mode[41] = 1; 00300 } 00301 else{ 00302 mode[41] = 0; 00303 } 00304 00305 //page 00306 if (page == 0){ 00307 lcd.LCD_clear(); 00308 XA = 0; 00309 if(YA < 2){ 00310 YA = 2; 00311 } 00312 //show menu 00313 lcd.LCD_write_string(0, 0, " Menu ", 0); 00314 lcd.LCD_write_string(0, 1, "--------------", 0); 00315 lcd.LCD_write_string(0, 2, "1.Show speed", mode[2]); 00316 lcd.LCD_write_string(0, 3, "2.Show word", mode[3]); 00317 if(YA > 3){ 00318 YA = 2; 00319 } 00320 if(XA == 0 && YA == 2){ 00321 if(move >= 200 && move <= 215 ){ 00322 page = 1; 00323 XA = 0; 00324 YA = 0; 00325 y = 2; 00326 //pc.putc('1'); 00327 wait(0.3); 00328 } 00329 } 00330 if(XA == 0 && YA == 3){ 00331 if(move >= 200 && move <= 215 ){ 00332 page = 2; 00333 XA = 0; 00334 YA = 0; 00335 func = '!'; 00336 pc.putc(func); 00337 00338 //word.clear(); 00339 wait(0.5); 00340 } 00341 } 00342 } 00343 if (page == 1){ 00344 func = '?'; 00345 pc.putc(func); 00346 lcd.LCD_clear(); 00347 XA = 0; 00348 if(y < 2){ 00349 y = 5; 00350 } 00351 if(y > 5){ 00352 y = 2; 00353 } 00354 if(XA == 0 && y == 5){ 00355 if(move >= 200 && move <= 215 ){ 00356 page = 0; 00357 XA = 0; 00358 YA = 2; 00359 wait(0.3); 00360 } 00361 } 00362 lcd.LCD_write_string(0, 0, " velocity ", 0); 00363 lcd.LCD_write_string(0, 1, "--------------", 0); 00364 lcd.LCD_write_string(0, 5, "back", 1); 00365 lcd.LCD_write_string(60, 4, "km/h", mode[28]); 00366 while(1){ 00367 move = joy.read()*1000; 00368 //printf("y=%d page=%d YA=%d XA=%d move=%.2f mode=%d \n",y,page,YA,XA,move,mode); 00369 y = 5; 00370 if(pc.readable()){ 00371 for (int i =0;i<4;i++){ 00372 V[i] = pc.getc(); 00373 } 00374 nutty.printf("%c \n",V); 00375 lcd.LCD_write_string_big(0, 2, V, mode[28]); 00376 V[0]=' '; 00377 V[1]=' '; 00378 V[2]=' '; 00379 V[3]=' '; 00380 V[4]=' '; 00381 } 00382 if(XA == 0 && y == 5){ 00383 if(move >= 200 && move <= 215 ){ 00384 page = 0; 00385 XA = 0; 00386 YA = 2; 00387 wait(0.3); 00388 break; 00389 } 00390 } 00391 } 00392 00393 00394 } 00395 if (page == 2){ 00396 lcd.LCD_clear(); 00397 if(YA == 2 && XA > 48){ 00398 XA = 0; 00399 } 00400 if(YA == 4 && XA < 0){ 00401 XA = 8; 00402 } 00403 if(YA == 4 && XA > 8){ 00404 XA = 0; 00405 } 00406 if(YA == 2 && XA < 0){ 00407 XA = 48; 00408 } 00409 if(YA < 0){ 00410 YA = 4; 00411 } 00412 if(XA < 0){ 00413 XA = 72; 00414 } 00415 if(YA > 4){ 00416 YA = 0; 00417 } 00418 if(XA > 72){ 00419 XA = 0; 00420 } 00421 00422 //len 00423 if (i > 5){ 00424 i=0; 00425 } 00426 00427 //add word 00428 if(XA == 0 && YA == 0){ 00429 if(move >= 200 && move <= 215 && check == 0 ){ 00430 check = 1 ; 00431 wait(0.3); 00432 } 00433 else if(move >= 200 && move <= 215 && check == 1 ){ 00434 word[i] = 'A'; 00435 i++; 00436 wait(0.3); 00437 } 00438 } 00439 if(XA == 8 && YA == 0){ 00440 if(move >= 200 && move <= 215 ){ 00441 word[i]= 'B'; 00442 i++; 00443 wait(0.3); 00444 } 00445 } 00446 if(XA == 16 && YA == 0){ 00447 if(move >= 200 && move <= 215 ){ 00448 word[i] = 'C'; 00449 i++; 00450 wait(0.3); 00451 } 00452 } 00453 if(XA == 24 && YA == 0){ 00454 if(move >= 200 && move <= 215 ){ 00455 word[i] = 'D'; 00456 i++; 00457 wait(0.3); 00458 } 00459 } 00460 if(XA == 32 && YA == 0){ 00461 if(move >= 200 && move <= 215 ){ 00462 word[i] = 'E'; 00463 i++; 00464 wait(0.3); 00465 } 00466 } 00467 if(XA == 40 && YA == 0){ 00468 if(move >= 200 && move <= 215 ){ 00469 word[i] = 'F'; 00470 i++; 00471 wait(0.3); 00472 } 00473 } 00474 if(XA == 48 && YA == 0){ 00475 if(move >= 200 && move <= 215 ){ 00476 word[i] = 'G'; 00477 i++; 00478 wait(0.3); 00479 } 00480 } 00481 if(XA ==56 && YA == 0){ 00482 if(move >= 200 && move <= 215 ){ 00483 word[i] = 'H'; 00484 i++; 00485 wait(0.3); 00486 } 00487 } 00488 if(XA ==64 && YA == 0){ 00489 if(move >= 200 && move <= 215 ){ 00490 word[i] = 'I'; 00491 i++; 00492 wait(0.3); 00493 } 00494 } 00495 if(XA ==72 && YA == 0){ 00496 if(move >= 200 && move <= 215 ){ 00497 word[i] = 'J'; 00498 i++; 00499 wait(0.3); 00500 } 00501 } 00502 if(XA == 0 && YA == 1){ 00503 if(move >= 200 && move <= 215 ){ 00504 word[i] = 'K'; 00505 i++; 00506 wait(0.3); 00507 } 00508 } 00509 if(XA == 8 && YA == 1){ 00510 if(move >= 200 && move <= 215 ){ 00511 word[i] = 'L'; 00512 i++; 00513 wait(0.3); 00514 } 00515 } 00516 if(XA == 16 && YA == 1){ 00517 if(move >= 200 && move <= 215 ){ 00518 word[i] = 'M'; 00519 i++; 00520 wait(0.3); 00521 } 00522 } 00523 if(XA == 24 && YA == 1){ 00524 if(move >= 200 && move <= 215 ){ 00525 word[i] = 'N'; 00526 i++; 00527 wait(0.3); 00528 } 00529 } 00530 if(XA == 32 && YA == 1){ 00531 if(move >= 200 && move <= 215 ){ 00532 word[i] = 'O'; 00533 i++; 00534 wait(0.3); 00535 } 00536 } 00537 if(XA == 40 && YA == 1){ 00538 if(move >= 200 && move <= 215 ){ 00539 word[i] = 'P'; 00540 i++; 00541 wait(0.3); 00542 } 00543 } 00544 if(XA == 48 && YA == 1){ 00545 if(move >= 200 && move <= 215 ){ 00546 word[i] = 'Q'; 00547 i++; 00548 wait(0.3); 00549 } 00550 } 00551 if(XA ==56 && YA == 1){ 00552 if(move >= 200 && move <= 215 ){ 00553 word[i] = 'R'; 00554 i++; 00555 wait(0.3); 00556 } 00557 } 00558 if(XA ==64 && YA == 1){ 00559 if(move >= 200 && move <= 215 ){ 00560 word[i] = 'S'; 00561 i++; 00562 wait(0.3); 00563 } 00564 } 00565 if(XA ==72 && YA == 1){ 00566 if(move >= 200 && move <= 215 ){ 00567 word[i] = 'T'; 00568 i++; 00569 wait(0.3); 00570 } 00571 } 00572 if(XA == 0 && YA == 2){ 00573 if(move >= 200 && move <= 215 ){ 00574 word[i] = 'U'; 00575 i++; 00576 wait(0.3); 00577 } 00578 } 00579 if(XA == 8 && YA == 2){ 00580 if(move >= 200 && move <= 215 ){ 00581 word[i] = 'V'; 00582 i++; 00583 wait(0.3); 00584 } 00585 } 00586 if(XA == 16 && YA == 2){ 00587 if(move >= 200 && move <= 215 ){ 00588 word[i] = 'W'; 00589 i++; 00590 wait(0.3); 00591 } 00592 } 00593 if(XA == 24 && YA == 2){ 00594 if(move >= 200 && move <= 215 ){ 00595 word[i] = 'X'; 00596 i++; 00597 wait(0.3); 00598 } 00599 } 00600 if(XA == 32 && YA == 2){ 00601 if(move >= 200 && move <= 215 ){ 00602 word[i] = 'Y'; 00603 i++; 00604 wait(0.3); 00605 } 00606 } 00607 if(XA == 40 && YA == 2){ 00608 if(move >= 200 && move <= 215 ){ 00609 word[i] = 'Z'; 00610 i++; 00611 wait(0.3); 00612 } 00613 } 00614 if(XA == 48 && YA == 2){ 00615 if(move >= 200 && move <= 215 ){ 00616 word[i] = ' '; 00617 i++; 00618 wait(0.3); 00619 } 00620 } 00621 if(XA == 0 && YA == 3){ 00622 if(move >= 200 && move <= 215 ){ 00623 word[i] = '1'; 00624 i++; 00625 wait(0.3); 00626 } 00627 } 00628 if(XA == 8 && YA == 3){ 00629 if(move >= 200 && move <= 215 ){ 00630 word[i] = '2'; 00631 i++; 00632 wait(0.3); 00633 } 00634 } 00635 if(XA == 16 && YA == 3){ 00636 if(move >= 200 && move <= 215 ){ 00637 word[i] = '3'; 00638 i++; 00639 wait(0.3); 00640 } 00641 } 00642 if(XA == 24 && YA == 3){ 00643 if(move >= 200 && move <= 215 ){ 00644 word[i] = '4'; 00645 i++; 00646 wait(0.3); 00647 } 00648 } 00649 if(XA == 32 && YA == 3){ 00650 if(move >= 200 && move <= 215 ){ 00651 word[i] = '5'; 00652 i++; 00653 wait(0.3); 00654 } 00655 } 00656 if(XA == 40 && YA == 3){ 00657 if(move >= 200 && move <= 215 ){ 00658 word[i] = '6'; 00659 i++; 00660 wait(0.3); 00661 } 00662 } 00663 if(XA == 48 && YA == 3){ 00664 if(move >= 200 && move <= 215 ){ 00665 word[i] = '7'; 00666 i++; 00667 wait(0.3); 00668 } 00669 } 00670 if(XA == 56 && YA == 3){ 00671 if(move >= 200 && move <= 215 ){ 00672 word[i] = '8'; 00673 i++; 00674 wait(0.3); 00675 } 00676 } 00677 if(XA == 64 && YA == 3){ 00678 if(move >= 200 && move <= 215 ){ 00679 word[i] = '9'; 00680 i++; 00681 wait(0.3); 00682 } 00683 } 00684 if(XA == 72 && YA == 3){ 00685 if(move >= 200 && move <= 215 ){ 00686 word[i] = '0'; 00687 i++; 00688 wait(0.3); 00689 } 00690 } 00691 00692 //show select 00693 lcd.LCD_write_string(0, 0, "A", mode[0]); 00694 lcd.LCD_write_string(8, 0, "B", mode[1]); 00695 lcd.LCD_write_string(16, 0, "C", mode[4]); 00696 lcd.LCD_write_string(24, 0, "D", mode[6]); 00697 lcd.LCD_write_string(32, 0, "E", mode[7]); 00698 lcd.LCD_write_string(40, 0, "F", mode[8]); 00699 lcd.LCD_write_string(48, 0, "G", mode[9]); 00700 lcd.LCD_write_string(56, 0, "H", mode[10]); 00701 lcd.LCD_write_string(64, 0, "I", mode[11]); 00702 lcd.LCD_write_string(72, 0, "J", mode[12]); 00703 lcd.LCD_write_string(0, 1, "K", mode[13]); 00704 lcd.LCD_write_string(8, 1, "L", mode[14]); 00705 lcd.LCD_write_string(16, 1, "M", mode[15]); 00706 lcd.LCD_write_string(24, 1, "N", mode[16]); 00707 lcd.LCD_write_string(32, 1, "O", mode[17]); 00708 lcd.LCD_write_string(40, 1, "P", mode[18]); 00709 lcd.LCD_write_string(48, 1, "Q", mode[19]); 00710 lcd.LCD_write_string(56, 1, "R", mode[20]); 00711 lcd.LCD_write_string(64, 1, "S", mode[21]); 00712 lcd.LCD_write_string(72, 1, "T", mode[22]); 00713 lcd.LCD_write_string(0, 2, "U", mode[23]); 00714 lcd.LCD_write_string(8, 2, "V", mode[24]); 00715 lcd.LCD_write_string(16, 2, "W", mode[25]); 00716 lcd.LCD_write_string(24, 2, "X", mode[26]); 00717 lcd.LCD_write_string(32, 2, "Y", mode[28]); 00718 lcd.LCD_write_string(40, 2, "Z", mode[29]); 00719 lcd.LCD_write_string(48, 2, "space", mode[31]); 00720 lcd.LCD_write_string(0, 3, "1", mode[32]); 00721 lcd.LCD_write_string(8, 3, "2", mode[33]); 00722 lcd.LCD_write_string(16, 3, "3", mode[34]); 00723 lcd.LCD_write_string(24, 3, "4", mode[35]); 00724 lcd.LCD_write_string(32, 3, "5", mode[36]); 00725 lcd.LCD_write_string(40, 3, "6", mode[37]); 00726 lcd.LCD_write_string(48, 3, "7", mode[38]); 00727 lcd.LCD_write_string(56, 3, "8", mode[39]); 00728 lcd.LCD_write_string(64, 3, "9", mode[40]); 00729 lcd.LCD_write_string(72, 3, "0", mode[41]); 00730 lcd.LCD_write_string(0, 5, "back", mode[27]); 00731 lcd.LCD_write_string(56, 5, "sent", mode[30]); 00732 lcd.LCD_write_string(13, 4, "<", 0); 00733 lcd.LCD_write_string(22, 4, word,0); 00734 lcd.LCD_write_string(60, 4, ">", 0); 00735 00736 if(XA == 0 && YA == 4){ 00737 if(move >= 200 && move <= 215 ){ 00738 page = 0; 00739 check = 0 ; 00740 XA = 0; 00741 YA = 2; 00742 i=0; 00743 wait(0.3); 00744 } 00745 } 00746 if(XA == 8 && YA == 4){ 00747 if(move >= 200 && move <= 215 ){ 00748 pc.putc('&'); 00749 for (int i =0; i<6 ;i++) 00750 { 00751 pc.putc(word[i]); 00752 wait(0.3); 00753 } 00754 page = 3; 00755 } 00756 } 00757 } 00758 if (page == 3){ 00759 lcd.LCD_clear(); 00760 //show word 00761 lcd.LCD_write_string(0, 0, " word ", 0); 00762 lcd.LCD_write_string(0, 1, "--------------", 0); 00763 lcd.LCD_write_string(22, 3, word, 0); 00764 lcd.LCD_write_string(0, 5, "back", 1); 00765 XA = 1; 00766 YA = 1; 00767 int chk; 00768 if(XA == 1 && YA == 1 && move > 250) 00769 { 00770 XA = 0; 00771 YA = 5; 00772 chk = 0; 00773 } 00774 while(chk == 0) 00775 { 00776 move = joy.read()*1000; 00777 if(XA==0 && YA==5 && move >= 200 && move <= 215){ 00778 page = 2; 00779 XA = 0; 00780 YA = 0; 00781 word[0] = ' '; 00782 word[1] = ' '; 00783 word[2] = ' '; 00784 word[3] = ' '; 00785 word[4] = ' '; 00786 word[5] = ' '; 00787 wait(0.3); 00788 chk = 1; 00789 check = 0; 00790 } 00791 } 00792 } 00793 00794 } 00795 } 00796
Generated on Mon Jul 25 2022 10:41:15 by
1.7.2
