eiei

Dependencies:   LCD4884 mbed

Fork of test by parinya sahub

main.cpp

Committer:
toiy01344
Date:
2017-12-11
Revision:
0:6ac9ce3391e2

File content as of revision 0:6ac9ce3391e2:

#include "mbed.h"
#include "LCD4884.h"
#include <iostream>

#define MENU_X 1
#define MENU_Y 1
AnalogIn joy(A0);
LCD4884 lcd;
Serial pc(PA_15,PB_7);
Serial nutty(D1,D0);
char func ;
int i=0;
int y=2;          
int XA=0;
int YA=2;
int check = 0;
char mode[42];
int page = 0;
float move=0;
char V[5];
char word[42];


int main(){
    lcd.backlight(ON);
    lcd.LCD_init();
    pc.baud(38400);
    
    while(1){
        
    printf("y=%d   page=%d   YA=%d   XA=%d   move=%.2f   mode=%d\n",y,page,YA,XA,move,mode);
        move = joy.read()*1000;
        if(move >= 0 && move <= 5){
            XA -= 8; //left
            wait(0.3);
        }
        if(move >= 475 && move <= 490){
            YA += 1; //down
            y += 3; 
            wait(0.3);
        }
        if(move >= 700 && move <= 745){
            XA += 8; //right
            wait(0.3);
        }
        if(move >= 900){
            YA -= 1; //up
            y -= 3;
            wait(0.3);
        }
        //switch
        if(XA == 0 && YA == 0){
            mode[0] = 1;
            }
        else{
            mode[0] = 0;   
            } 
        if(XA == 0 && YA == 2){
            mode[2] = 1;
            }
        else{
            mode[2] = 0;   
            }
        if(XA == 0 && YA == 3){
            mode[3] = 1;
            }
        else{
            mode[3] = 0;   
            }
        if(XA == 0 && y == 5){
            mode[5] = 1;
            }
        else{
            mode[5] = 0;   
            }
        if(XA == 8 && YA == 0){
            mode[1] = 1;
            }
        else{
            mode[1] = 0;   
            }
        if(XA == 16 && YA == 0){
            mode[4] = 1;
            }
        else{
            mode[4] = 0;   
            }
        if(XA == 24 && YA == 0){
            mode[6] = 1;
            }
        else{
            mode[6] = 0;   
            }
        if(XA == 32 && YA == 0){
            mode[7] = 1;
            }
        else{
            mode[7] = 0;   
            }
        if(XA == 40 && YA == 0){
            mode[8] = 1;
            }
        else{
            mode[8] = 0;   
            }
        if(XA == 48 && YA == 0){
            mode[9] = 1;
            }
        else{
            mode[9] = 0;   
            }
        if(XA == 56 && YA == 0){
            mode[10] = 1;
            }
        else{
            mode[10] = 0;   
            }
        if(XA == 64 && YA == 0){
            mode[11] = 1;
            }
        else{
            mode[11] = 0;   
            }
        if(XA == 72 && YA == 0){
            mode[12] = 1;
            }
        else{
            mode[12] = 0;   
            }    
        if(XA == 0 && YA == 1){
            mode[13] = 1;
            }
        else{
            mode[13] = 0;   
            }
        if(XA == 8 && YA == 1){
            mode[14] = 1;
            }
        else{
            mode[14] = 0;   
            }
        if(XA == 16 && YA == 1){
            mode[15] = 1;
            }
        else{
            mode[15] = 0;   
            }
        if(XA == 24 && YA == 1){
            mode[16] = 1;
            }
        else{
            mode[16] = 0;   
            }
        if(XA == 32 && YA == 1){
            mode[17] = 1;
            }
        else{
            mode[17] = 0;   
            }
        if(XA == 40 && YA == 1){
            mode[18] = 1;
            }
        else{
            mode[18] = 0;   
            }
        if(XA == 48 && YA == 1){
            mode[19] = 1;
            }
        else{
            mode[19] = 0;   
            }
        if(XA == 56 && YA == 1){
            mode[20] = 1;
            }
        else{
            mode[20] = 0; 
            }
        if(XA == 64 && YA == 1){
            mode[21] = 1;
            }
        else{
            mode[21] = 0; 
            }
        if(XA == 72 && YA == 1){
            mode[22] = 1;
            }
        else{
            mode[22] = 0; 
            }        
        if(XA == 0 && YA == 2){
            mode[23] = 1;
            }
        else{
            mode[23] = 0;   
            }
        if(XA == 8 && YA == 2){
            mode[24] = 1;
            }
        else{
            mode[24] = 0;   
            }
        if(XA == 16 && YA == 2){
            mode[25] = 1;
            }
        else{
            mode[25] = 0;   
            }
        if(XA == 24 && YA == 2){
            mode[26] = 1;
            }
        else{
            mode[26] = 0;   
            }
        if(XA == 0 && YA == 4){
            mode[27] = 1;
            }
        else{
            mode[27] = 0;   
            }
        if(XA == 32 && YA == 2){
            mode[28] = 1;
            }
        else{
            mode[28] = 0;   
            }
        if(XA == 40 && YA == 2){
            mode[29] = 1;
            }
        else{
            mode[29] = 0;   
            }
        if(XA == 48  && YA == 2){
            mode[31] = 1;
            }
        else{
            mode[31] = 0;   
            }    
        if(XA == 8 && YA == 4){
            mode[30] = 1;
            }
        else{
            mode[30] = 0;   
            }    
        if(XA == 0  && YA == 3){
            mode[32] = 1;
            }
        else{
            mode[32] = 0;   
            }
        if(XA == 8  && YA == 3){
            mode[33] = 1;
            }
        else{
            mode[33] = 0;   
            }
        if(XA == 16  && YA == 3){
            mode[34] = 1;
            }
        else{
            mode[34] = 0;   
            }
        if(XA == 24  && YA == 3){
            mode[35] = 1;
            }
        else{
            mode[35] = 0;   
            }      
        if(XA == 32  && YA == 3){
            mode[36] = 1;
            }
        else{
            mode[36] = 0;   
            }
        if(XA == 40  && YA == 3){
            mode[37] = 1;
            }
        else{
            mode[37] = 0;   
            }                      
        if(XA == 48  && YA == 3){
            mode[38] = 1;
            }
        else{
            mode[38] = 0;   
            }
        if(XA == 56  && YA == 3){
            mode[39] = 1;
            }
        else{
            mode[39] = 0;   
            }
        if(XA == 64  && YA == 3){
            mode[40] = 1;
            }
        else{
            mode[40] = 0;   
            }
        if(XA == 72  && YA == 3){
            mode[41] = 1;
            }
        else{
            mode[41] = 0;   
            }    
                    
        //page                                                         
        if (page == 0){
            lcd.LCD_clear();  
            XA = 0;
            if(YA < 2){
                YA = 2;
            }
            //show menu    
            lcd.LCD_write_string(0, 0, "     Menu     ", 0);
            lcd.LCD_write_string(0, 1, "--------------", 0);
            lcd.LCD_write_string(0, 2, "1.Show speed", mode[2]);
            lcd.LCD_write_string(0, 3, "2.Show word", mode[3]);
            if(YA > 3){
                YA = 2;
            }
            if(XA == 0 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    page = 1;
                    XA = 0; 
                    YA = 0;
                    y = 2;
                    //pc.putc('1');
                    wait(0.3);
                    }
            }
            if(XA == 0 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    page = 2;
                    XA = 0; 
                    YA = 0;
                    func = '!';
                    pc.putc(func);
                    
                    //word.clear();
                    wait(0.5);
                    }
            }
        }
        if (page == 1){
            func = '?';
            pc.putc(func);
            lcd.LCD_clear(); 
            XA = 0;
            if(y < 2){
                y = 5;
            }
            if(y > 5){
                y = 2;
            }
            if(XA == 0 && y == 5){    
                if(move >= 200 && move <= 215 ){
                    page = 0;
                    XA = 0; 
                    YA = 2;
                    wait(0.3);
                    }
            }    
            lcd.LCD_write_string(0, 0, "   velocity   ", 0);
            lcd.LCD_write_string(0, 1, "--------------", 0);
            lcd.LCD_write_string(0, 5, "back", 1);
            lcd.LCD_write_string(60, 4, "km/h", mode[28]);
            while(1){
            move = joy.read()*1000;
            //printf("y=%d   page=%d   YA=%d   XA=%d   move=%.2f   mode=%d \n",y,page,YA,XA,move,mode);
            y = 5;
            if(pc.readable()){
                for (int i =0;i<4;i++){
                    V[i] = pc.getc();
                }
                nutty.printf("%c \n",V);
                lcd.LCD_write_string_big(0, 2, V, mode[28]);
                V[0]=' ';
                V[1]=' ';
                V[2]=' ';
                V[3]=' ';
                V[4]=' ';
                }
             if(XA == 0 && y == 5){    
                if(move >= 200 && move <= 215 ){
                    page = 0;
                    XA = 0; 
                    YA = 2;
                    wait(0.3);
                    break;
                    }
            }    
            }
            
            
        }
        if (page == 2){
            lcd.LCD_clear();
            if(YA == 2 && XA > 48){
                XA = 0;    
            }
            if(YA == 4 && XA < 0){
                XA = 8;    
            }
            if(YA == 4 && XA > 8){
                XA = 0;    
            }
            if(YA == 2 && XA < 0){
                XA = 48;    
            }  
            if(YA < 0){
                YA = 4;
            }
            if(XA < 0){
                XA = 72;
            }
            if(YA > 4){
                YA = 0;
            }
            if(XA > 72){
                XA = 0;
            }   
            
            //len
            if (i > 5){
                i=0;
            }
            
            //add word                
            if(XA == 0 && YA == 0){ 
                if(move >= 200 && move <= 215 && check == 0 ){
                    check = 1 ;
                    wait(0.3);
                    }
                else if(move >= 200 && move <= 215 && check == 1 ){
                    word[i] = 'A';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 8 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i]= 'B';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 16 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'C';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 24 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'D';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 32 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'E';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 40 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'F';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 48 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'G';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA ==56 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'H';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA ==64 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'I';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA ==72 && YA == 0){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'J';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 0 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'K';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 8 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'L';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 16 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'M';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 24 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'N';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 32 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'O';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 40 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'P';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 48 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'Q';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA ==56 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'R';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA ==64 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'S';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA ==72 && YA == 1){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'T';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 0 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'U';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 8 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'V';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 16 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'W';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 24 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'X';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 32 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'Y';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 40 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    word[i] = 'Z';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 48 && YA == 2){    
                if(move >= 200 && move <= 215 ){
                    word[i] = ' ';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 0 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '1';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 8 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '2';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 16 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '3';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 24 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '4';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 32 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '5';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 40 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '6';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 48 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '7';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 56 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '8';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 64 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '9';
                    i++;
                    wait(0.3);
                    }
            }
            if(XA == 72 && YA == 3){    
                if(move >= 200 && move <= 215 ){
                    word[i] = '0';
                    i++;
                    wait(0.3);
                    }
            }
            
            //show select
            lcd.LCD_write_string(0, 0, "A", mode[0]);
            lcd.LCD_write_string(8, 0, "B", mode[1]);
            lcd.LCD_write_string(16, 0, "C", mode[4]);
            lcd.LCD_write_string(24, 0, "D", mode[6]);
            lcd.LCD_write_string(32, 0, "E", mode[7]);
            lcd.LCD_write_string(40, 0, "F", mode[8]);
            lcd.LCD_write_string(48, 0, "G", mode[9]);
            lcd.LCD_write_string(56, 0, "H", mode[10]);
            lcd.LCD_write_string(64, 0, "I", mode[11]);
            lcd.LCD_write_string(72, 0, "J", mode[12]);
            lcd.LCD_write_string(0, 1, "K", mode[13]);
            lcd.LCD_write_string(8, 1, "L", mode[14]);
            lcd.LCD_write_string(16, 1, "M", mode[15]);
            lcd.LCD_write_string(24, 1, "N", mode[16]);
            lcd.LCD_write_string(32, 1, "O", mode[17]);
            lcd.LCD_write_string(40, 1, "P", mode[18]);
            lcd.LCD_write_string(48, 1, "Q", mode[19]);
            lcd.LCD_write_string(56, 1, "R", mode[20]);
            lcd.LCD_write_string(64, 1, "S", mode[21]);
            lcd.LCD_write_string(72, 1, "T", mode[22]);
            lcd.LCD_write_string(0, 2, "U", mode[23]);
            lcd.LCD_write_string(8, 2, "V", mode[24]);
            lcd.LCD_write_string(16, 2, "W", mode[25]);
            lcd.LCD_write_string(24, 2, "X", mode[26]);
            lcd.LCD_write_string(32, 2, "Y", mode[28]);
            lcd.LCD_write_string(40, 2, "Z", mode[29]);
            lcd.LCD_write_string(48, 2, "space", mode[31]);
            lcd.LCD_write_string(0, 3, "1", mode[32]);
            lcd.LCD_write_string(8, 3, "2", mode[33]);
            lcd.LCD_write_string(16, 3, "3", mode[34]);
            lcd.LCD_write_string(24, 3, "4", mode[35]);
            lcd.LCD_write_string(32, 3, "5", mode[36]);
            lcd.LCD_write_string(40, 3, "6", mode[37]);
            lcd.LCD_write_string(48, 3, "7", mode[38]);
            lcd.LCD_write_string(56, 3, "8", mode[39]);
            lcd.LCD_write_string(64, 3, "9", mode[40]);
            lcd.LCD_write_string(72, 3, "0", mode[41]);
            lcd.LCD_write_string(0, 5, "back", mode[27]);
            lcd.LCD_write_string(56, 5, "sent", mode[30]);
            lcd.LCD_write_string(13, 4, "<", 0);
            lcd.LCD_write_string(22, 4, word,0);
            lcd.LCD_write_string(60, 4, ">", 0);
            
            if(XA == 0 && YA == 4){    
                if(move >= 200 && move <= 215 ){
                    page = 0;
                    check = 0 ;
                    XA = 0; 
                    YA = 2;
                    i=0;
                    wait(0.3);  
                    }
            }
            if(XA == 8 && YA == 4){    
                if(move >= 200 && move <= 215 ){
                    pc.putc('&');
                    for (int i =0; i<6 ;i++)
                    {
                        pc.putc(word[i]);
                        wait(0.3);
                    }
                    page = 3;
                    }
            }    
        }
        if (page == 3){
            lcd.LCD_clear();  
            //show word    
            lcd.LCD_write_string(0, 0, "    word    ", 0);
            lcd.LCD_write_string(0, 1, "--------------", 0);
            lcd.LCD_write_string(22, 3, word, 0);
            lcd.LCD_write_string(0, 5, "back", 1);
            XA = 1;
            YA = 1;
            int chk;
            if(XA == 1 && YA == 1 && move > 250)
            {
                XA = 0;
                YA = 5;
                chk = 0;
            }
            while(chk == 0)
            {
                move = joy.read()*1000;
                if(XA==0 && YA==5 && move >= 200 && move <= 215){
                    page = 2;
                    XA = 0;
                    YA = 0;
                    word[0] = ' ';
                    word[1] = ' '; 
                    word[2] = ' '; 
                    word[3] = ' '; 
                    word[4] = ' '; 
                    word[5] = ' ';  
                    wait(0.3);
                    chk = 1;
                    check = 0;
                    }
            }
            }
                    
        }
    }