#include <LiquidCrystal.h>
// Definición de pines para el LCD
LiquidCrystal lcd(23, 22, 21, 19, 18, 5);
// Pin del sensor
int sensor_pin = 36;
// Variables para almacenar el valor leído del sensor y calcular el voltaje
int cuenta;
float vol;
// Pines para los LEDs
int led_1 = 13;
int led_2 = 12;
int led_3 = 14;
int led_4 = 27;
void setup() {
// Inicializar el LCD con el número de columnas y filas
lcd.begin(16, 2);
lcd.print("Voltaje");
// Configuración de pines de LED como salida
pinMode(led_1, OUTPUT);
pinMode(led_2, OUTPUT);
pinMode(led_3, OUTPUT);
pinMode(led_4, OUTPUT);
// Inicialización de comunicación Serial
Serial.begin(115200);
}
void loop() {
// Leer valor analógico
cuenta = analogRead(sensor_pin);
vol = 3.3 * cuenta / 4095.0;
// Mostrar voltaje en la primera fila del LCD
lcd.setCursor(0, 0); // Primera fila
lcd.print("Voltaje=");
lcd.print(vol, 2); // Mostrar voltaje con dos decimales
lcd.print(" V");
// Control de LEDs basado en el voltaje
if (vol >= 0.0 && vol < 0.7) {
digitalWrite(led_1, LOW);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
} else if (vol >= 0.7 && vol < 1.4) {
digitalWrite(led_1, HIGH);
digitalWrite(led_2, LOW);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
} else if (vol >= 1.4 && vol < 2.1) {
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, LOW);
digitalWrite(led_4, LOW);
} else if (vol >= 2.1 && vol < 2.8) {
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, HIGH);
digitalWrite(led_4, LOW);
} else if (vol >= 2.8 && vol <= 3.3) {
digitalWrite(led_1, HIGH);
digitalWrite(led_2, HIGH);
digitalWrite(led_3, HIGH);
digitalWrite(led_4, HIGH);
}
// Mostrar estado de los LEDs en la segunda fila del LCD en binario
lcd.setCursor(0, 1); // Segunda fila
lcd.print(digitalRead(led_1) == HIGH ? 1 : 0); // operador terniario
lcd.print(",");
lcd.print(digitalRead(led_2) == HIGH ? 1 : 0);
lcd.print(",");
lcd.print(digitalRead(led_3) == HIGH ? 1 : 0);
lcd.print(",");
lcd.print(digitalRead(led_4) == HIGH ? 1 : 0);
delay(1000); // Pausa entre lecturas
}