Display 20x4 I²C no Arduino – Texto Piscando, Horas em Tempo Real e Muito Mais!
Você já imaginou um display 20x4 cheio de estilo no seu projeto Arduino? Hoje no Eletrocondutor, vamos colocar em prática um exemplo super bacana: um LCD I²C 20x4 que exibe texto piscando, mostra mensagens personalizadas e ainda marca as horas em tempo real.
Prepare o café, ligue o ferro de solda (se precisar) e vamos começar! ☕🔌
O que este projeto faz
-
Na primeira linha, aparece o texto “Eletrocondutor” piscando a cada meio segundo.
-
Na segunda linha, a mensagem fixa “Projeto Arduino”.
-
Na terceira linha, um relógio em tempo real, no formato
HH:MM:SS. -
Na quarta linha, a saudação simpática: “Ola leitor”.
Simples, funcional e com aquele toque criativo que faz toda a diferença nos seus projetos! 😎
Materiais necessários
-
1x Arduino Uno
-
1x Display LCD 20x4 com interface I²C
-
Jumpers para conexão
-
(Opcional) 1x Módulo RTC DS3231 para hora real
Dica: Se você não tiver o módulo RTC, o código já vem preparado para simular as horas usando a função
millis().
Esquema de ligação
-
SDA → A4
-
SCL → A5
-
VCC → 5V
-
GND → GND
Código do projeto
O código completo está disponível abaixo. Ele é simples, bem comentado e fácil de personalizar para seus próprios projetos.
Você pode copiar e colar direto no Arduino IDE:
#include <Wire.h> #include <LiquidCrystal_I2C.h> #include <RTClib.h> // Biblioteca para relógio (opcional, simulação no exemplo) // Endereço comum do LCD I²C (0x27 ou 0x3F) LiquidCrystal_I2C lcd(0x27, 20, 4); // Se não tiver módulo RTC, usamos millis() para simular RTC_DS3231 rtc; bool hasRTC = false; unsigned long lastBlink = 0; bool blinkState = true; unsigned long lastSecondUpdate = 0; void setup() { lcd.init(); lcd.backlight(); lcd.clear(); // Tenta iniciar RTC if (rtc.begin()) { hasRTC = true; } // Linha 2 lcd.setCursor(0, 1); lcd.print("Projeto Arduino"); // Linha 4 lcd.setCursor(0, 3); lcd.print("Ola leitor"); } void loop() { unsigned long currentMillis = millis(); // ---- Linha 1 piscando ---- if (currentMillis - lastBlink >= 500) { // alterna a cada 0,5s lastBlink = currentMillis; blinkState = !blinkState; lcd.setCursor(0, 0); if (blinkState) { lcd.print("Eletrocondutor "); // completa com espaços para limpar } else { lcd.print(" "); // apaga a linha } } // ---- Linha 3 com horas ---- if (currentMillis - lastSecondUpdate >= 1000) { lastSecondUpdate = currentMillis; lcd.setCursor(0, 2); int h, m, s; if (hasRTC) { DateTime now = rtc.now(); h = now.hour(); m = now.minute(); s = now.second(); } else { // Simula contagem de tempo unsigned long totalSecs = currentMillis / 1000; h = (totalSecs / 3600) % 24; m = (totalSecs / 60) % 60; s = totalSecs % 60; } // Formata hora HH:MM:SS char buffer[20]; sprintf(buffer, "Hora: %02d:%02d:%02d", h, m, s); lcd.print(buffer); lcd.print(" "); // limpa resto da linha } }
Como personalizar
Quer deixar o projeto com a sua cara? Aqui vão algumas ideias:
-
Troque o texto “Eletrocondutor” por seu nome ou marca.
-
Ajuste o tempo de piscada para mais rápido ou mais lento.
-
Conecte um módulo RTC e tenha um relógio preciso no seu display.
-
Use a linha 4 para mostrar a temperatura, status de sensores ou mensagens dinâmicas.
Resultado final
Quando você ligar o Arduino, verá:
-
A primeira linha piscando com o nome do blog.
-
O horário se atualizando a cada segundo.
-
Mensagens fixas exibidas com clareza no display de 20 colunas por 4 linhas.
É uma ótima base para dashboards, relógios customizados, sistemas de monitoramento ou até painéis decorativos!
Próximos passos
Nos próximos posts, vamos ensinar como:
-
Usar o RTC DS3231 para manter a hora mesmo sem energia.
-
Adicionar leitura de sensores para atualizar dados em tempo real.
-
Criar menus interativos no display com botões físicos ou comandos via Bluetooth.
Fique ligado aqui no Eletrocondutor e compartilhe esse projeto com outros apaixonados por Arduino. 🚀
Comentários
Postar um comentário
Faça seu comentário referente a este assunto