Дергаются сервы

Тема в разделе "Arduino & Shields", создана пользователем Miha1410, 7 янв 2022.

  1. Miha1410

    Miha1410 Нуб

    Всем привет! Все сервомашинки подключены к потенциометрам и все работают, НО в спокойном состоянии очень дергаются. В чем может быть причина?
    Код (C++):
    #include <Servo.h>
    Servo servo1;
    Servo servo2;
    Servo servo3;
    Servo servo4;
    Servo servo5;


    void setup() {
    servo1.attach(4);
    servo2.attach(5);
    servo3.attach(6);
    servo4.attach(7);
    servo5.attach(8);



    }

    void loop() {
    int potent1 = analogRead(0);
    potent1 = map(potent1,0,1024,0,180);
    servo1.write(potent1);
    servo2.write(potent1);
    servo3.write(potent1);

    int potent2 = analogRead(1);
    potent2 = map(potent2,0,1024,0,180);
    servo4.write(potent2);

    int potent3 = analogRead(2);
    potent3 = map(potent3,0,1024,0,180);
    servo5.write(potent3);
    }
     
  2. SergeiL

    SergeiL Оракул Модератор

    Шум АЦП - значения возвращаемые analogRead "в спокойном состоянии" незначительно отличаются.
    Вывести в монитор порта значения возвращаемые analogRead(). Посмотреть что получаем и что передаем в .servoХ.write()
    Сразу станет понятно, почему дергается серва.
    Как устранить - обработать значения получаемые от analogRead().
     
  3. User248

    User248 Гик

    У вас какая модель ардуино? Нужно писать analogRead(A0), а не analogRead(0). A0 это макрос, который означает 14. Аналогично для других входов.
     
    Последнее редактирование: 8 янв 2022
  4. SergeiL

    SergeiL Оракул Модератор

    Все просто: читаем тут
     
  5. 64detali

    64detali Нерд

    analogRead() обращается именно к аналоговым пинам, не обязательно указывать это индексом А.