#include <EEPROM.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Mendefinisikan pin
const int potPin = A0; // Pin input untuk potensiometer
const int led1 = 9; // Pin output untuk LED 1
const int led2 = 8; // Pin output untuk LED 2
const int led3 = 7; // Pin output untuk LED 3
const int switch1 = 10; // Pin input untuk switch 1
const int switch2 = 11; // Pin input untuk switch 2
const int switch3 = 12; // Pin input untuk switch 3
// Inisialisasi objek LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD adalah 0x27, dan ukuran LCD adalah 16x2
void setup() {
// Mengatur mode pin
pinMode(potPin, INPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(switch1, INPUT_PULLUP);
pinMode(switch2, INPUT_PULLUP);
pinMode(switch3, INPUT_PULLUP);
Serial.begin(9600);
// Mengatur ukuran LCD
lcd.begin(16, 2);
}
void loop() {
int potValue = analogRead(potPin); // Membaca nilai potensiometer
int mappedValue = map(potValue, 0, 1023, 0, 100); // Mapping nilai potensiometer ke range 0-90
// Menampilkan nilai potensiometer pada LCD
lcd.setCursor(0, 0);
lcd.print("Potensio : ");
lcd.print(mappedValue);
// Menghidupkan LED berdasarkan nilai potensiometer yang diset
if (mappedValue == EEPROM.read(0)) {
digitalWrite(led1, HIGH);
} else {
digitalWrite(led1, LOW);
}
if (mappedValue == EEPROM.read(1)) {
digitalWrite(led2, HIGH);
} else {
digitalWrite(led2, LOW);
}
if (mappedValue == EEPROM.read(2)) {
digitalWrite(led3, HIGH);
} else {
digitalWrite(led3, LOW);
}
// Menyimpan nilai potensiometer ke EEPROM jika switch ditekan
if (digitalRead(switch1) == LOW) {
EEPROM.write(0, mappedValue);
}
if (digitalRead(switch2) == LOW) {
EEPROM.write(1, mappedValue);
}
if (digitalRead(switch3) == LOW) {
EEPROM.write(2, mappedValue);
}
}