Серво Дрыг Дрыг :Р

Тема в разделе "Arduino & Shields", создана пользователем Sergey991, 5 янв 2014.

  1. Sergey991

    Sergey991 Нерд

    Всем привет. Сразу к делу.

    При эксперементировании с 4х канальной аппаратурой на ардуинке, все значения мониторятся на компе и совершенно идеальны (ну разброс минимален), но при подаче их на сервы они принимают их, но постоянно дергаются. Сервы питаю от отдельного и надежного источника.

    Вот то что передает передатчик
    Код (Text):
    75
    75
    75
    75
    75
    75
    75
    75
    75
    75
    78
    82
    93
    101
    101
    101
    101
    101
     
    Что получает приемник
    Код (Text):
    74
    74
    74
    74
    74
    74
    74
    74
    74
    74
    74
    74
    74
    74
    74
    77
    77
    77
    77
    77
    77
    77
    100
    100
    100
    100
    100
    100
     
    Естественно я мониторю только одну серву.
    Жду ваших предположений...
     
  2. acos

    acos Официальный гик Администратор

    Вы так быстро к делу подошли, что я даже не понял - что откуда берется? сервы цифровые что-ли? или это вы ширину пулься как-то меряете? (в таком случае стандартный вопрос - земли объединяли ли?)
     
  3. Sergey991

    Sergey991 Нерд

    Сервы аналоговые. Управляю сей библиотекой <Servo.h> .
    Конечно общий провод (земля) подключен как надо )
    Вот участки кода для работы с серво
    Код (Text):
    #include <Servo.h>

    Servo myservo1;
    Servo myservo2;
    Servo myservo3;
    Servo myservo4;

    int a=0;
    int b=0;
    int c=0;
    int d=0;
    int i=0;
    /////////////////////
    void setup() {
      myservo1.attach(9);
      myservo2.attach(10);
      myservo3.attach(11);
      myservo4.attach(12);
      pinMode(2, OUTPUT);
      Serial.begin(9600);
    }

    void loop() {
      a=Array[0]*100+Array[1]*10+Array[2]; //Шаманский способ переделки аски текста в обычные символы
      a = map(a, 5328, 5508, 0, 179);
      b=Array[3]*100+Array[4]*10+Array[5];
      b = map(b, 5330, 5507, 0, 179);

      c=Array[6]*100+Array[7]*10+Array[8];
      c = map(c, 5325, 5508, 0, 179);
      d=Array[9]*100+Array[10]*10+Array[11];
      d = map(d, 5515, 5299, 0, 179);
      Serial.println(a);

      myservo1.write(a);
      myservo2.write(b);
      myservo3.write(c);
      myservo4.write(d);
      i=0;
    }
    ( Я удалил участок кода, в котором происходит синхронизация)
     
  4. Sergey991

    Sergey991 Нерд

    Все я разобрался, проблема была в виртуальном последовательном порте.... грубо говоря он флудил ШИМу