#include <SevSeg.h>
SevSeg sevSeg1, sevSeg2;
const int buttonPins[] = {A0, A1, A2, A3, A4, A5};
const int relayPin1 = 2; // Pin untuk relay pertama
const int relayPin2 = 3; // Pin untuk relay kedua
const int comPin1 = 12; // Common pin seven segment pertama
const int comPin2 = 13; // Common pin seven segment kedua
const int segPins[] = {5, 6, 7, 8, 9, 10, 11}; // Pin untuk segment seven segment
int buttonState[6] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
int lastButtonState[6] = {HIGH, HIGH, HIGH, HIGH, HIGH, HIGH};
unsigned long lastDebounceTime[6] = {0, 0, 0, 0, 0, 0};
unsigned long debounceDelay = 50;
int currentNumber1 = 0;
int currentNumber2 = 0;
unsigned long startTime = 0;
bool relay2Active = false;
void setup() {
sevSeg1.begin(COMMON_CATHODE, segPins, comPin1);
sevSeg2.begin(COMMON_CATHODE, segPins, comPin2);
for (int i = 0; i < 6; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
pinMode(relayPin1, OUTPUT);
pinMode(relayPin2, OUTPUT);
}
void loop() {
handleButtons();
sevSeg1.setNumber(currentNumber1);
sevSeg1.refreshDisplay();
sevSeg2.setNumber(currentNumber2);
sevSeg2.refreshDisplay();
// Cek jika angka pada seven segment pertama dan kedua sama
if (currentNumber1 == currentNumber2) {
digitalWrite(relayPin1, HIGH); // Aktifkan relay pertama
} else {
digitalWrite(relayPin1, LOW); // Matikan relay pertama
}
// Cek jika angka pada seven segment pertama adalah 9
if (currentNumber1 == 9) {
if (!relay2Active) {
startTime = millis();
relay2Active = true;
}
unsigned long elapsedTime = millis() - startTime;
// Aktifkan relay kedua selama 10 detik
if (elapsedTime < 10000) {
digitalWrite(relayPin2, HIGH);
} else {
digitalWrite(relayPin2, LOW);
relay2Active = false;
}
} else {
digitalWrite(relayPin2, LOW);
relay2Active = false;
}
}
void handleButtons() {
for (int i = 0; i < 6; i++) {
int reading = digitalRead(buttonPins[i]);
if (reading != lastButtonState[i]) {
lastDebounceTime[i] = millis();
}
if ((millis() - lastDebounceTime[i]) > debounceDelay) {
if (reading != buttonState[i]) {
buttonState[i] = reading;
if (buttonState[i] == LOW) {
// Tombol ditekan
switch (i) {
case 0:
currentNumber1 = 5;
break;
case 1:
currentNumber1 = 6;
break;
case 2:
currentNumber1 = 7;
break;
case 3:
currentNumber1 = 8;
break;
case 4:
currentNumber1 = 9;
break;
case 5:
currentNumber2 = (currentNumber2 + 1) % 10; // Increment counter seven segment kedua
break;
}
}
}
}
lastButtonState[i] = reading;
}
}