Привет народ, помогите со скетчем, сам не бум-бум Компоненты: серво мотор 180", 4кнопки, светодиод. 4 кнопки для поворота сервы на 0",45"135",180" градусов. Светодиод включается и горит пока серво находиться в одном из перечисленных положений. Что нужно: (серво на 90 нажимаю кнопку, серво поворачивается на 0",при этом загорается св.диод и горит. Через 5 минут возвращается в положение 90" и св.диод гаснет . Или так, нажимаю кнопку, серво поворачивается на 0" (5 минут не прошло) нажимаю другую кнопку, серво поворачивается на 180", при этом св.диод горит, через 5 минут возвращается на 90" и св.диод гаснет. Проблема в том, что я незнаю как вернуть его через 5 минут после последнего действия на 90" Помогите плиз. Скетч который я нарисовал неподходит. #include<Servo.h> Servo myservo; int led = 9; int button_1 = 2; int button_2 = 3; int button_3 = 4; int button_4 = 5; int time = 50000; int val=0; void setup() { pinMode(led, OUTPUT); pinMode(button_1, INPUT); pinMode(button_2, INPUT); pinMode(button_3, INPUT); pinMode(button_4, INPUT); myservo.attach(8); } void loop() { val = digitalRead(button_1); if (val == HIGH) { digitalWrite(led, HIGH); myservo.write(0); delay(time); myservo.write(90); digitalWrite(led, LOW); } val = digitalRead(button_2); if (val == HIGH) { digitalWrite(led, HIGH); myservo.write(45); delay(time); myservo.write(90); digitalWrite(led, LOW); } val = digitalRead(button_3); if (val == HIGH) { digitalWrite(led, HIGH); myservo.write(135); delay(time); myservo.write(90); digitalWrite(led, LOW); } val = digitalRead(button_4); if (val == HIGH) { digitalWrite(led, HIGH); myservo.write(180); delay(time); myservo.write(90); digitalWrite(led, LOW); } }
Сначала доведи код без возврата, чтобы просто все кнопки нормально работали и серва их слушалась. На каждую кнопку заведи свою переменную. Сделай антидребезг контактов кнопок. Когда это заработает, то можно и возвратом сервы заняться.