Управление Servo 360

Тема в разделе "Arduino & Shields", создана пользователем MasterX2, 22 дек 2011.

  1. MasterX2

    MasterX2 Нерд

    Всем привет! Случилось так что в магазине Амперки не оказалось серв с контролем угла поворота.. пришлось взять 360 и программно управлять углом. Вот мой вариант. Буду рад выслушать дополнения и исправления. Величины servostop и задержка активности delay(3.85*poworot) выявлены опытным путём, они зависят от серва и мощности источника питания.



    Код (Text):
    #include <Servo.h>
    Servo myservo;
    int lastservopos = 0;
    int poworot;
    int servostop = 93;

    void setup() {
      myservo.attach(6);
    }

    void loop() {
      delay(5000);
      rotateservo(90);
      delay(500);
      rotateservo(180);
      delay(500);
      rotateservo(0);
      delay(500);
      rotateservo(90);
      delay(500);
      rotateservo(45);
      delay(500);
      rotateservo(135);
      delay(500);
      rotateservo(0);
      delay(500);
      rotateservo(360);
      delay(500);
      rotateservo(270);
      delay(500);
      rotateservo(225);
      delay(500);
      rotateservo(180);
      delay(500);
    }

    void rotateservo(int degree) {
      degree = constrain(degree, 0, 360);
      if (degree > lastservopos) {
        poworot = degree - lastservopos;
        myservo.write(0);
        delay(3.85*poworot);
        myservo.write(servostop);
        lastservopos = degree;
      }
      if (degree < lastservopos) {
        poworot = lastservopos - degree;
        myservo.write(180);
        delay(3.85*poworot);
        myservo.write(servostop);
        lastservopos = degree;
      }
    }
     
  2. нет возврата в первоначальный угол!нужна калибровка!
     
  3. ой.извиняюсь,что за критиковал не обратил внимание на скетч