EduTech
ESP32 & IoT

Primeiros passos com GPIO

Entradas, ADC e PWM

Ler um sensor analógico e controlar intensidade sem DAC.

15 min5 itens de prática

O ADC do ESP32 tem 12 bits: analogRead() devolve de 0 a 4095.

int leitura = analogRead(34);              // 0..4095
float tensao = leitura * (3.3 / 4095.0);   // aproximação

Dois detalhes que derrubam projeto:

1. O ADC2 não funciona com Wi-Fi ligado. O rádio usa esse periférico. Se o projeto tem Wi-Fi, use apenas pinos do ADC1 (GPIO 32–39). 2. O ADC não é linear nas extremidades da faixa. Para medição precisa, calibre ou use um ADC externo.

Para saída analógica, o ESP32 não usa analogWrite: ele tem o periférico LEDC, com 16 canais de PWM e resolução configurável.

// canal 0, 5 kHz, 8 bits de resolução (0..255)
ledcSetup(0, 5000, 8);
ledcAttachPin(2, 0);
ledcWrite(0, 128);   // 50% de duty cycle

PWM não gera tensão intermediária de verdade: ele liga e desliga rápido demais para o olho (ou o motor) perceber. O que muda é o duty cycle — a fração do tempo em nível alto.

Frequência alta demais reduz a resolução útil do PWM; as duas grandezas competem pelo mesmo contador de hardware.

Agora pratique

5 itens. Ler não fixa; responder fixa.