// Definir los pines del LED RGB
#define RED_PIN 19
#define GREEN_PIN 18
#define BLUE_PIN 17
void setup() {
// Inicializar la comunicación serial para monitorear el voltaje de la batería
Serial.begin(115200);
// Configurar los pines de los colores del LED RGB como salidas
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
}
void loop() {
// Leer el voltaje de la batería usando la función readBatteryVoltage()
float batteryVoltage = readBatteryVoltage(); // Función para leer el voltaje
// Establecer el color del LED RGB según el nivel de voltaje de la batería
if (batteryVoltage > 1.7) {
// Si el voltaje es mayor a 1.7V, mostrar color verde (batería > 3.4V)
setColor(0, 255, 0); // Verde
} else if (batteryVoltage > 1.5) {
// Si el voltaje está entre 1.5V y 1.7V, mostrar color amarillo (batería entre 3.0V y 3.4V)
setColor(255, 255, 0); // Amarillo
} else {
// Si el voltaje es menor o igual a 1.5V, mostrar color rojo (batería ≤ 3.0V)
setColor(255, 0, 0); // Rojo
}
// Esperar 1 segundo antes de hacer la siguiente lectura del voltaje
delay(1000);
}
// Función para leer el voltaje de la batería a través del ADC
float readBatteryVoltage() {
// Leer el valor analógico del pin 34, donde está conectado el divisor de voltaje
int analogValue = analogRead(34);
// Convertir el valor analógico a voltaje real
// El divisor de voltaje 1k-1k divide el voltaje a la mitad, por lo que multiplicamos por 2
float voltage = analogValue * (3.3 / 4095.0) * 2; // Factor de conversión para divisor 1k-1k
// Imprimir el voltaje leído en el monitor serial
Serial.println(voltage);
// Devolver el voltaje calculado
return voltage;
}
// Función para establecer el color del LED RGB usando PWM
void setColor(int red, int green, int blue) {
// Ajustar la intensidad de cada color (rojo, verde y azul) usando analogWrite
// Nota: Esto puede no ser soportado en todos los pines del ESP32, en cuyo caso se necesitaría configurar PWM de manera diferente
analogWrite(RED_PIN, red); // Ajustar la intensidad del color rojo
analogWrite(GREEN_PIN, green); // Ajustar la intensidad del color verde
analogWrite(BLUE_PIN, blue); // Ajustar la intensidad del color azul
}