#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int buttonPin = 2; // Pin untuk tombol
const int relayPins[] = {5, 6, 7, 8, 9, 10, 11, 12}; // Pin untuk relay
const int numRelays = 8; // Jumlah relay
const int delayTime = 1500; // Waktu delay antara setiap relay
const int arusPin = A0; // Pin analog untuk sensor ACS712
const int teganganPin = A1; // Pin analog untuk sensor ZMPT101B
int currentState = LOW;
int lastState = LOW;
void setup() {
pinMode(buttonPin, INPUT);
for (int i = 0; i < numRelays; i++) {
pinMode(relayPins[i], OUTPUT);
}
lcd.init();
lcd.init();
lcd.backlight();
lcd.setCursor(4, 0);
lcd.print("FH Audio");
}
void loop() {
// Membaca nilai arus dari sensor ACS712
int nilaiArus = analogRead(arusPin);
float teganganArus = (nilaiArus - 512.0) / 1024.0 * 5000.0 / 185.0;
// Membaca nilai tegangan dari sensor ZMPT101B
int nilaiTegangan = analogRead(teganganPin);
float teganganSensor = (nilaiTegangan / 1024.0) * 5000.0;
lcd.setCursor(0, 1);
lcd.print(teganganArus);
lcd.print("mA ");
lcd.print(teganganSensor);
lcd.print("V ");
currentState = digitalRead(buttonPin);
if (currentState != lastState) {
if (currentState == HIGH) {
turnOnRelays();
} else {
turnOffRelays();
}
delay(50); // Debouncing delay
}
lastState = currentState;
}
void turnOnRelays() {
for (int i = 0; i < numRelays; i++) {
digitalWrite(relayPins[i], HIGH);
delay(delayTime);
}
}
void turnOffRelays() {
for (int i = numRelays - 1; i >= 0; i--) {
digitalWrite(relayPins[i], LOW);
delay(delayTime);
}
}