PRÁTICA 4 – ARDUÍNO COM DISPLAY LCD HD44780 16X2
Objetivos:
- Conectar um display de LCD HD44780 16×2 a um Arduíno e enviar códigos.
Tarefas:
- Montar o circuito.
- Executar o programa
Informações sobre o display LCD HD44780 16X2:

O HD44780 é um controlador de LCD alfanumérico desenvolvido pela Hitachi. Ele é amplamente usado em displays de 1 a 4 linhas, com 8 a 40 colunas por linha (o mais comum é esse que vamos utilizar de 16×2, com 16 caracteres por linha e 2 linhas).
Ele não exibe gráficos, apenas caracteres ASCII (e alguns personalizados). ASCII (sigla para American Standard Code for Information Interchange) é um padrão de codificação de caracteres usado para representar letras, números, símbolos e sinais de controle usando 8 bits.
Para que apareça, por exemplo “A” no display, o Arduino deve enviar o código do “A” em ASCII, que é “01000001” ou 65 em decimal. Esses valores são enviados pelos 4 pinos de comunicação 11 a 14 do display (data 4 a data 7). Os oito bits são enviados em duas etapas de 4 bits.
Existe uma biblioteca que facilita bastante a utilização! A função “lcd.print” faz praticamente tudo.
Além dos pinos de alimentação e massa, o pino 4 RS também é importante. Ele define se será enviado um caractere ou um comando ao LCD. No caso, “lcd.print” envia um caractere enquanto “lcd.setcursor”
Circuito:

Programa 1 – LCD Básico:
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); // Inicia o display de LCD com 16 caracteres e 2 linhas lcd.print("CEFET -> Arduino"); // Envia "CEFET -> ARDUINO" para a primeira linha } void loop() { lcd.setCursor(0, 1); // Seleciona para escrever no primeiro caractere (0) da segunda linha (1) lcd.print(millis()/1000); //Escreve na segunda linha o número de segundos do arduino ligado } |
Desafio: Tente usar a função millis() para fazer um relógio!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
#include <LiquidCrystal.h> LiquidCrystal lcd(12, 11, 5, 4, 3, 2); unsigned long tempo; int segundo = 0; int minuto = 44; int hora = 17; int ajuste = 0; void setup() { lcd.begin(16, 2); lcd.print("RELOGIO"); tempo = millis(); Serial.begin(9600); } void loop() { lcd.setCursor(0, 1); //SE MILLIS - TEMPO > 1000 passou um segundo if (millis()-tempo > 1000) { segundo = segundo + 1; tempo = millis(); } if (segundo > 59) { //Se passou mais que 59 segundos, passou um minuto minuto = minuto + 1; segundo = 0; } if (minuto > 59) { //Se passou mais que 59 minutos, passou uma hora hora = hora + 1; minuto = 0; } if (hora > 23) { /Se passou mais que 23 horas, virou o dia hora = 0; } // Adiciona um "0" se a hora tiver menos de 1 caractere if (hora < 10) { lcd.print("0"); } lcd.print(hora); lcd.print(":"); // Adiciona um "0" se o minuto tiver menos de 1 caractere if (minuto < 10) { lcd.print("0"); } lcd.print(minuto); lcd.print(":"); // Adiciona um "0" se o segundo tiver menos de 1 caractere if (segundo < 10) { lcd.print("0"); } lcd.print(segundo); } } |