eiei

Dependencies:   LCD4884 mbed

Fork of test by parinya sahub

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

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