#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};
bool buttonStates[4] = {false, false, false, false};
void setup() {
lcd.init();
lcd.backlight();
for (int i = 0; i < 4; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
pinMode(ledPins[i], OUTPUT);
}
lcd.setCursor(0, 0);
lcd.print("HMI System Ready");
delay(2000);
lcd.clear();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Btn: ");
for (int i = 0; i < 4; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
buttonStates[i] = true;
} else {
buttonStates[i] = false;
}
digitalWrite(ledPins[i], buttonStates[i] ? HIGH : LOW);
lcd.setCursor(5 + i, 0);
lcd.print(buttonStates[i] ? "1" : "0");
}
lcd.setCursor(0, 1);
lcd.print("V: ");
for (int i = 0; i < 4; i++) {
int potValue = analogRead(potPins[i]);
float voltage = (potValue / 1023.0) * 5;
lcd.setCursor(3 + (i * 4), 1);
lcd.print(voltage, 1);
lcd.print("V");
}
delay(200);
}