Nome: LCD_pr_Atv05_exemplo
Menu de controle
Biblioteca: LiquidCrystal
Componentes:
Módulo de LCD (Ver ligação abaixo)
Usando a mesma ligação entre o LCD e o Arduino desenvolvida na atividade 1 e utilizando
como base o sketch do contador binário com 4 botões(teste de botões)
Menu/OK
LED - para indicar uma atividade no loop principal
Led piscante de acordo com um tempo
Criar uma estrutura que permita entrar em um menu e sair dele
Interface de saída - Módulo de LCD indicar o led em estado piscante ou as opções de Menu (troca
de tempo.
O circuito:
Display LCD -> Arduino
Pino 1 - VSS -> Pino GND
Pino 2 - VDD -> Pino +5V
Pino 3 - VO -> Central do Potenciômetro
Pino 4 - RS -> Pino digital 1
Pino 5 - R/W -> Pino digital 2
Pino 6 - Enable -> Pino digital 3
Pino 7,8,9,10 -> Não conectado
Pino 11 dados D4 -> Pino digital 4
Pino 12 dados D5 -> Pino digital 5
Pino 13 dados D6 -> Pino digital 6
Pino 14 dados D7 -> Pino digital 7
Pino 15 - Anodo -> Pino +5V
Pino 16 - Katodo -> Pino GND
Potenciômetro
Extremidade 1 -> Pino +5V
Central -> Pino 3 - VO do LCD
Extremidade 2 -> Pino GND
Led Pino 11
Botão ok pino 8
Baseado no exemplos button HelloWorld
Baseado no sketch Contador Binário 5
This example code is in the public domain.
17/09/2018 - Tradução do cabeçalho e reordenamento das ligações do LCD e Arduino UNO
por Luiz Oscar Pilger
17/09/2018 - Modificação da pinagem Arduino (1 a 7) das ligações do LCD e Arduino UNO
por Luiz Oscar Pilger
17/09/2018 - Adição do controle do botão OK entrar e sair do menu e o lED
*/
// Inclui o código da biblioteca:
#include <LiquidCrystal.h>
// Associação entre os pinos do LCD e do Arduino
#define rs 1
#define rw 2
#define en 3
#define d4 4
#define d5 5
#define d6 6
#define d7 7
#define bt_ok 8
#define led 11
// Iniciliza a biblioteca com a associação para a interface LCD
LiquidCrystal lcd(rs, rw, en, d4, d5, d6, d7);
// variáveis de controle
byte tempo = 1; // varivale para indicar o tempo em s
bool menu = 0;
void delay_s (int segundos) {
for (int i = 0; i < 100 * segundos; i++) {
if (digitalRead(bt_ok) == 0) { // testa o botão ok
while (digitalRead(bt_ok) == 0); // espera soltar o botão ok
menu = 1; // seta a variável menu para 1 para ter acesso ao menu
}
delay (10);
}
}
void setup() {
// inicializa os pinos digital OK INC DEC E LED
pinMode(bt_ok, INPUT_PULLUP); // iniciliaza o pino 8 como entrada com resistor de pull up ativado
pinMode(led, OUTPUT); // iniciliaza o pino 11 como saída
lcd.begin(16, 2); // Incializa o LCD com o número de Colunas(16) e Linhas(2):
}
void loop() {
lcd.setCursor(0, 0); // posiciona na primeira coluna (0) e primeira linha (0)
lcd.print("Led Pisca T="); // imprime texto
lcd.print(tempo, DEC); // imprime a variável x no formato decimal
lcd.print("s"); // imprime texto
// pisca o led com o tempo especificado
digitalWrite(led, HIGH);
delay_s(tempo);
digitalWrite(led, LOW);
delay_s(tempo);
// abre o menu
while (menu == 1) {
lcd.setCursor(0, 0); // posiciona na primeira coluna (0) e primeira linha (0)
lcd.print("Dentro Menu "); // imprime texto
if (digitalRead(bt_ok) == 0) { // testa o botão ok
while (digitalRead(bt_ok) == 0); // espera soltar o botão ok
menu = 0; // seta a variável menu para 0 para sair do menu
}
}
}