Código para o menu no LCD
Dependencies: mbed SDFileSystemSD TextLCD
Fork of TextLCD_HelloWorld2 by
main.cpp
- Committer:
- claraluques
- Date:
- 2018-05-10
- Revision:
- 8:b80f50544ddd
- Parent:
- 7:e2c1b0338286
- Child:
- 9:86b5a317fcd4
File content as of revision 8:b80f50544ddd:
#include "mbed.h" #include "TextLCD.h" /* // Host PC Communication channels Serial pc(USBTX, USBRX); // tx, rx //I2C Communication I2C i2c_lcd(D14,D15); // SDA, SCL //Botão push InterruptIn botao(D7); //LCD instantiation TextLCD_I2C lcd(&i2c_lcd, 0x7E, TextLCD::LCD20x4); // I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type //variáveis int int colunas = lcd.columns(); int linhas = lcd.rows(); int c1 = 510000000; int pontosl = 10; int botpres; //variáveis float float coordx = 123; float coardy = 456; float coardz = 789; //funções void botao_press(void); void botao_solto(void); int main() { lcd.setBacklight(TextLCD::LightOn); //liga backlight lcd.cls(); lcd.printf("Certifique-se de que voce esta seguro para comecar"); botao.rise(&botao_press); botao.fall(&botao_solto); wait(2); while(1){ while(1) { if (c1>500000000) { lcd.cls(); lcd.printf("FUNCAO JOG"); lcd.locate(0,1); //lcd.printf("X: %.1f Y: %d.1 Z: %d.1", coordx, coordy, coordz); lcd.locate(0,2); lcd.printf("Aperte > ok p/ salvar o ponto %c", 0x3E); //wait(0.5) //lcd.printf("Aperte ok p/ salvar o ponto %c", 0xff); InterruptIn botao(D7); c1 = 0; } c1++; if(botpres) { //se pressionado, aparece a tela de ponto salvo com contagem de pontos restantes lcd.cls(); lcd.locate(0,0); lcd.printf("Voce salvou um ponto"); lcd.locate(0,2); pontosl--; lcd.printf("Pontos livres: %d",pontosl); wait(2); c1=510000000; break; } } } } void botao_press(void){ botpres = 1; printf("pressionado\n\r"); } void botao_solto(void) { botpres = 0; printf("solto\n\r"); } */ //#include mbed.h //#include "TextLCD.h" // Host PC Communication channels Serial pc(USBTX, USBRX); // tx, rx //I2C Communication I2C i2c_lcd(D14,D15); // SDA, SCL //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); // I2C exp: I2C bus, PCF8574 Slaveaddress, LCD Type //variáveis int //int max = 3; //int min = 0; int bot_enter; int bot_cima; int bot_baixo; int penter = 0; int pcima = 0; int pbaixo = 0; //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 das telas) class Menu{ public: int linha; //int coluna; 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; } //lcd.locate(col, linha); //lcd.printf("%c", 0x3E); //printf("%d \n\r",linha); //printf("%d %d %d \n\r", bot_enter, bot_cima, bot_baixo); //wait_ms(500); } //printf("%d \n\r",linha); } //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(5); func = 1; } //func 1 void menuprincipal(){ //função menu principal //penter = bot_enter; 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"); movercursor(0,2,0); if (bot_enter!=penter){ if (linha==0){ func = 2; } else if (linha==1) { func = 3; } else if (linha==2) { func = 4; } } } //func 2 void jog(){ //função tela jog //penter = bot_enter; lcd.cls(); lcd.locate(4,0); lcd.printf("Coordenadas:"); lcd.locate(0,1); lcd.printf("X:%.3f", cx); lcd.locate(0,2); lcd.printf("Y:%.3f", cy); lcd.locate(0,3); lcd.printf("Z:%.3f", cz); 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){ func = 5; cx_salva = cx; cy_salva = cy; cz_salva = cz; } else if (linha==2) { func = 7; } else if (linha==3) { func = 1; } } } //func 5 void telasalvamento(){ lcd.cls(); lcd.locate(0,0); lcd.printf("Voce salvou o ponto:"); lcd.locate(4,1); lcd.printf("X:%.3f", cx_salva); lcd.locate(4,2); lcd.printf("Y:%.3f", cy_salva); lcd.locate(4,3); lcd.printf("Z:%.3f", cz_salva); wait(5); func = 6; } Menu(); }; Menu::Menu(){ func = 0; } Menu menu; int main () { lcd.setBacklight(TextLCD::LightOn); //liga backlight lcd.setCursor(TextLCD::CurOff_BlkOff); botao_enter.rise(&botenter_press); //botao_enter.fall(&botenter_solto); botao_cima.rise(&botcima_press); //botao_cima.fall(&botcima_solto); botao_baixo.rise(&botbaixo_press); //botao_baixo.fall(&botbaixo_solto); while(1){ //printf("%d %d %d \n\r", bot_enter, bot_cima, bot_baixo); switch(menu.func){ case 0: menu.inicializar(); break; case 1: menu.menuprincipal(); break; case 2: menu.jog(); break; //case 3: menu.notReferenced(2); break; //case 4: menu.notReferenced(3); break; //case 5: menu.referencing(); break; //case 6: menu.rootMenu(); break; //case 7: menu.manualControl(); break; //case 8: menu.positions(); break; //case 9: menu.selectPos(); break; //case 10: menu.selectPos(2); break; //case 11: menu.selectPos(3); break; //case 12: menu.run(); break; } } } //função interrupt botão enter void botenter_press(void){ penter = bot_enter; bot_enter = !bot_enter; printf("enter high"); } /*void botenter_solto(void) { penter = bot_enter; bot_enter = !bot_enter; printf("enter low"); }*/ //função interrupt botão cima void botcima_press(void){ pcima = bot_cima; bot_cima = !bot_cima; printf("cima high"); } /*void botcima_solto(void) { pcima = bot_cima; bot_cima = !bot_cima; printf("cima low"); }*/ //função interrupt botão baixo void botbaixo_press(void){ pbaixo = bot_baixo; bot_baixo = !bot_baixo; printf("baixo high"); } /*void botbaixo_solto(void) { pbaixo = bot_baixo; bot_baixo = !bot_baixo; printf("baixo low"); }*/