Servo Sg 90
- Войдите на сайт для отправки комментариев
Втр, 20/08/2019 - 01:58
Здравствуйте! Подскажите пожалуйста как сделать. Есть серво привод sg 90. Есть кнопка. Кнопка считает количество поворотов серво. Если переменная count = 5 то серво должна поворачиваться 5 раз по заданым углам. Как это реализовать?
myservo.attach(9); myservo.write(pos0); switch (count) { case 1: myservo.write(pos1); delay(1500); myservo.write(pos0); myservo.detach(); break; case 2: myservo.write(pos1); delay(1500); myservo.write(pos2); delay(1500); myservo.write(pos0); delay(1500); myservo.detach(); break; case 3: myservo.write(pos1); delay(1500); myservo.write(pos2); delay(1500); myservo.write(pos3); delay(1500); myservo.write(pos0); delay(1500); myservo.detach(); break; case 4: myservo.write(pos1); delay(1500); myservo.write(pos2); delay(1500); myservo.write(pos3); delay(1500); myservo.write(pos4); delay(1500); myservo.write(pos0); delay(1500); myservo.detach(); break; case 5: myservo.write(pos1); delay(1500); myservo.write(pos2); delay(1500); myservo.write(pos3); delay(1500); myservo.write(pos4); delay(1500); myservo.write(pos5); delay(1500); myservo.write(pos0); delay(1500); myservo.detach(); break; }Не могли бы подсказать более правильное решение
Писал в блокноте, ошибки не праверял, примерно так бы я писал.
for(int i = 1; i > count; i++){ myservo.write(i); delay(1500); } myservo.write(pos0); myservo.detach();Мне интересно, ну чисто поражать, как может кнопка считать. Обычно кнопка задаёт.
if(buuton)i++;
Ржи.
if(buuton)i++;
Ржи.
Ха-ха-ха. Ржу не могу. Вы когда писали что напрягали.
Писал в блокноте, ошибки не праверял, примерно так бы я писал.
for(int i = 1; i > count; i++){ myservo.write(i); delay(1500); } myservo.write(pos0); myservo.detach();Спасибо за ответ. У меня задано 5 позиций серво pos1..pos5. Если кнопка нажата 5 раз, то серво поворачивается 5 раз по заданным позициям, если 3 то 3 раза поворот и т.д . У вас если я правильно понимаю, серво будет поворачиваться только на 1 градус заданное количество count
for (int i = 1; i <= count; i++) { k = i*32; //повороты серво с шагом 32 заданное количество count myservo.write(k); delay(1500); } delay(500); myservo.write(pos0);Сделал вот так, может кому пригодится
Можно и так оставить, но я бы чтобы не делать умножение каждый цыкл сделал бы так
k = count * 32; for (int i = 1; i <= k; i += 32) { myservo.write(i); delay(1500); }