LCD 16×2 com módulo I2C (PCF8574)
Display de 16 colunas × 2 linhas com luz de fundo e o módulo I2C (PCF8574) soldado atrás: em vez de 6 fios ou mais, só GND, VCC, SDA e SCL. Cada caractere é uma grade de 5 × 8 pontos; dá para criar até 8 caracteres seus. Os drivers lcd_api.py e i2c_lcd.py NÃO vêm no firmware: copie os dois para a placa. Se a tela acende mas não aparece nada, gire o trimpot de contraste (azul, atrás).
Pinagem
| Pino | Ligar em | Observação |
|---|---|---|
| GND | GND | |
| VCC | VIN (5 V) | o LCD precisa de 5 V |
| SDA | GPIO21 (ligação usada no exemplo) | dados do I2C |
| SCL | GPIO22 (ligação usada no exemplo) | relógio do I2C |
Da ementa ao semestre planejado
- Plano de ensino e calendário montados sozinhos
- Diário de aulas pronto para colar no SIGA
- Slides e listas de exercícios com gabarito
Versão Community grátis · Windows
Exemplo em MicroPython
# ANTES: copie lcd_api.py e i2c_lcd.py (dhylands/python_lcd) para a placa.
from machine import Pin, I2C
from i2c_lcd import I2cLcd
import time
# ligação usada aqui (comum na DevKit): SCL no GPIO22 e SDA no GPIO21
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
print(i2c.scan()) # 39 (0x27) ou 63 (0x3F)
lcd = I2cLcd(i2c, 0x27, 2, 16) # endereço, linhas, colunas
lcd.putstr("Ola, ESP32!")
# caractere próprio no código 0: um coração (8 linhas de 5 pontos)
lcd.custom_char(0, bytearray([0x00, 0x0A, 0x1F, 0x1F, 0x0E, 0x04, 0x00, 0x00]))
t = 25
while True:
lcd.move_to(0, 1) # coluna 0, linha 1 (a de baixo)
lcd.putstr("Temp: %d" % t + chr(223) + "C " + chr(0)) # 223 = símbolo de grau
t += 1
time.sleep(1)
Especificações
| Item | Valor | Fonte |
|---|---|---|
| Tamanho | 16 colunas × 2 linhas | shared/componentes/catalogo.js |
| Alimentação | 5 V | docs/04-componentes.md (valores típicos de datasheet) |
| Com 3,3 V | o módulo responde no I2C, mas o vidro fica sem contraste (aviso lcd-sem-5v) | shared/componentes/catalogo.js (PCF8574: TI SCPS068; HD44780U: Hitachi ADE-207-272) — TODO(fidelidade): conferir no LCD do laboratório |
| Endereço I2C | 0x27 ou 0x3F (depende do chip do módulo) | docs/04-componentes.md (valores típicos de datasheet) |
| Contraste | trimpot no módulo: errado = tela "vazia" | docs/04-componentes.md (valores típicos de datasheet) — TODO(fidelidade): faixa do trimpot que mostra os caracteres |
| Caracteres | 5 × 8 pontos; códigos 0–7 são os seus (custom_char); 223 = ° | Datasheet HD44780U (Hitachi), tabela 4 — ROM A00 |
| Drivers | lcd_api.py + i2c_lcd.py — copiar para a placa | github.com/dhylands/python_lcd (lcd/lcd_api.py e lcd/i2c_lcd.py) |
| Pull-up no SDA/SCL | o módulo tem; com VCC em 5 V eles puxam para 5 V? | shared/componentes/catalogo.js — TODO(fidelidade): medir no módulo do laboratório |
Valores marcados com TODO(fidelidade) ainda vão ser conferidos nas peças do laboratório.