#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Configuración de la pantalla OLED
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// Pines de los LEDs
int led1 = 2;
int led2 = 4;
int led3 = 16;
void setup() {
// Inicializar comunicación serial
Serial.begin(9600);
// Inicializar la pantalla OLED
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("No se encontró pantalla OLED"));
while (true);
}
oled.clearDisplay();
// Configurar los pines de los LEDs como salida
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
}
void loop() {
int sensorValue = analogRead(A0); // Leer el valor del ADC (0 - 1023)
float voltage = sensorValue * (3.3 / 1023.0); // Convertir a voltaje (máx 3.3V)
// Mostrar en Serial Monitor
Serial.print("Voltaje: ");
Serial.println(voltage);
// Mostrar en pantalla OLED
oled.clearDisplay();
oled.setTextSize(2);
oled.setTextColor(WHITE);
oled.setCursor(0, 10);
oled.print("V: ");
oled.print(voltage);
oled.display();
// Control de LEDs según el voltaje
if (voltage < 3.0) {
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
else if (voltage >= 3.0 && voltage <= 7.0) {
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
}
else {
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, HIGH);
}
delay(500); // Pequeño retardo para evitar lecturas inestables
}