Ja som sa do nikoho neopieral, oni sa opierali do mňa, ale to je jedno ja som urazený neni

Dobre tak to skúsim ešte raz. Kód mám tento, lebo všetky neúspešné pokusy som vymazal. Viem že ten kód je určený na niečo iné, ale zatial mi funguje najlepšie a všetky jeho úpravy skončili neúspechom.
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;
}
Potom mi tu jeden člen napísal tento kód, ktorý tiež nefunguje podla mojich predstáv a všetky moje úpravy skončili taktiež neúspechom.
Kód: Vybrat vše
const int buttonPin = 10; // číslo pinu tlačítka
const int ledPin = 11; // číslo pinu LED
const int ledPin2 = 13;
long lastDebounceTime = 0;
long debounceDelay = 1500;
int buttonState1 = HIGH;
int lastButtonState1 = LOW;
unsigned long debounceInterval = 50;
unsigned long timer = 0;
unsigned long lastDebounceTime1 = 0;
int reading;
int rezim = 0;
void setup() {
Serial.begin(115200);
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
pinMode(ledPin2, OUTPUT);
}
void loop() {
switch (rezim) {
case 0:
reading = digitalRead(buttonPin);
Serial.println(reading);
if (reading == LOW) {
timer = millis();
reading = digitalRead(buttonPin);
while (reading == LOW) {
reading = digitalRead(buttonPin);
if (millis() - timer >= debounceDelay) {
digitalWrite(ledPin2, HIGH);
rezim = 1;
Serial.println("LED ZAPNUTA");
break;
}
}
}
break;
default:
reading = digitalRead(buttonPin);
if (reading != lastButtonState1) {
lastDebounceTime1 = millis();
}
if (((millis() - lastDebounceTime1) > debounceInterval)&& lastDebounceTime1!=0){
if (reading != buttonState1) {
buttonState1 = reading;
if (buttonState1 == LOW) {
digitalWrite(ledPin2, LOW);
rezim = 0;
Serial.println("LED VYPNUTA");
}
}
}
lastButtonState1 = reading;
break;
}
}
Rad by som to pochopil ale zatiaľ to nechapem. Bude to na self latching ,ale myslím že je to nepodstatné.