Introdução
O controle direto de hardware é a essência de sistemas embarcados.
Com o Raspberry Pi Pico, isso é feito via GPIO (General Purpose Input/Output) — os pinos que conectam o software ao mundo físico.
Neste artigo, saímos da teoria e entramos na execução prática.
GPIO: Interface Física do Sistema
GPIO permite:
- Ler sinais (entrada)
- Acionar dispositivos (saída)
Estados possíveis:
- HIGH (1) → tensão presente (3.3V)
- LOW (0) → sem tensão
✔ Base de toda automação digital
Estrutura Elétrica Básica (LED)
Antes do código, o circuito:
Componentes:
- LED
- Resistor (220Ω ~ 1kΩ)
- Fios
Ligação:
GPIO (Pico) → Resistor → LED → GND
✔ Resistor é obrigatório para proteção
Primeiro Controle: Piscar LED
from machine import Pin
import utimeled = Pin(16, Pin.OUT)while True:
led.value(1) # ON
utime.sleep(1)
led.value(0) # OFF
utime.sleep(1)
Interpretação:
Pin.OUT→ define como saídavalue(1)→ ligavalue(0)→ desliga
✔ Controle direto de hardware
Alternativa: Toggle
led.toggle()
✔ Mais simples, menos controle explícito
Entrada Digital: Botão
Circuito:
- Botão ligado ao GPIO
- Pull-up interno ativado
Código:
button = Pin(15, Pin.IN, Pin.PULL_UP)while True:
if button.value() == 0:
print("Pressed")
Lógica invertida:
- 0 → pressionado
- 1 → solto
✔ Padrão comum em embarcados
Controle Condicional (Botão + LED)
led = Pin(16, Pin.OUT)
button = Pin(15, Pin.IN, Pin.PULL_UP)while True:
if button.value() == 0:
led.value(1)
else:
led.value(0)
✔ Entrada controla saída
Debounce (Problema Real)
Botões geram ruído elétrico.
Sintoma:
- Múltiplos acionamentos inesperados
Solução simples:
if button.value() == 0:
utime.sleep_ms(50)
if button.value() == 0:
print("Pressed")
✔ Estabilização básica
Múltiplos GPIOs
led1 = Pin(16, Pin.OUT)
led2 = Pin(17, Pin.OUT)led1.value(1)
led2.value(0)
✔ Controle paralelo
Organização Profissional
def read_inputs():
return button.value()def update_outputs(state):
led.value(state)while True:
state = read_inputs()
update_outputs(not state)
✔ Código modular e testável
Limitações Elétricas (CRÍTICO)
- Tensão: 3.3V
- Corrente por pino: ~12mA (máx seguro)
❌ NÃO ligar diretamente:
- Motores
- Relés sem driver
- Cargas altas
✔ Use:
- Transistores
- MOSFETs
- Módulos prontos (COTS)
Aplicações Práticas
Cenários reais práticos:
- Indicadores visuais (LED)
- Leitura de sensores digitais
- Controle de relés
- Interfaces simples (botões)
Integração com Sistemas Maiores
GPIO atua como:
- Entrada de eventos físicos
- Saída de controle
Arquitetura:
Sensor/Botão → GPIO → Pico → Decisão → GPIO → Atuador
Boas Práticas
- Sempre usar resistor com LED
- Validar lógica invertida (pull-up)
- Tratar debounce
- Isolar cargas maiores
- Testar circuito antes do código
Encaminhamento
Agora que o controle digital está dominado, avançamos para sinais analógicos:
ADC — leitura de sensores analógicos e aquisição de sinais

