Stlačím to isté tlačítko držím ho 1,5s zhasne led, pustím tlačítko. Upravil som si tento kód čo som našiel na nete. Funguje to presne tak ako chcem, ale je tam jeden neduh. Stlačím tlačítko a držím ho, po 1,5s sa rozsvieti led, pustím tlačítko. Keď chcem znova stlačiť tlačítko aby led zhasla, musím počkať 1,5s teda ten nastavený čas a až potom mi to znova funguje. Čiže tlačítko musí byť 1,5s v klude nestlačené aby znova fungovalo. To by som tam nechcel mať. Vedeli by ste mi pomôcť.
Kód: Vybrat vše
// konstanty použité k nastavení čísel pinů se nezmění:
const int buttonPin = 10; // číslo pinu tlačítka
const int ledPin = 11; // číslo pinu LED
const int ledPin2 = 13;
// Proměnné se změní:
int ledState = HIGH; // současný stav výstupního pinu
int buttonState; //nejnovější hodnota načtená ze vstupního pinu
int lastButtonState = HIGH; // předchozí hodnota načtení ze vstupního pinu
// Následné proměnné jsou typu long, jelikož čas měřený v milisekundách se
//rychle změní na větší číslo, jež nemůže být uloženo v int
long lastDebounceTime = 0; // čas posledního změny výstupního pinu
long debounceDelay = 1500; // čas debounce prodlevy; pokud výstup bliká,
//je potřeba čas „zvětšit“
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
// nastavte počáteční stav LED
digitalWrite(ledPin, ledState);
digitalWrite(ledPin2, ledState);
}
void loop() {
// Stav spínače přiřaďte do místní proměnné:
int reading = digitalRead(buttonPin);
// Zkontroluje, zda-li jste stlačili tlačítko
// (tj. že vstup se z LOW změnil na HIGH), a od posledního zmáčknutí jste čekali
// dostatečně dlouho na to, aby byl veškerý šum ignorován:
// Pokud se spínač změnil kvůli šumu nebo stlačení:
if (reading != lastButtonState) {
// upravte proměnou lastDebounceTime
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// Ať už je načtená hodnota jakákoliv, byla tam déle než debounce prodleva,
// berme ji tedy jako aktuální stav:
// Pokud se stav tlačítka změnil:
if (reading != buttonState) {
buttonState = reading;
// LED přepněte pouze když je nový stav tlačítka označen jako HIGH
if (buttonState == LOW) {
ledState = !ledState;
}
}
}
// nastavte LED:
digitalWrite(ledPin, ledState);
digitalWrite(ledPin2, ledState);
// načtené hodnoty uložte. V příští smyčce bude označeno jako lastButtonState:
lastButtonState = reading;
}