Ligação do LCD (modo 4 bits)
🔌 Pinagem
| LCD Pino | Nome | → | Arduino / Outro |
|---|---|---|---|
| 1 | VSS | → | GND |
| 2 | VDD | → | 5V |
| 3 | V0 (contraste) | → | Cursor do Potenciómetro 10kΩ |
| 4 | RS | → | Pino 12 |
| 5 | RW | → | GND |
| 6 | E (Enable) | → | Pino 11 |
| 7–10 | D0–D3 | → | Não ligar (modo 4 bits) |
| 11 | D4 | → | Pino 5 |
| 12 | D5 | → | Pino 4 |
| 13 | D6 | → | Pino 3 |
| 14 | D7 | → | Pino 2 |
| 15 | A (LED+) | → | 5V (ou pino digital para controlo) |
| 16 | K (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);
}