#include <Servo.h>
// Definícia registrov pre tlačidlá
#define TLACIDLA_REG PIND // Port pre tlačidlá (D port)
#define TLACIDLA_DDR DDRD // DDR pre tlačidlá
// Definícia bitových másk pre tlačidlá
#define LEFT_BUTTON_BIT 2 // Bit pre ľavé tlačidlo (pin 2)
#define RIGHT_BUTTON_BIT 3 // Bit pre pravé tlačidlo (pin 3)
// Pin pre servomotor
const int servoPin = 9;
// Objekt pre servomotor
Servo servo;
// Premenná pre uhol otáčania serva
int uhol = 90; // Úvodný uhol nastavený na stred
int krok = 10; // Veľkosť kroku pohybu
void setup() {
// Nastavenie tlačidiel ako vstupov
TLACIDLA_DDR &= ~(1 << LEFT_BUTTON_BIT); // Ľavé tlačidlo
TLACIDLA_DDR &= ~(1 << RIGHT_BUTTON_BIT); // Pravé tlačidlo
// Inicializácia servomotoru
servo.attach(servoPin);
servo.write(uhol); // Nastavenie úvodného uhla
}
void loop() {
// Čítanie stavu tlačidiel a ovládanie servomotoru
if (!(TLACIDLA_REG & (1 << LEFT_BUTTON_BIT))) {
// Stlačené ľavé tlačidlo - pohyb doľava
if (uhol >= 0) {
uhol = max(uhol - krok, 0); // Zabezpečuje, aby uhol nebol menší ako 0
servo.write(uhol); // Otáčanie na nový uhol
delay(100); // Krátka pauza
}
} else if (!(TLACIDLA_REG & (1 << RIGHT_BUTTON_BIT))) {
// Stlačené pravé tlačidlo - pohyb doprava
if (uhol <= 180) {
uhol = min(uhol + krok, 180); // Zabezpečuje, aby uhol nebol väčší ako 180
servo.write(uhol); // Otáčanie na nový uhol
delay(100); // Krátka pauza
}
}
}