Не работает управление через ШИМ

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем nomri95, 12 янв 2015.

  1. nomri95

    nomri95 Нуб

    было собрана плата для управления ЭП. При подключении к 9 и 10 контактам двигатель работает только при скважности близкой к 100% (255), а при подключении к 5 и 6 все работает нормально.
    оба моста усиления одинаковые. обе стороны подключал к 5 и 6 все работает, а при подключении к 9 и 10 оба работают при скважности 100%.

    После уменьшения скважности на 9 контакте ардуино зависает (остаются те же параметры). Плюс еще есть радиопередача.
    Все дополнительные файлы могу скинуть по запросу:)

    Нашел в инете, что библиотека VirtualWire.h затрагивает 9 и 10 контакты, как можно это решить?
     
    Последнее редактирование: 12 янв 2015
  2. nomri95

    nomri95 Нуб

    Программа для передачи.

    Код (Text):
    #include <VirtualWire.h>
    #include <EasyTransferVirtualWire.h>

    EasyTransferVirtualWire ET;

    struct SEND_DATA_STRUCTURE{
      byte ID;
      int a;
      int b;
      int c;
      int d;
      int v;
    };

    SEND_DATA_STRUCTURE mydata;

    void setup(){
      ET.begin(details(mydata));
      mydata.ID = 1;
      vw_set_ptt_inverted(true);
      vw_set_tx_pin(9);
      vw_setup(2000);
      randomSeed(analogRead(0));
     
      pinMode(2, INPUT);
      pinMode(4, INPUT);
      pinMode(6, INPUT);
      pinMode(8, INPUT);
      pinMode(13, OUTPUT);
     
    }

    void loop(){
      mydata.a=digitalRead(2);
      mydata.b=digitalRead(4);
      mydata.c=digitalRead(6);
      mydata.d=digitalRead(8);
      mydata.v=analogRead(3)/4;
      digitalWrite(13,1);
      ET.sendData();
    digitalWrite(13,0);
    delay(20);
    }
    программа для приема

    Код (Text):
    #include <VirtualWire.h>
    #include <EasyTransferVirtualWire.h>

    EasyTransferVirtualWire ET;

    struct SEND_DATA_STRUCTURE{
      byte ID;
      int a;
      int b;
      int c;
      int d;
      int v;
    };

    SEND_DATA_STRUCTURE mydata;
    int v=0;

    void setup(){
      ET.begin(details(mydata));
      Serial.begin(9600);
      vw_set_ptt_inverted(true);
      vw_setup(2000);
      vw_set_tx_pin(11);
      vw_rx_start();
     
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(10, OUTPUT);

    }

    void loop(){
      if(ET.receiveData()){
        if (mydata.a==1){
              analogWrite(5, mydata.v);
              analogWrite(6, 0);
              }
          else analogWrite(5, 0);
         
        if (mydata.b==1){
              analogWrite(6, mydata.v);
              analogWrite(5, 0);
              }
          else analogWrite(6, 0);
         
        if (mydata.c==1){
              analogWrite(9, mydata.v);
              analogWrite(10, 0);
              }
          else analogWrite(9, 0);
         
        if (mydata.d==1){
              analogWrite(10, mydata.v);
              analogWrite(9,0);
              }
          else analogWrite(10, 0);

      }
    }
     
  3. nomri95

    nomri95 Нуб

    Проблема в библиотеке VirtualWire.h она затрагивает 9 и 10 пины.
     
  4. Эээ зачем так сложно?
     
  5. Проверь схему и подключены ли моторы именно к шим портам а не простым