#include <LiquidCrystal.h>
LiquidCrystal lcd(4, 5, 6, 7);
const int coinPin = 1;
const int relay1Pin = 4;
const int relay2Pin = 5;
const int countdownTime = 600; // 10 minutes in seconds
unsigned long previousMillis = 0;
int coinCount = 0;
int countdown = countdownTime;
void setup() {
lcd.begin(16, 2);
lcd.print("Coin Counter");
pinMode(relay1Pin, OUTPUT);
pinMode(relay2Pin, OUTPUT);
attachInterrupt(digitalPinToInterrupt(coinPin), coinInterrupt, FALLING);
}
void loop() {
unsigned long currentMillis = millis();
if (countdown > 0) {
if (currentMillis - previousMillis >= 1000) {
previousMillis = currentMillis;
countdown--;
updateDisplay();
}
} else {
digitalWrite(relay2Pin, LOW); // Turn off relay 2
}
}
void coinInterrupt() {
coinCount++;
updateDisplay();
if (coinCount >= 2) {
coinCount = 0;
countdown += countdownTime; // Increment countdown by 10 minutes
digitalWrite(relay2Pin, HIGH); // Turn on relay 2
}
}
void updateDisplay() {
lcd.setCursor(0, 1);
lcd.print("Coins: ");
lcd.print(coinCount);
lcd.print(" ");
lcd.setCursor(9, 1);
lcd.print("Time: ");
lcd.print(countdown);
lcd.print("s ");
}