Servo Sg 90

yct9
Offline
Зарегистрирован: 27.11.2015

Здравствуйте! Подскажите пожалуйста как сделать. Есть серво привод sg 90. Есть кнопка. Кнопка считает количество поворотов серво. Если переменная count  = 5 то серво должна поворачиваться 5 раз по заданым углам. Как это реализовать? 

 

yct9
Offline
Зарегистрирован: 27.11.2015
 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;
    }

Не могли бы подсказать более правильное решение 

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

Писал в блокноте, ошибки не праверял, примерно так бы я писал.

for(int i = 1; i > count; i++){
       myservo.write(i);
       delay(1500);
       }
   myservo.write(pos0);
   myservo.detach();

 

astwo
Offline
Зарегистрирован: 10.07.2019

Мне интересно, ну чисто поражать, как может кнопка считать. Обычно кнопка задаёт.

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

if(buuton)i++;

Ржи.

astwo
Offline
Зарегистрирован: 10.07.2019

Dmti пишет:

if(buuton)i++;

Ржи.


Ха-ха-ха. Ржу не могу. Вы когда писали что напрягали.

yct9
Offline
Зарегистрирован: 27.11.2015

Dmti пишет:

Писал в блокноте, ошибки не праверял, примерно так бы я писал.

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 

yct9
Offline
Зарегистрирован: 27.11.2015
  

  for (int i = 1; i <= count; i++) {
      k =  i*32; //повороты серво с шагом 32 заданное количество count
      myservo.write(k);
      delay(1500);
    }
    delay(500);
    myservo.write(pos0);

Сделал вот так, может кому пригодится 

Dmti
Dmti аватар
Offline
Зарегистрирован: 13.10.2013

Можно и так оставить, но я бы чтобы не делать умножение каждый цыкл сделал бы так

k = count * 32;
for (int i = 1; i <= k; i += 32) {
    myservo.write(i);
    delay(1500);
  }