
El rango de voltaje análogo en la ESP32 es de 0 - 3.3V. Existen 18 pines de ADC. Tiene una resolución de 12 bits de 0 - 4095 Se tiene el ADC1 y el ADC2
El ADC2 tiene restricciones a tener en cuenta
El ADC2 solo se puede utilizar cuando el controlador WiFi no se ha iniciado [PROBAR]

//Código para la lectura de un portenciómetro en un ADC
#define pot 36 //ADC1 CHANEL 0
int valorpot = 0;
void setup() {
Serial.begin(115200);
delay(1000);
}
void loop() {
valorpot = analogRead(pot); //Lectura del potenciómetro
Serial.println(valorpot); //Se muestran valores de 0 - 4095
delay(500);
}
#define pot 36 //ADC1 CHANEL 0
int valorpot = 0;
double voltaje = 0;
void setup() {
Serial.begin(115200);
delay(1000);
}
void loop() {
valorpot = analogRead(pot); //Lectura del potenciómetro
voltaje = (valorpot * 3.3)/4095; //Convierte el valor del ADC en voltaje
Serial.println(valorpot); //Se muestran valores de 0 - 4095
Serial.println(voltaje); //Se muestran valores de 0 - 3.3V
Serial.println(" ");
delay(500);
}
#define pot 36 //ADC1 CHANEL 0
#define led_user 2 //Led de usuario y pin 2
int valorpot = 0;
double voltaje = 0;
void setup() {
Serial.begin(115200);
delay(1000);
pinMode(led_user,OUTPUT); //Configurar el pin 2 como salida
}
void loop() {
valorpot = analogRead(pot); //Lectura del potenciómetro
voltaje = (valorpot * 3.3)/4095; //Convierte el valor del ADC en voltaje
if(voltaje>=1.65){
digitalWrite(led_user,HIGH); //Se enciende el LED
}else if(voltaje<1.65){
digitalWrite(led_user,LOW); //Se apaga el LED
}
Serial.println(valorpot); //Se muestran valores de 0 - 4095
Serial.println(voltaje); //Se muestran valores de 0 - 3.3V
Serial.println(" ");
delay(500);
}
El DAC permite el control la intensidad luminosa, la velocidad de los motores o incluso reproducción de sonido, también puede ser un potenciómetro digital. La ESP32 cuenta con un DAC de dos canales diferentes ubicados en GPIO21 (Canal 1) y GPIO26 (Canal 2).
Tiene una resolución de 8 bits.

Se usa la función dacWrite(canal_pin, voltaje) —> El voltaje será proporcional a los números de 0 a 255.
Se puede crear una señal sinusoidal usando los canales del DAC, con una función sine, con una librería de Arduino para ESP32 o con tabla de valores.
#include <Arduino.h>
#define DAC_CH1 25
#define DAC_CH2 26
double VoltajeDac = 0;
int valorcito = 69;
void setup() {
Serial.begin(115200);
}
void loop() {
dacWrite(DAC_CH1, valorcito); // Se escribe el valor de 0 - 255
Serial.println(valorcito);
VoltajeDac = valorcito * 3.20 / 255; //Se convierte ese valor en voltaje
Serial.println(VoltajeDac);
delay(3000);
}