Проблема по переводу серво в режим работы от кнопки "по требованию"
- Войдите на сайт для отправки комментариев
Ср, 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 градусов
}
}
void loop() { static byte ang = 20; if (digitalRead(button1) == HIGH) // считывание состояния пина 0 { delay(50); // анти-дребезг ang--; if(ang < 20) ang = 20; // крайнее положение на 20 градусов } if (digitalRead(button2) == HIGH) // считывание состояния пина 1 { delay(50); // анти-дребезг ang++; if(ang > 160) ang = 160; // крайнее положение на 160 градусов } servol.write(ang); }Хочу выразить благодарность за проявленную помощь - код действительно работает в соответствии с ожиданиями, как говорится, мастер знает свое дело.
Спасибо огромное!