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

Тема в разделе "Arduino & Shields", создана пользователем Денис Оглоблин, 31 мар 2016.

  1. Здравствуйте.
    Я совершенно начинающий, поэтому прошу простить меня за наивные и глупые вопросы. Arduino вынул из коробки в субботу, и вот только стал понимать что к чему. Говорю сразу, в программировании я почти ноль. Но понять, что к чему в скетче, немного могу... Однако, не разобрался в приводах.
    Есть задача, при помощи управления с пульта ДУ, включать поворот серво мотора на заданный градус. А при повторном нажатии, что бы мотор возвращался в прежнее положение.
    Я нашёл скетчи, но там либо мотор активируется просто когда есть питание, или управляется длительным нажатием от кнопки. Связать всё это, и разобраться как сделать элементарную функцию, которую описал выше, никак не могу. Однако, довольно быстро смог переписать сигналы с пульта ДУ и отредактировать программу так, что кнопки от 1 до 9 и 0, активируют цифровые выходы на контролере (и, например, зажикаются светодиоды). Но с мотором дело сложнее.
    И еще, в довесок к этому, хочу поинтересоваться одной тонкостью. Серво хочу приспособить для открывания одной вещички, но почему-то при подачи питания (просто при включении Arduino) сразу же происходит поворот на несколько градусов. Не понимаю как с этим бороться. Хотелось бы, что бы угол, если нет манипуляций с кнопками, всегда был равен 0 в начале, ну или, хотя бы, автоматически приходил в этот исходный 0, если появились отклонения.
    Благодарю за ранее за советы! Уверен, всё это сделать не сложно. Не знаю, нужны ли вам примеры моих программ, ведь всё равно не работает..? Жду ваших советов.
     
  2. Megakoteyka

    Megakoteyka Оракул Модератор

    Если умеете по кнопке зажигать светодиоды, то в чем проблема с сервой?
    Код (C++):
    положение_сервы = 0;
    если(кнопка_нажата)
    {
      если(положение_сервы == 0)
      {
        повернуть_серву(туда);
        положение_сервы = 1;
      }
      иначе
      {
        повернуть_серву(сюда);
        положение_сервы = 0;
      }
    }
    Для этого нужно подавать на серву сначала управляющий сигнал и только потом питание. Можно подклюсить питание через транзистор и управлять им с ножки контроллера. Сначала инициализируете серву и задаете ей нужное положение, потом включаете питание.
     
    Денис Оглоблин нравится это.
  3. Ну вот проблема, что ничуть не понимаю в программировании. Спасибо, попробую так, но встречный Нубский вопрос. Вы здесь всё написали в коде НА РУССКОМ! Неужели так можно????? :eek:

    Ой, а вот тут чайнику совсем не понятно. А можете, извиняюсь, более детально схему рассказать? Это как это вообще реально питание подавать потом? И какой конкретно транзистор? Вот в них не разбираюсь совершенно.
    За ранее спасибо.