A função LiquidCrystal inicializa o modo de comunicação com o módulo de LCD
A sua sintaxe prevê a utilização ou não do pino R/W e a comunicação em 4 ou 8 bits.
Isso é definido no memento de sua chamada dependo do número de parâmetros, pela sua sintaxe
LiquidCrystal(rs, enable, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d4, d5, d6, d7)
LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7)
LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)
Atividade 1 - Modificando I/Os LCD
Utilizando o exemplo "HelloWorld" refaça a ligação para utilizar o pino R/W e a comunicação em 4 bits utilizando a ligação entre o módulo LCD e o Arduino de acordo com a tabela abaixo
- Montar a simulação
- Montar o hardware para apresentação da atividade
Atividade 2 - Status do botão e led no LCD
Usando a mesma ligação entre o LCD e o Arduino desenvolvida na atividade 1, implemente um sketch que contenha
- 1 botão
- 1 led
- Módulo de LCD
O seu funcionamento deverá obedecer a seguinte lógica
- Botão Solto
- Led desligado
- Indicação na primeira linha do LCD o estado do botão - SOLTO
- Indicação na segunda linha do LCD o estado do led - DESLIGADO
- Botão pressionado
- Led ligado
- Indicação na primeira linha do LCD o estado do botão - PRESSIONADO
- Indicação na segunda linha do LCD o estado do led - LIGADO
- Montar a simulação
- Montar o hardware para apresentação da atividade
Atividade 3 - Semáforo de cruzamento com status LCD
- Usando a mesma ligação entre o LCD e o Arduino desenvolvida na atividade 1, e utilizando como base o sketch do semáforo de cruzamento de duas vias (Semáforo - Atividade 2), adicione o módulo de LCD para indicar o estado de cada semáforo.
- Utilize a criatividade para indicar no LCD o estado dos dois semáforos.
- Montar a simulação
- Montar o hardware para apresentação da atividade
- Desafio extra: Monte para mostrar o cruzamento de 3 tempos
Atividade 4 - Contador binário no LCD
- 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:
- Reset
- Incrementa
- Decrementa
- Set
- Utilize o módulo de LCD ao invés dos 8 leds para indicar o valor do contador.
- Mostrar no LCD o valor do contador nos formatos:
- Decimal
- Binário
- Hexadecimal
- Montar a simulação
- Montar o hardware para apresentação da atividade
Atividade 5 - Menu para controle de tempo
Construir um sketch para piscar um led com um tempo determinado
O sketch deve conter 3 botões que permitam:
- OK - entrar e sair do menu
- INC - Aumenta o tempo de on/off da rotina para piscar o led
- DEC - Diminui o tempo de on/off da rotina para piscar o led
Funcionamento do sketch:
- Ao iniciar o programa pisca o led
- Se o botão OK for pressionado o programa para de piscar o led e entra em um menu para aumentar ou diminuir o tempo de on/off da rotina para piscar o led
- Montar a simulação
- Montar o hardware para apresentação da atividade
Exemplo - Menu
O exemplo mostrado no sketch abaixo pisca um led.
Ao pressionar o botão OK o programa para de piscar o led e entra no menu
Dentro do menu ao pressionar o botão OK o programa sai do menu volta piscar o led
Fluxograma de funcionamento do skecth
Diagrama de ligação do exemplo
/*
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
}
}
}
Nenhum comentário:
Postar um comentário