#include <Servo.h>
#include <LiquidCrystal_I2C.h>
bool aktivne= false;
bool ukoncenie = false;
int uhol = 0;
long cakaj = 0;
LiquidCrystal_I2C lcd(0x27, 16, 2);
Servo servo;
ISR(INT0_vect) {
aktivne = true;
uhol = 45;
cakaj = millis() + 2000;
}
ISR(INT1_vect) {
ukoncenie = true;
uhol = 90;
cakaj = millis() + 2000;
}
void setup() {
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Uhol natocenia:");
servo.attach(11);
servo.write(0);
DDRD &= ~(1<<2); // Nastav INT0 pin ako vstup
DDRD &= ~(1<<3); //
PORTD |= 1<<2; // Zapni pull-up rezistor na INT0 pine
PORTD |= 1<<3;
EIMSK |= 1<<INT0; // Zapni INT0 prerusenie
SREG |= 1<<7;
EICRA |= 1<<ISC01;
EICRA &= ~(1<<ISC00);
EIMSK |= 1<<INT1;
EICRA |= 1<<ISC11;
EICRA &= ~(1<<ISC10);
}
void riadenie() {
lcd.setCursor(0,0);
lcd.print("Uhol natocenia:");
if(ukoncenie == true) {
aktivne = false;
servo.write(90); // 90 stupnov
lcd.setCursor(0,1);
lcd.print(uhol);
if(cakaj < millis()) {
lcd.setCursor(0,1);
lcd.print(" ");
servo.write(0);
ukoncenie = false;
}
}
if(aktivne == true) {
ukoncenie = false;
servo.write(45); // 45 stupnov
lcd.setCursor(0,1);
lcd.print(uhol);
if(cakaj < millis()) {
lcd.setCursor(0,1);
lcd.print(" ");
servo.write(0);
aktivne = false;
}
}
}
void loop() {
riadenie();
}