Проблема по переводу серво в режим работы от кнопки "по требованию"
- Войдите на сайт для отправки комментариев
Ср, 08/01/2014 - 17:26
Доброго времени суток!
Возникла проблема, касаемая серво - не получается перевести режим работы серво "из крайнего левого в крайнее правое положение" в пошаговый режим. Что подразумевается под пошаговым: нажал кнопку - происходит поворот, отпустил кнопку - движение остановилось ровно на том положении, когда была отпущена кнопка. Т.е. подобие шагового мотора, но на серво.
Подскажите, что можно внести в код, чтоб достичь желаемого результата?
Сразу говорю, шаговик у меня есть, и он по моей задумке работает исправно, но если б у меня было их два, вероятно, эта тема бы могла и не появиться, увы.
#include <Servo.h> Servo servol; // присвоение имени серво int button1 = 0; // пин для одного положения серво int press1 = 0; // состояние пина 0 int button2 = 1; // пин для другого положения серво int press2 = 0; // состояние пина 1 const int g = 0; int n = 0; const int b = 0; int pos = 0; // начальная позиция серво (в данный момент нигде е используется) void setup() { pinMode(button1, OUTPUT); pinMode(button2, OUTPUT); servol.attach(7); digitalWrite(0, LOW); // при нажатии пин 0 переходит в режим HIGH digitalWrite(1, LOW); // при нажатии пин 1 переходит в режим HIGH } void loop() { press1 = digitalRead(button1); // считывание состояния пина 0 if (press1 == HIGH) { delay(50); // анти-дребезг servol.write(20); // крайнее положение на 20 градусов } press2 = digitalRead(button2); // считывание состояния пина 1 if (press2 == HIGH) { delay(50); // анти-дребезг servol.write(160); // крайнее положение на 160 градусов } }
Хочу выразить благодарность за проявленную помощь - код действительно работает в соответствии с ожиданиями, как говорится, мастер знает свое дело.
Спасибо огромное!