Robótica Livre
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Ir para baixo
brunodavidsteiner
brunodavidsteiner
Mensagens : 96
Data de inscrição : 21/05/2022
Escola : Juscelino K. de Oliveira

exercicio 3.13 resolvido Empty exercicio 3.13 resolvido

Ter Abr 09, 2024 3:05 pm
/*
* CURSO DE ROBOTICA 2019
*
* Exercicio: 3.13
* Tema: Menu no display com rolamento
* Atividade: Criar um menu de 5 opções e apresentá-lo no display, o rolamento será comandado por duas teclas up e down
* Descrição: Os pinos do display são RS-EN-D4-D5-D6-D7 e serão ligados nos pinos digitais do arduino assim como as teclas
* Hardware: Ligar da seguinte forma: RS=>pino D12; EN=>pino D13; D4=>pino D4; D5=>pino D5; D6=>pino D6; D7=>pino D7, as teclas serão ligados em pinos digitais
* Comandos: LiquidCrystal(12,13,4,5,6,7); lcd.print();
* Dica1: Será necessário a biblioteca com as funções do LCD, #include
* Dica2: O comando LiquidCrystal(12,13,4,5,6,7); deve ser declarado como variável antes da função setup()
* Dica3: Na função setup() é necessario inicializar o display indicando as colunas e linhas do display lcd.begin(16, 2);
* Dica4: Detectar qual tecla foi pressionada e deslocar o texto no display, usar uma função para apresentação usando switch / case
* Dica5: Na função principal incrementa a variavel menu e na função auxiliar mostra o resultado no display
* Dica6: Usar uma variavel tipo int para armazenar o temporizador para deslocamento enquanto a tecla pressionada
* Dica7: O tempo de pressionar a tecla antes de iniciar o deslocamento, vamos chamar de tempo de detecção
* Dica8: O tempo do deslocamento é o intervalo entre cada salto que o texto vai dar no display
* Dica9: O tempo de detecção deve ser maior que o tempo de deslocamento
*/

//DEFINICOES INICIAIS
#include //Carrega a biblioteca com as funções do display
#define teclaUp 3 //tecla que desloca display para cima
#define teclaDown 40 //tecla que desloca display para baixo

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,11,10,9,8,7); //Setup conforme as ligações
byte menu = 1; //variavel que guarda a posição do menu
int timer; //variável que guarda o temporizador

//INICIALIZAÇÃO DO HARDWARE
void setup() {
lcd.begin(16, 2); //Inicializa o display configurado como 16 colunas e 2 linhas
lcd.clear(); //limpa o display e posiciona o cursor na primeira linha e primeira coluna
pinMode(teclaUp, INPUT_PULLUP); //programa a tecla como entrada
pinMode(teclaDown, INPUT_PULLUP); //programa a tecla como entrada
lcd.setCursor(0,0); //Posiciona o primeiro menu na primeira linha
lcd.print(">1 - Menu1"); //Texto da opção 1
lcd.setCursor(0,1); //Posiciona o primeiro menu na primeira linha
lcd.print("2 - Menu2"); //Texto da opção 1
}

//FUNÇÕES COMPLEMENTARES
void mostraMenu(){
switch(menu){
case(1)://primeiro programa
lcd.clear();//limpa o display e posiciona o cursor na primeira linha e primeira coluna
lcd.setCursor(0,0);//Posiciona o primeiro menu na primeira linha
lcd.print(">1 - Menu1");//texto da 1 opiçao
lcd.setCursor(0,1);//Posiciona o primeiro menu na primeira linha
lcd.print("2 - Menu2");//texto da opiçao 2
break;//tira do programa
case(2)://segundo programa
lcd.clear();//limpa o display e posiciona o cursor na primeira linha e primeira coluna
lcd.setCursor(0,0);//Posiciona o primeiro menu na primeira linha
lcd.print(">2 - Menu2");//texto da opiçao 2
lcd.setCursor(0,1);//Posiciona o primeiro menu na primeira linha
lcd.print("3 - Menu3");//texto da opiçao 3
break;//tira do programa
case(3)://terceiro programa
lcd.clear();//limpa o display e posiciona o cursor na primeira linha e primeira coluna
lcd.setCursor(0,0);//Posiciona o primeiro menu na primeira linha
lcd.print(">3 - Menu3");//texto da opiçao 3
lcd.setCursor(0,1);//Posiciona o primeiro menu na primeira linha
lcd.print("4 - Menu4");//texto da opiçao 4
break;//tira do programa
case(4)://quarto programa
lcd.clear();//limpa o display e posiciona o cursor na primeira linha e primeira coluna
lcd.setCursor(0,0);//Posiciona o primeiro menu na primeira linha
lcd.print(">4 - Menu4");//texto da opiçao 4
lcd.setCursor(0,1);//Posiciona o primeiro menu na primeira linha
lcd.print("5 - Menu5");//texto da opiçao 5
break;//tira do programa
case(5)://quinto programa
lcd.clear();//limpa o display e posiciona o cursor na primeira linha e primeira coluna
lcd.setCursor(0,0);//Posiciona o primeiro menu na primeira linha
lcd.print(">5 - Menu5");//texto da opiçao 5
break;//tira do programa
}
}

//PROGRAMA PRINCIPAL
void loop() {
if(!digitalRead(teclaUp)){
timer = 600;//tempo = tempo de timer
do{
menu -= 1;//chama o menu 1
if(menu == 0){ menu = 1;}
mostraMenu();//coloca a programaçao do mostrarmenu()
delay(timer);//pausa de tempo de 600 milissegundos
timer = 400;//tempo de 400 milissegundos
}
while(!digitalRead(teclaUp));//programa a tecla para ir para baixo
}

if(!digitalRead(teclaDown)){
timer = 600;//tempo de 600 milissegundos
do{
menu += 1;//programa o menu
if(menu == 6){ menu = 5;}
mostraMenu();//tras os codigos do mostrarmenu()
delay(timer);//pausa de tempo de acordo com o timer
timer = 400;//tempo de 400 milissegundos
}
while(!digitalRead(teclaDown));//programa a tecla para ir para cima
}
}
Thiaguin
Thiaguin
Mensagens : 203
Data de inscrição : 03/03/2020

exercicio 3.13 resolvido Empty Re: exercicio 3.13 resolvido

Sáb Jun 29, 2024 10:47 am
Programa não está compilando, favor corrigir o exercício. Há erro de identação no void loop
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5798
Data de inscrição : 11/02/2019
Idade : 53
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

exercicio 3.13 resolvido Empty Re: exercicio 3.13 resolvido

Sex Set 13, 2024 8:07 pm
aguardo correção
Conteúdo patrocinado

exercicio 3.13 resolvido Empty Re: exercicio 3.13 resolvido

Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos