// Lábak definiálása
const int switchPin = A4; // Kapcsoló az A4-en
const int enablePin = 2; // Aktiváló jel a D2-en
const int buttonPin = 12; // Nyomógomb a D12-en
const int ledPins[] = {11, 10, 8, 7, 5, 4, 3}; // LED-ek lábai
const int numLeds = 7; // LED-ek száma
int buttonState = 0; // Nyomógomb állapota
int lastButtonState = 0; // Nyomógomb előző állapota
int timerDuration = 0; // Időzítő hossza
int ledIndex = 0; // Aktuális LED index
unsigned long lastDebounceTime = 0; // Debounce időzítő
unsigned long debounceDelay = 50; // Debounce késleltetés (50ms)
unsigned long startTime = 0; // Időzítő indítási ideje
void setup() {
// Lábak inicializálása
pinMode(switchPin, INPUT);
pinMode(enablePin, OUTPUT);
pinMode(buttonPin, INPUT);
for(int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // Kezdetben minden LED kikapcsolva
}
digitalWrite(enablePin, LOW); // Kezdetben a D2 láb inaktív
}
void loop() {
// Ellenőrizzük az A4 kapcsolót
if (digitalRead(switchPin) == HIGH) {
digitalWrite(enablePin, HIGH); // D2 láb aktív
} else {
digitalWrite(enablePin, LOW); // Minden kikapcsol, ha az A4 kapcsoló nincs aktiválva
for(int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
timerDuration = 0;
ledIndex = 0;
return;
}
// Nyomógomb állapotának leolvasása
int reading = digitalRead(buttonPin);
// Ellenőrizzük, hogy a gomb állapota változott-e
if (reading != lastButtonState) {
lastDebounceTime = millis(); // Debounce időzítő újraindítása
}
// Ha a gomb állapota stabilan HIGH (lenyomva) van a debounce idő után
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading == HIGH && buttonState == LOW) {
if (ledIndex < numLeds) {
timerDuration += 10; // Időzítő növelése 10 másodperccel
digitalWrite(ledPins[ledIndex], HIGH); // Következő LED bekapcsolása
ledIndex++;
startTime = millis(); // Időzítő indítása
}
}
buttonState = reading; // Gomb állapotának frissítése
}
lastButtonState = reading; // Előző állapot frissítése
// Időzítő ellenőrzése
if (millis() - startTime >= timerDuration * 1000) {
// Ha az idő lejárt, minden LED kikapcsol
for(int i = 0; i < numLeds; i++) {
digitalWrite(ledPins[i], LOW);
}
timerDuration = 0;
ledIndex = 0;
}
}