Kód: Vybrat vše
#include <Servo.h> //zahrnutí knihovny pro ovládání servo motoru
Servo myservo; //každý motor má svou instanci třídy Servo
int buttonPin = 3; // číslo pinu tlačítka
int pos = 0; //proměnná obsahující pozici motoru (úhel natočení)
int buttonState; //nejnovější hodnota načtená ze vstupního pinu
int lastButtonState = LOW; // 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 = 50; // čas debounce prodlevy
void setup() {
myservo.attach(9); //servo je připojeno na pin 9
pinMode(buttonPin, INPUT); //nastavení tlačítka jako vstup
myservo.write(pos); // nastavení počátečního stavu serva
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) { // kmita to, od minule se to zmenilo, zacnu debounce cas pocitat znovu (tedy od posledni zmeny, ktera je ted)
lastDebounceTime = millis();
};
lastButtonState = reading; // tady si to ulozim, v dalsim pruchodu loop() to zase porovnam s novym reading, zda se to mezi tim nezmenilo
if ((millis() - lastDebounceTime) > debounceDelay) { // jo, uz se to dlouho nezmenilo, tak je to stabilni a spravna hodnota
if (reading != buttonState) { // Pokud se stav tlačítka změnil
buttonState = reading; // zapamatuju si novy stav
}
}
// a tady (treba) budu neco delat
if (buttonState == HIGH) { // tlacitko bylo pusteno
// nejake vrteni servama
for (pos = 0; pos <= 180; pos += 1) {
myservo.write(pos);
delay(15);
};
for (pos = 180; pos >= 0; pos -= 1) {
myservo.write(pos);
delay(15);
};
}
}