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çãoDois 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 cyclePWM 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.