oprav prvně zásadní chyby v špatně napsaném kódu ...
Ten středník za závorkou } nemá co dělat.
Kód: Vybrat vše
if (reading != lastButtonState) { // kmita to, od minule se to zmenilo, zacnu debounce cas pocitat znovu (tedy od posledni zmeny, ktera je ted)
lastDebounceTime = millis();
};
místo = patří ==
znak "=" znamená "přiřaď" ... a = 10 znamená "do proměné a přiřaď hodnotu 10"
znak "==" znamená "rovná se" ... a == 10 znamená "proměná a rovná se 10"
Kód: Vybrat vše
if (buttonTime = 15000) {
digitalWrite(Led,LOW); // Led nesvítí servo se vrtí v nastaveném čase
}
Tipy pro zjednodušení kódu :
Jak je ten IF, kde se testuje poloha serva ... tam je i místo kde můžeš napsat rovnou příkaz pro rožnutí ledky signalizující jeden směr a zhasnutí té druhé. Hned pod ním je druhej IF testující druhou polohu serva a tam můžeš napsat zase rovnou příkaz pro ovládání LEDek, akorát zhasneš tu první a rožneš tu druhou. Příkaz který rožne LED která signalizuje běh serva můžeš zapsat hned rovnou za ten WHILE. Příkaz, který LEDku zase zhasne pak příjde za tu složenou závorku, která ten WHILE ukončuje.
K tomu vrtění se hned po startu ... zkus definovat buttonState
int buttonState = LOW; // nejnovější hodnota načtená ze vstupního pinu tlačítka
jo a používáš u tlačítka rezistor ? připoj 10Kohm odpor (klidně i vyžší ... s nižším opatrně, ale s klidem tam dej i 4k7) mezi pin arduina a GND ... pokud ho tam nemáš, tak ten PIN v podstatě visí ve vzduchu nikde nepřipojen a je velmi náchylný na rušení v podstatě čímkoliv ... i přiblížením ruky.