Início › Componentes › LCD
⬤ Intermédio

🖥️ Display LCD 16×2

Apresentar texto e valores num ecrã de 2 linhas e 16 caracteres.

⏱️ Duração: 45 min
🧩 Componentes: LCD 16×2 + Potenciómetro

Ligação do LCD (modo 4 bits)

🔌 Pinagem

LCD PinoNome→Arduino / Outro
1VSS→GND
2VDD→5V
3V0 (contraste)→Cursor do Potenciómetro 10kΩ
4RS→Pino 12
5RW→GND
6E (Enable)→Pino 11
7–10D0–D3→Não ligar (modo 4 bits)
11D4→Pino 5
12D5→Pino 4
13D6→Pino 3
14D7→Pino 2
15A (LED+)→5V (ou pino digital para controlo)
16K (LED−)→GND
💡Ajusta o potenciómetro de contraste (pino 3 do LCD) até veres os caracteres com clareza após carregar o código.

Exercício 1 — Olá Mundo

ex1_lcd_ola.ino
#include <LiquidCrystal.h>

// LiquidCrystal(RS, E, D4, D5, D6, D7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {
  lcd.begin(16, 2);       // 16 colunas, 2 linhas
  lcd.print("Ola Mundo!");
  
  lcd.setCursor(0, 1);    // Coluna 0, linha 1
  lcd.print("Kit B - LED PT");
}

void loop() {
  // Nada no loop para texto estático
}

Exercício 2 — Contador de Segundos

ex2_lcd_contador.ino
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int segundos = 0;

void setup() {
  lcd.begin(16, 2);
  lcd.print("Tempo decorrido:");
}

void loop() {
  lcd.setCursor(0, 1);
  lcd.print(segundos);
  lcd.print(" seg  ");   // Espaços para limpar dígitos antigos
  segundos++;
  delay(1000);
}

Exercício 3 — Mostrar Temperatura

ex3_lcd_temperatura.ino
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int LM35 = A0;

void setup() {
  lcd.begin(16, 2);
  lcd.print("Temperatura:");
}

void loop() {
  int leitura = analogRead(LM35);
  float temp = (leitura * 5000.0 / 1023.0) / 10.0;
  
  lcd.setCursor(0, 1);
  lcd.print(temp, 1);
  lcd.print((char)223);  // Símbolo °
  lcd.print("C    ");
  
  delay(500);
}
Próximo: IR → Ver: Estação Meteorológica