#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buttonPins[4] = {2, 3, 4, 5};
const int ledPins[4] = {6, 7, 8, 9};
const int potPins[4] = {A0, A1, A2, A3};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
lcd.init();
lcd.backlight();
Serial.begin(9600);
}
void loop() {
bool anyButtonPressed = false;
for (int i = 0; i < 4; i++) {
if (digitalRead(buttonPins[i]) == LOW) { // Button is pressed
anyButtonPressed = true;
// Turn ON corresponding LED
digitalWrite(ledPins[i], HIGH);
// Read corresponding potentiometer
int rawValue = analogRead(potPins[i]);
float voltage = rawValue * (5.0 / 1023.0);
// Update LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LED ");
lcd.print(i + 1);
lcd.print(": ON");
lcd.setCursor(0, 1);
lcd.print("POT ");
lcd.print(i + 1);
lcd.print(": ");
lcd.print(voltage, 2);
lcd.print(" V");
delay(500); // Debounce delay
} else {
// Button is not pressed → Turn OFF LED
digitalWrite(ledPins[i], LOW);
}
}
if (!anyButtonPressed) {
lcd.clear(); // No button pressed → blank screen
}
}