🔍 Os Dois Subsistemas
Uma placa, duas capacidades🖥️ LCD 20×4 — Interface Visual
- 20 colunas × 4 linhas de caracteres alfanuméricos
- Fundo azul negativo com retroiluminação branca — alta legibilidade
- Comunicação I2C — apenas 2 fios (SDA/SCL) do Arduino
- Endereço I2C padrão: 0x27 (ajustável com jumpers)
- Biblioteca LiquidCrystal_I2C — fácil de programar
- Suporte a caracteres personalizados (8 chars CGRAM)
- Controlo de brilho retroiluminação via potenciómetro onboard
- Compatível com Arduino e Raspberry Pi
⚙️ L293D — Controlo de Motores
- L293D (ou equivalente) — H-bridge dual para motores DC
- Controlo de 2 motores DC com PWM (direção + velocidade)
- Corrente máxima: 600 mA por canal
- Controlo de servos com sinal PWM standard 50 Hz
- Controlo de motores de passo (unipolar/bipolar)
- Proteção integrada contra corrente inversa (díodos)
- Interface via pinos digitais e PWM do Arduino
- Biblioteca AFMotor (Adafruit Motor Shield v1)
📚 Programa de Formação
Progressão lógica — LCD primeiro, depois motores🔍 Introdução à Placa PR.FT9_5
Visão geral dos dois subsistemas. Como a placa se encaixa no Arduino UNO Rev3. Instalação das bibliotecas LiquidCrystal_I2C e AFMotor. Pinagem I2C e motor driver.
🖥️ Biblioteca LiquidCrystal_I2C
Inicializar o LCD, escrever texto com lcd.print(), posicionar cursor com lcd.setCursor(), limpar ecrã, controlar retroiluminação e criar os primeiros displays de dados.
🔤 Caracteres Personalizados no LCD
Criar caracteres bitmap 5×8 na CGRAM com lcd.createChar(). Desenhar ícones (grau °, seta, barra de progresso) para enriquecer a interface visual.
⚙️ Motor DC — Direção e Velocidade
Controlar um motor DC com o L293D via AFMotor. Definir direção (FORWARD / BACKWARD), velocidade (0–255 via PWM) e paragem (RELEASE). Ligar estado ao LCD em tempo real.
🦾 Servo Motor
Controlar a posição angular de um servo com a placa. Usar a biblioteca Servo ou AFMotor. Mostrar o ângulo atual no LCD e controlar com potenciómetro ou sensor.
🔄 Motor de Passo
Controlar um motor de passo unipolar/bipolar com o L293D. Modos de passo completo e meio-passo. Calcular passos por rotação. Mostrar posição e direção no LCD.
🖥️ Exercícios LCD 20×4
Dominar o display — do texto ao gráficoOlá, LCD! — Primeiros Textos
Inicializar o LCD 20×4 via I2C. Escrever texto estático e dinâmico. Usar setCursor() para posicionar nas 4 linhas. Ativar/desativar retroiluminação.
Dados de Sensores no LCD
Apresentar valores de sensores em tempo real — temperatura, luz, distância. Formatar os dados com rótulos e unidades nas 4 linhas. Atualizar sem flickering.
Scroll e Animações de Texto
Fazer scroll horizontal de mensagens longas com scrollDisplayLeft(). Criar animações de carga, barras de progresso e transições entre ecrãs.
Caracteres Bitmap Personalizados
Definir até 8 caracteres 5×8 na CGRAM. Criar ícones de termómetro, seta, coração, grau °, barra de nível. Usar uma ferramenta geradora de bitmap online.
Menu Navegável com Botões
Criar um menu de 4 opções navegável com botões cima/baixo. Usar o cursor personalizado "▶" para indicar seleção. Executar ações ao pressionar OK.
Relógio e Cronómetro
Implementar um relógio digital e cronómetro com millis(). Mostrar horas, minutos e segundos no LCD com formatação HH:MM:SS. Botão de reset.
⚙️ Exercícios de Controlo de Motores
L293D — DC, Servo e Motor de PassoMotor DC — Básico
Ligar um motor DC ao L293D. Arrancar, parar, inverter direção com FORWARD / BACKWARD / RELEASE. Mostrar estado no LCD.
Motor DC — Controlo de Velocidade
Variar a velocidade de um motor DC com setSpeed(0–255). Usar um potenciómetro ou sensor LDR para controlo analógico. Exibir RPM estimados no LCD.
Dois Motores DC Independentes
Controlar dois motores DC em simultâneo com direções e velocidades independentes — base para um chassi de robô diferencial. Menu de comandos no LCD.
Servo Motor — Posição Precisa
Controlar ângulo de 0° a 180° via placa. Usar potenciómetro para varredura manual. Mostrar ângulo atual e alvo no LCD. Programar sequências de movimentos.
Motor de Passo — Controlo Preciso
Controlar motor de passo com modo passo completo (full step) e meio-passo (half step). Definir rotações, passos e RPM. Mostrar posição angular acumulada no LCD.
Motor Controlado por Sensor
Usar sensor de distância (ultrassónico ou IR) para controlar automaticamente a velocidade/direção de um motor DC. Sistema de paragem de emergência ao detetar obstáculo.
📐 Pinagem e Ligações
Referência técnica para Arduino UNO Rev3| Pino Arduino | Função na placa | Tipo de sinal | Notas |
|---|---|---|---|
| ▸ SUBSISTEMA LCD 20×4 — Interface I2C | |||
| A4 (SDA) | Dados I2C — LCD | I2C · DATA | Endereço padrão 0x27 — ajustável com jumpers A0/A1/A2 |
| A5 (SCL) | Relógio I2C — LCD | I2C · CLK | Resistências pull-up 4.7 kΩ incluídas no módulo I2C |
| 5V / GND | Alimentação LCD | Alimentação | Consumo típico com retroiluminação: ~30 mA |
| ▸ SUBSISTEMA MOTOR DRIVER — L293D | |||
| D3 (PWM) | Velocidade Motor 1 | PWM · Analógico | analogWrite(3, 0–255) — controlo de velocidade |
| D4 | Direção Motor 1 — IN1 | Digital OUT | HIGH = FORWARD / LOW = BACKWARD (combinado com D8) |
| D8 | Direção Motor 1 — IN2 | Digital OUT | Complementar de D4 para controlo H-bridge |
| D11 (PWM) | Velocidade Motor 2 | PWM · Analógico | analogWrite(11, 0–255) |
| D7 | Direção Motor 2 — IN3 | Digital OUT | Par de controlo H-bridge para Motor 2 |
| D2 | Direção Motor 2 — IN4 | Digital OUT | Complementar de D7 |
| D9 / D10 | Servos 1 e 2 | PWM · 50 Hz | Sinal PWM standard para servos SG90/MG90S |
| 5V / GND | Alimentação L293D | Alimentação | Para cargas ≥ 600 mA considerar alimentação externa no terminal VM |
💻 Exemplos de Código Fundamentais
Arduino IDE · Biblioteca LiquidCrystal_I2C + AFMotor🚀 Projetos Integrados — LCD + Motores
Combinar os dois subsistemas em sistemas completosPainel de Controlo de Motor
LCD mostra velocidade, direção e modo do motor em tempo real. Potenciómetro controla velocidade. Botões invertem direção. Caracteres personalizados para seta de direção.
Robô com Telemetria no LCD
Chassis diferencial com dois motores DC. O LCD exibe em tempo real: velocidade esquerda/direita, modo (AUTO/MANUAL), distância ao obstáculo e direção atual.
Braço Servo com Interface LCD
Dois servos controlam juntas de um mini-braço. LCD mostra ângulo de cada junta e modo (MANUAL / SEQUÊNCIA). Joystick (do Kit B 37) para controlo em tempo real.
Estação Meteorológica com Dashboard
Temperatura, humidade e luminosidade distribuídas pelas 4 linhas do LCD com ícones bitmap. Alertas visuais quando valores ultrapassam limiares. Scroll automático de avisos.
Posicionador de Precisão
Motor de passo move uma plataforma linear. O LCD exibe posição em mm (calculada a partir dos passos), destino e velocidade. Botões definem destino. Base conceptual de CNC.
Caixote Inteligente Avançado
Sensor de distância deteta aproximação → servo abre tampa → LCD conta utilizações e mostra "Obrigado!". Motor DC activa compressor simulado. Versão avançada do cenário LED oficial.