Серво постоянного вращения fs5113r

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Mixael, 30 май 2016.

  1. Mixael

    Mixael Нуб

    Решил запилить небольшой проект. Купил серву постоянного вращения, т.к. нужно чтобы проворачивалась на несколько оборотов, troyka shield, arduino uno. Подключил по инструкции с сайта, для теста напрямую. Прошил простейший скетч:
    Код (C++):
    #include <Servo.h>
    Servo myservo;

    void setup() {
      myservo.attach(10, 500, 2500);
    }

    void loop()
    {
      myservo.write(500);
      delay(1000);
      myservo.write(500);
      delay(1000);
      myservo.detach();
      }
    Собственно, жду, что серва пару раз провернётся и отключится. Но не тут-то было - работает постоянно. Подскажите, что я делаю не так? Как выбрать продолжительность и направление вращения?
     
  2. ZAZ-965

    ZAZ-965 Гуру

    Попробуйте добавить проверку
    Код (C++):
    #include <Servo.h>
    Servo myservo;

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

    void loop()
    {
      if (myservo.attached()) {
           myservo.write(550);
           delay(1000);
           myservo.write(2400);
           delay(1000);
           myservo.detach(); }
      }
    Если в myservo.write передавать значение более чем 543, то это значение обрабатывается как микросекунды (допустимо от 544 до 2400)
     
  3. Mixael

    Mixael Нуб

    Вставил проверку - в общем, вращается, но на величину delay ему пофиг - дернется и дальше продолжает, на detach так же ноль внимания.
     
  4. XCB

    XCB Гик

    а если так:
    myservo.write(1500);
    delay(1000);
    myservo.write(1000);
    delay(1000);
    myservo.write(1500);
    delay(1000);
    myservo.write(2000);
    delay(1000);
    myservo.write(1500);
     
  5. vvr

    vvr Инженерище

    myservo.write(val);
    val = 90; // стоим на месте
    val > 90; // крутим в одну сторону
    val < 90; // крутим в другую
     
  6. Mixael

    Mixael Нуб

    Всё равно так же. Видимо, с сервой что-то.