Помогите со скетчем!

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

  1. ANV

    ANV Гуру

  2. Gleb

    Gleb Нерд

    подскажите пожалуйста как замедлмть движение сервомашинки!
     
  3. vvr

    vvr Инженерище

    Код (Text):
    // Sweep
    // by BARRAGAN <http://barraganstudio.com>
    // This example code is in the public domain.


    #include <Servo.h>
    Servo myservo;  // create servo object to control a servo
                    // a maximum of eight servo objects can be created
    int pos = 0;    // variable to store the servo position
    void setup()
    {
      myservo.attach(9);  // attaches the servo on pin 9 to the servo object
    }
    void loop()
    {
      for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees
      {                                  // in steps of 1 degree
        myservo.write(pos);              // tell servo to go to position in variable 'pos'
        delay(15);                      // waits 15ms for the servo to reach the position
      }
      for(pos = 180; pos>=1; pos-=1)    // goes from 180 degrees to 0 degrees
      {                              
        myservo.write(pos);              // tell servo to go to position in variable 'pos'
        delay(15);                      // waits 15ms for the servo to reach the position
      }
    }
     
    Пример из библиотеки. Величина задержки и определяет скорость поворота.
     
  4. Gleb

    Gleb Нерд

    попробую!!! у меня дополнение ))))
    серва работает от переключателя вкл. и выкл. при переключении серва очень быстро прыгает а надо мелденно!
     
  5. vvr

    vvr Инженерище

    Для подобных вопросов надо код показать.
     
  6. Gleb

    Gleb Нерд

    сейчас покажу!
     
  7. Gleb

    Gleb Нерд

    #include <Servo.h>

    Servo myservo;

    int pos = 0;

    void setup()
    {
    myservo.attach(9);
    pinMode(7, INPUT);
    }

    void loop()
    {
    if (digitalRead(7))

    myservo.write(145);
    else
    myservo.write(15);
    }
     
  8. vvr

    vvr Инженерище

    Вам нужно использовать цикл for на подобии примера
    Код (Text):
    if (digitalRead(7))
    {
      for(pos = 145; pos>=15; pos-=1)  
      {                              
        myservo.write(pos);          
        delay(15);                    
      }
    }
    else
    {
      for(pos = 15; pos < 145; pos += 1)  
      {
        myservo.write(pos);
        delay(15);
      }
    }
    Ну и не забудьте борьбу с дребезгом обязательно
     
  9. Gleb

    Gleb Нерд

    вообще она не дребезжит а как с этим бороться если что?
     
  10. vvr

    vvr Инженерище

    Я имел ввиду дребезг кнопок, а дрожание сервы называется джиттер
     
    Gleb нравится это.
  11. Gleb

    Gleb Нерд

    понятно спасибо!
     
  12. Gleb

    Gleb Нерд

    вставил код..... машинка без остановки туда сюда......
     
  13. vvr

    vvr Инженерище

    Если вы хотите по коду помощь получить, то ПОКАЖИТЕ его!
     
  14. Gleb

    Gleb Нерд

    #include <Servo.h>

    Servo myservo;

    int pos = 0;

    void setup()
    {
    myservo.attach(9);
    pinMode(7, INPUT);
    }

    void loop()
    {
    if (digitalRead(7))
    {
    for(pos = 145; pos>=15; pos-=1)
    {
    myservo.write(pos);
    delay(15);
    }
    }
    else

    for(pos = 15; pos < 145; pos += 1)
    {
    myservo.write(pos);
    delay(15);
    }
    }
     
  15. vvr

    vvr Инженерище

    Код (Text):
    #include <Servo.h>
    Servo myservo;
    int pos = 0;
    const int buttonPin = 7;
    int buttonState = 0;

    void setup()
    {
      myservo.attach(9);
      pinMode(buttonPin, INPUT);
    }

    void loop()
    {
      buttonState = digitalRead(buttonPin);
      if (buttonState == HIGH)
      {
        for(pos = 145; pos>=15; pos-=1)
        {
          myservo.write(pos);
          delay(15);
        }
      }
      else
      {
        for(pos = 15; pos < 145; pos += 1)
        {
          myservo.write(pos);
          delay(15);
        }
      }
    }
     
     
  16. Gleb

    Gleb Нерд

    спасибо за помощь не помогает!
     
  17. vvr

    vvr Инженерище

    я добавил ещё кнопку - работает
    Код (Text):
    #include <Servo.h>
    Servo myservo;
    int pos = 0;
    const int buttonPin = 7;
    int buttonState = 0;
    const int buttonPin1 = 3;
    int buttonState1 = 0;

    void setup()
    {
      myservo.attach(9);
      pinMode(buttonPin, INPUT);
      pinMode(buttonPin1, INPUT);
    }

    void loop()
    {
      buttonState = digitalRead(buttonPin);
      buttonState1 = digitalRead(buttonPin1);
      if (buttonState == HIGH)
      {
        for(pos = 145; pos>=15; pos-=1)
        {
          myservo.write(pos);
          delay(15);
        }
      }
      if (buttonState1 == HIGH)
      {
        for(pos = 15; pos < 145; pos += 1)
        {
          myservo.write(pos);
          delay(15);
        }
      }
    }
     
     
  18. Gleb

    Gleb Нерд

    нет!
     
  19. Gleb

    Gleb Нерд

    #include <Servo.h>

    Servo myservo;

    int pos = 0;

    void setup()
    {
    myservo.attach(9);
    pinMode(7, INPUT);
    }

    void loop()
    {
    if (digitalRead(7))

    myservo.write(145);
    else
    myservo.write(15);
    }
    с этими скетчем получается но серва очень быстро переходит от 15 до 145 и обратно! надо просто замедлить движение сервы!
     
  20. vvr

    vvr Инженерище

    Я не знаю как там у тебя, но у меня работает - по нажатию кнопок серва бегает в ту или др. сторону.
    Свой код отложи. У тебя кнопка не работает и серва в лупе мотается туда-сюда.
    Хочешь с одной кнопкой - нужна другая обработка кнопки.