Сервопривод не запускается при старте программы

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем Harvey_Specter, 6 фев 2018.

  1. Всем доброго времени суток,
    Сервопривод никак не хочет отзываться на команды. С самой сервой все в порядке т.к. код я протестировал в симуляторе. Надеюсь вы мне сможете помочь...


    Код (C++):
    #include <Servo.h>

    Servo myservo;
    byte ButtonPin1 = 10;
    byte ButtonPin2 = 11;
    byte ButtonPin3 = 12;
    byte Servo = 3;
    byte ledPin2 = 7;
    byte ledPin3 = 8;
    boolean lastButton1 = LOW;
    boolean lastButton2 = LOW;
    boolean lastButton3= LOW;
    boolean currentButton1 = LOW;
    boolean currentButton2 = LOW;
    boolean currentButton3 = LOW;
    boolean Hand_Open = false;
    boolean ledOn2 = false;
    boolean ledOn3 = false;



    void setup()
    {
      pinMode(ButtonPin1, INPUT);
      pinMode(ButtonPin2, INPUT);
      pinMode(ButtonPin3, INPUT);
      pinMode(ledPin2, OUTPUT);
      pinMode(ledPin3, OUTPUT);
      myservo.attach(Servo);
      myservo.write(150);
      delay(5000);
      myservo.write(0);
    }

    boolean debounce(boolean last, int switchPin)
    {
      boolean current = digitalRead(switchPin);
      if (last != current)
      {
        delay(5);
        current = digitalRead(switchPin);
      }
      return current;
    }

    void loop()
    {
      currentButton1 = debounce(lastButton1, ButtonPin1);
      currentButton2 = debounce(lastButton2, ButtonPin2);
      currentButton3 = debounce(lastButton3, ButtonPin3);
     
      if (lastButton1 == LOW && currentButton1 == HIGH)
      {
        Hand_Open =! Hand_Open;
      }
      lastButton1 = currentButton1;
     
      if (digitalRead(ButtonPin2) == HIGH and Hand_Open == true)
      {
        ledOn2 = true;
      }
      else
      {
        ledOn2 = false;
      }
     
      if (lastButton3 == LOW && currentButton3 == HIGH)
      {
        ledOn3 =! ledOn3;
      }
      lastButton3 = currentButton3;
      if (Hand_Open == true)
      {
        myservo.write(150);
      }
      else
      {
        myservo.write(0);
      }
     
      digitalWrite(ledPin2, ledOn2);
      digitalWrite(ledPin3, ledOn3);
    }
     
  2. OlegROA

    OlegROA Нерд

    Не хватает, как минимум, самой схемы!

    А вообще, при запуске/перезагрузке контроллера серва дергается на 150 градусов в начале?
    Если нет - однозначно ошибка в схеме или сама серва барахлит.

    И не совсем понятен вывод - "код в симуляторе работает без ошибок, значит с сервой все в порядке"?!
     
    Последнее редактирование: 9 фев 2018
  3. danya plotnik

    danya plotnik Гик

    Это что?
     
  4. danya plotnik

    danya plotnik Гик

    Нужно не Servo, а пин, куда подключен сервопривод!
     
  5. danya plotnik

    danya plotnik Гик

    Скиньте ссылку на симулятор, пожалуйста