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

Ir para baixo
Thiaguin
Thiaguin
Mensagens : 177
Data de inscrição : 03/03/2020

Exercício 3.13 Empty Exercício 3.13

Sáb maio 15, 2021 10:59 am
/*
* 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 _LiquidCrystal.h_
* 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
*/

//DEFINICOES INICIAIS
#include  //A biblioteca com as funções do display está carregada
#define teclaUp 3//Definido que o pino 3 irá se chamar teclaUp
#define teclaDown 5//Definido que o pino 5 irá se chamar teclaDown

//DECLARAcAO DE VARIAVEIS GLOBAIS
LiquidCrystal lcd(12,11,10,9,8,7);//Os pinos serão ligados nessa sequência ao display
byte opcao=1;//Variável para ser atribuído o valor da quantidade de casos

//INICIALIZAÇÃO DO HARDWARE
void setup() {
lcd.begin(16,2);//Display inicializado, o display usado possui 16 colunas e 2 linhas
pinMode(teclaUp,INPUT_PULLUP);//Configurado o pino 3 como entrada usando um resistor de pullup
pinMode(teclaDown,INPUT_PULLUP);//Configurado o pino 5 como entrada usando um resistor de pullup
}

//FUNÇÕES COMPLEMENTARES



//PROGRAMA PRINCIPAL
void loop() {
if(!digitalRead(teclaUp)){//Se a teclaUp for pressionada, irá rodar o bloco abaixo
 opcao --;//O valor da variável opcao ira diminuir
  if(opcao == 0) opcao = 1;//Se o valor da variavel opcao for 0, irá passar a ser 1
  while(!digitalRead(teclaUp)){//Enquanto a teclaUp estiver pressionada, irá rodar o bloco abaixo
   delay(10);//Irá ocorrer um intervalo de tempo de 0,01 segundos
  }
}
if(!digitalRead(teclaDown)){//Se a teclaDown for pressionada, irá rodar o bloco abaixo
 opcao ++ ;//O valor da variável opcao ira aumentar
  if(opcao == 6) opcao = 5;//Se o valor da variavel opcao for 6, irá passar a ser 5
   while(!digitalRead(teclaDown)){//Enquanto a teclaDown estiver pressionada, irá rodar o bloco abaixo
   delay(10);//Irá ocorrer um intervalo de tempo de 0,01 segundos
  }
}
switch(opcao){
case(1)://Se o valor da variável opcao for 1, irá rodar o bloco abaixo
 lcd.clear();//O display será resetado
 lcd.setCursor(0,0);//O cursor irá para o início da primeira linha
 lcd.print(">opcao 1");//O texto entre aspas será enviado para o display
 lcd.setCursor(0,1);//O cursor irá para a coluna 2 da primeira linha
 lcd.print("opcao 2");//O texto entre aspas será enviado para o display
 break;//O programa irá sair da função switch case
case(2)://Se o valor da variável opcao for 2, irá rodar o bloco abaixo
 lcd.clear();//O display será resetado
 lcd.setCursor(0,0);//O cursor irá para o início da primeira linha
 lcd.print(">opcao 2");//O texto entre aspas será enviado para o display
 lcd.setCursor(0,1);//O cursor irá para a coluna 2 da primeira linha
 lcd.print("opcao 3");//O texto entre aspas será enviado para o display
 break;//O programa irá sair da função switch case
case(3)://Se o valor da variável opcao for 3, irá rodar o bloco abaixo
 lcd.clear();//O display será resetado
 lcd.setCursor(0,0);//O cursor irá para o início da primeira linha
 lcd.print(">opcao 3");//O texto entre aspas será enviado para o display
 lcd.setCursor(0,1);//O cursor irá para a coluna 2 da primeira linha
 lcd.print("opcao 4");//O texto entre aspas será enviado para o display
 break;//O programa irá sair da função switch case
case(4)://Se o valor da variável opcao for 4, irá rodar o bloco abaixo
 lcd.clear();//O display será resetado
 lcd.setCursor(0,0);//O cursor irá para o início da primeira linha
 lcd.print(">opcao 4");//O texto entre aspas será enviado para o display
 lcd.setCursor(0,1);//O cursor irá para a coluna 2 da primeira linha
 lcd.print("opcao 5");//O texto entre aspas será enviado para o display
 break;//O programa irá sair da função switch case
case(5)://Se o valor da variável opcao for 5, irá rodar o bloco abaixo
 lcd.clear();//O display será resetado
 lcd.setCursor(0,0);//O cursor irá para o início da primeira linha
 lcd.print("opcao 4");//O texto entre aspas será enviado para o display
 lcd.setCursor(0,1);//O cursor irá para a coluna 2 da primeira linha
 lcd.print(">opcao 5");//O texto entre aspas será enviado para o display
 break;//O programa irá sair da função switch case
}
delay(200);//Irá ocorrer um intervalo de tempo de 0,2 segundos
}
Paulo Augusto Batista
Paulo Augusto Batista
Admin
Mensagens : 5115
Data de inscrição : 11/02/2019
Idade : 52
Escola : Colegio Lindaura
https://roboticalivre.forumeiros.com

Exercício 3.13 Empty Re: Exercício 3.13

Qua maio 19, 2021 1:10 am
Muito bom Thiago, nota 10,0
Ir para o topo
Permissões neste sub-fórum
Não podes responder a tópicos