const int buttonPin = 21;
const int ledPin = 19;
int counter = 0;
int randomNumber = 0;
// Debounce promenljive
unsigned long pressStartTime = 0;
bool buttonPressed = false; // da li je taster trenutno pritisnut (ignorišemo buncanje)
bool pressProcessed = false; // da li smo već obradili ovaj pritisak
const unsigned long debounceDelay = 50; // koliko ms mora biti stabilan LOW da bi se prihvatio pritisak
bool ledActive = false;
unsigned long ledStartTime = 0;
const unsigned long ledDuration = 10000;
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
randomSeed(esp_random());
randomNumber = random(1, 11);
Serial.println("=== SISTEM STARTOVAN ===");
Serial.print("Random broj: ");
Serial.println(randomNumber);
Serial.println("========================");
}
void loop() {
bool current = digitalRead(buttonPin);
// --- Debounce logika ---
if (current == LOW && !buttonPressed) {
// Taster je upravo prešao u LOW – počinjemo merenje vremena
pressStartTime = millis();
buttonPressed = true;
pressProcessed = false;
}
if (buttonPressed && !pressProcessed && (millis() - pressStartTime >= debounceDelay)) {
// Taster je stabilno pritisnut dovoljno dugo – prihvatamo pritisak
pressProcessed = true;
if (!ledActive) {
counter++;
Serial.print("Broj PRITISAKA: ");
Serial.println(counter);
if (counter == randomNumber) {
Serial.println("=== POGODAK! LED pali 10 sekundi ===");
digitalWrite(ledPin, HIGH);
ledActive = true;
ledStartTime = millis();
}
} else {
Serial.println("LED je upaljen, pritisak se ne računa.");
}
}
if (current == HIGH && buttonPressed) {
// Taster je pušten – resetujemo stanje za sledeći pritisak
buttonPressed = false;
pressProcessed = false;
}
// --- Upravljanje LED (neblokirajuće) ---
if (ledActive && (millis() - ledStartTime >= ledDuration)) {
digitalWrite(ledPin, LOW);
ledActive = false;
counter = 0;
randomNumber = random(1, 11);
Serial.println("=== RESET SISTEMA ===");
Serial.print("Novi random broj: ");
Serial.println(randomNumber);
Serial.println("======================");
}
}