Código para o menu no LCD
Dependencies: mbed SDFileSystemSD TextLCD
Fork of TextLCD_HelloWorld2 by
main.cpp
- Committer:
- claraluques
- Date:
- 2018-05-12
- Revision:
- 15:043bb371a50b
- Parent:
- 14:ec8d10a34a2c
- Child:
- 16:6912d19a0016
File content as of revision 15:043bb371a50b:
/*CÓDIGO PARA LCD MENU HELLEN - GRUPO T*/ #include "mbed.h" #include "TextLCD.h" // Host PC Communication channels Serial pc(USBTX, USBRX); // tx, rx //não apagar //I2C Communication I2C i2c_lcd(D14,D15); // SDA, SCL //não apagar //Botão push InterruptIn botao_enter(D13); InterruptIn botao_cima(D10); InterruptIn botao_baixo(D9); //LCD instantiation TextLCD_I2C lcd(&i2c_lcd, 0x7E, TextLCD::LCD20x4); //não apagar //variáveis int int bot_enter; int bot_cima; int bot_baixo; int penter = 0; int pcima = 0; int pbaixo = 0; int cola; int exec; int select = 0; int pontos = 10; //variáveis float float cx = 120.458; float cy = 457.854; float cz = 782.659; float cx_salva; float cy_salva; float cz_salva; //funções interrupt void botenter_press(void); void botenter_solto(void); void botcima_press(void); void botcima_solto(void); void botbaixo_press(void); void botbaixo_solto(void); //criar classe "menu" (funções para as telas) class Menu{ public: int linha; int func; void movercursor(int min, int max, int col){ //função para mover cursor de seleção linha = min; lcd.locate(col,min); lcd.printf("%c", 0x3E); while (bot_enter==penter){ if (bot_cima==1){ if (linha==min){ lcd.locate(col,min); lcd.printf(" "); linha=max; lcd.locate(col, linha); lcd.printf("%c", 0x3E); } else { lcd.locate(col,linha); lcd.printf(" "); linha--; lcd.locate(col, linha); lcd.printf("%c", 0x3E); } bot_cima = 0; } if (bot_baixo==1){ if (linha==max){ lcd.locate(col,max); lcd.printf(" "); linha=min; lcd.locate(col, linha); lcd.printf("%c", 0x3E); } else { lcd.locate(col,linha); lcd.printf(" "); linha++; lcd.locate(col, linha); lcd.printf("%c", 0x3E); } bot_baixo = 0; } } } //func 0 void inicializar(){ //função tela incial de boas-vindas lcd.cls(); lcd.locate(4,0); lcd.printf("Bem-vindo(a)"); lcd.locate(0,1); lcd.printf("Utilize seu EPI para operar a maquina."); wait(1); func = 1; } //func 1 void menuprincipal(){ //função menu principal bot_enter = 0; lcd.cls(); lcd.locate(1,0); lcd.printf("Modo JOG"); lcd.locate(1,1); lcd.printf("Modo Automatico"); lcd.locate(1,2); lcd.printf("Config"); lcd.locate(1,3); lcd.printf("Zerar"); movercursor(0,3,0); if (bot_enter!=penter){ if (linha==0){ func = 2; } else if (linha==1) { func = 3; } else if (linha==2) { func = 4; } else if (linha==3) { func = 8; } } } //func 2 void jog(){ //função tela jog bot_enter = 0; lcd.cls(); lcd.locate(4,0); lcd.printf("Coordenadas:"); lcd.locate(0,1); lcd.printf("X: "); lcd.locate(0,2); lcd.printf("Y: "); lcd.locate(0,3); lcd.printf("Z: "); lcd.locate(11,1); lcd.printf("Salvar"); lcd.locate(11,2); lcd.printf("Concluir"); lcd.locate(11,3); lcd.printf("Cancelar"); movercursor(1,3,10); if (bot_enter!=penter){ if (linha==1){ if (pontos>0){ pontos--; cx_salva = cx; cy_salva = cy; cz_salva = cz; func = 5; } else if (pontos==0){ func = 16; } } else if (linha==2) { func = 7; } else if (linha==3) { func = 1; pontos = 10; } } } //func 3 void automatico(){ //tela modo automatico lcd.cls(); bot_enter = 0; lcd.printf("Modo automatico"); lcd.locate(7,2); lcd.printf("OK"); lcd.locate(7,3); lcd.printf("Voltar"); movercursor(2,3,6); if (bot_enter!=penter) { if (linha==2){ func = 12; } else if (linha==3){ func = 1; } } } //func 4 void config() { lcd.cls(); bot_enter = 0; lcd.locate(1,0); lcd.printf("Definir velocidade"); lcd.locate(1,1); lcd.printf("Limpar seringa cola"); lcd.locate(1,2); lcd.printf("Desligar a maquina"); lcd.locate(1,3); lcd.printf("Voltar"); movercursor(0,3,0); if (bot_enter!=penter){ if (linha==0) { func = 13; } else if (linha==1) { func = 14; } else if (linha==2) { func = 15; } else if (linha==3) { func = 1; } } } //func 5 void telasalvamento(){ //função para quando salvar um ponto lcd.cls(); lcd.locate(0,0); lcd.printf("Voce salvou"); lcd.locate(1,1); lcd.printf("X:%.3f", cx_salva); lcd.locate(1,2); lcd.printf("Y:%.3f", cy_salva); lcd.locate(1,3); lcd.printf("Z:%.3f", cz_salva); lcd.locate(13,1); lcd.printf("Pontos"); lcd.locate(13,2); lcd.printf("livres"); lcd.locate(16,3); lcd.printf("%d", pontos); wait(1); if (pontos>0){ func = 6; } else if (pontos==0){ func = 2; } } //func 6 void telacola(){ //tela para escolher o tipo de sequencia da cola lcd.cls(); bot_enter = 0; lcd.printf("P/ o proximo ponto:"); lcd.locate(3,1); lcd.printf("Sem cola"); lcd.locate(3,2); lcd.printf("Cola no ponto"); lcd.locate(3,3); lcd.printf("Cola continua"); movercursor(1,3,2); if (bot_enter!=penter){ if (linha==1){ cola = 0; func = 2; } else if (linha==2) { cola = 1; func = 2; } else if (linha==3) { cola = 2; func = 2; } } } //func 7 void executarprograma() { //tela para selecionar se deseja executar o programa lcd.cls(); bot_enter = 0; lcd.locate(2,0); lcd.printf("VOCE CONCLUIU SEU"); lcd.locate(5,1); lcd.printf("PROGRAMA."); lcd.locate(0,2); lcd.printf("Deseja"); lcd.locate(0,3); lcd.printf("executa-lo?"); lcd.locate(14,2); lcd.printf("Sim"); lcd.locate(14,3); lcd.printf("Voltar"); movercursor(2,3,13); if (bot_enter!=penter) { if (linha==2){ exec = 1; func = 9; } else if (linha==3){ exec = 0; func = 2; } } } //func 8 void telazerar(){ //tela para zerar a máquina lcd.cls(); bot_enter = 0; lcd.locate(2,0); lcd.printf("Pressione OK para zerar as coordenadas"); lcd.locate(7,2); lcd.printf("OK"); lcd.locate(7,3); lcd.printf("Voltar"); movercursor(2,3,6); if (bot_enter!=penter) { if (linha==2){ cx = 0; cy = 0; cz = 0; func = 10; } else if (linha==3){ func = 1; } } } //func 9 void executando(){ //tela de executando lcd.cls(); lcd.locate(4,1); lcd.printf("Executando"); int contador = 0; while (exec==1){ lcd.locate(14,1); lcd.printf(". "); wait(0.5); lcd.locate(14,1); lcd.printf(".. "); wait(0.5); lcd.locate(14,1); lcd.printf("..."); wait(0.5); lcd.locate(14,1); lcd.printf(" "); wait(0.5); contador++; if (contador>=2){ exec = 0; func = 11; } } } //func 10 void zerado() { //tela avisando que a máquina foi zerada lcd.cls(); lcd.locate(5,1); lcd.printf("Voce zerou"); lcd.locate(5,2); lcd.printf("a maquina!"); wait(1); func = 8; } //func 11 void finalizado() { //tela aviso programa finalizado lcd.cls(); lcd.locate(6,1); lcd.printf("PROGRAMA"); lcd.locate(5,2); lcd.printf("FINALIZADO"); wait(1); func = 1; } //func 12 //func 13 //func 14 //func 15 //func 16 void limitepontos(){ //tela para quando acabam os pontos lcd.cls(); lcd.printf(" Voce atingiu o n%c maximo de pontos.", 0xDF); lcd.locate(0,3); lcd.printf("Conclua seu programa"); wait(1); func = 2; } Menu(); //não apagar }; Menu::Menu(){ //não apagar func = 0; } Menu menu; int main () { lcd.setBacklight(TextLCD::LightOn); //liga backlight lcd.setCursor(TextLCD::CurOff_BlkOff); //define tipo de cursor botao_enter.rise(&botenter_press); //chama função botao enter botao_cima.rise(&botcima_press); //chama função botao para cima botao_baixo.rise(&botbaixo_press); //chama função bota para baixo while(1){ switch(menu.func){ //faz com que as telas sejam iniciadas case 0: menu.inicializar(); break; case 1: menu.menuprincipal(); break; case 2: menu.jog(); break; case 3: menu.automatico(); break; case 4: menu.config(); break; case 5: menu.telasalvamento(); break; case 6: menu.telacola(); break; case 7: menu.executarprograma(); break; case 8: menu.telazerar(); break; case 9: menu.executando(); break; case 10: menu.zerado(); break; case 11: menu.finalizado(); break; case 16: menu.limitepontos(); break; } } } //função interrupt botão enter void botenter_press(void){ penter = bot_enter; bot_enter = !bot_enter; printf("enter high"); } //função interrupt botão cima void botcima_press(void){ pcima = bot_cima; bot_cima = !bot_cima; printf("cima high"); } //função interrupt botão baixo void botbaixo_press(void){ pbaixo = bot_baixo; bot_baixo = !bot_baixo; printf("baixo high"); }