хочу код для управления сервоприводом

Тема в разделе "Закажу проект", создана пользователем ilfat, 5 окт 2014.

  1. ilfat

    ilfat Нуб

    Здравствуйте, у меня сервопривод на 180 градусов, ардуино Леонардо и тактовая кнопка . Я хочу чтобы при одном нажатии сервопривод поворачивался на 180 градусов, при повторном нажатии чтобы сервопривода поворачивался в другую сторону на 180 градусов. кто сделает работающуюю программу получит 100 рублей
     
  2. vvr

    vvr Инженерище

    не надо тратить 100 рублей. открываем примеры из библиотеки серво и доводим под свои нужды.
    второй вариант - гуглим и находим тыщи примеров связки кнопка-серва
     
  3. acos

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

    Megakoteyka и vvr нравится это.
  4. vvr

    vvr Инженерище

  5. acos

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

    Ну раз ZaikaBlogs так и не появился, выложу ка я тут код, который уже давно валяется у меня в скетчбуке, был сделан на коленке и с закрытыми глазами, потому что очень просил клиент. Но работает:) Сразу предупреждаю: комментарии в коде скорее всего лгут и скетч делает совсем чуть-чуть не то, что нужно вам.
    Основано на http://wiki.amperka.ru/конспект-arduino:кнопочный-переключатель

    Код (C):

    #include <Servo.h>


    #define BUTTON_PIN  3
    #define LED_PIN    13
    #define SERVO  9

    boolean buttonWasUp = true;  // была ли кнопка отпущена?
    boolean ledEnabled = false;  // включен ли свет?\
    Servo myServo;


    void setup()
    {
      pinMode(LED_PIN, OUTPUT);
      pinMode(BUTTON_PIN, INPUT_PULLUP);
      myServo.attach(SERVO);
    }

    void loop()
    {
      // определить момент «клика» несколько сложнее, чем факт того,
      // что кнопка сейчас просто нажата. Для определения клика мы
      // сначала понимаем, отпущена ли кнопка прямо сейчас...
      boolean buttonIsUp = digitalRead(BUTTON_PIN);

      // ...если «кнопка была отпущена и (&&) не отпущена сейчас»...
      if (buttonWasUp && !buttonIsUp) {
        // ...может это «клик», а может и ложный сигнал (дребезг),
        // возникающий в момент замыкания/размыкания пластин кнопки,
        // поэтому даём кнопке полностью «успокоиться»...
        delay(10);
        // ...и считываем сигнал снова
        buttonIsUp = digitalRead(BUTTON_PIN);
        if (!buttonIsUp) {  // если она всё ещё нажата...
          // ...это клик! Переворачиваем сигнал светодиода
          ledEnabled = !ledEnabled;
          digitalWrite(LED_PIN, ledEnabled);
        }
      }

      // запоминаем последнее состояние кнопки для новой итерации
      buttonWasUp = buttonIsUp;

      if (ledEnabled)  //если светодиод горит - то поворачиваем на 45 град
      {
        myServo.write(45);
      }
      else
      {
        myServo.write(90); //а если нет - то поворачиваем на 90 град
      }
    }
     
  6. vvr

    vvr Инженерище

    Тоже поучаствую