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

Postagens mais visitadas deste blog

contador 9999 com pic 16f628

CNC fotos cordenadas x y z dicas

codigo assembler braço mecanico para 5 motores