SG90 сервопривод Управление кнопками

SG90 сервопривод Управление кнопками

Управляя кнопками можно разработать определённые сценарии движения. Для этого sg90 сервопривод как нельзя лучше можно применить. Он дешёвый, sg90 можно  подключить и к Ардуино и к ESP8266. Управление сервомотором простейшее, используя библиотеку SERVO для перемещения надо всего лишь задать угол поворота, а написав небольшой цикл, можно задать скорость вращения сервомотора. А ещё micro servo sg90 – это действительно очень маленькие моторы.

Сервопривод SG90 или как его называют сервомотор часто применяется в разработках на Ардуино или в ESP проектах. Подключение сервомотора очень простое всего 1 провод и питание. Управление это лишь надо указать в какое положение повернуть серво. Micro servo sg90 это самые распространённые сервомоторы. Они дешёвые и надёжные. Для них разработана библиотека и большое количество доступного кода. Подключить сервомотор можно за 2-3 минуты, абсолютно не уменя программировать.

Сегодня я расскажу как управлять сервомотором при помощи кнопок. Подключать сервомотор будем к ESP8266, но вы можете подключить и к Ардуино. Для этого вам всего лишь надо поменять название пинов к которым вы подключите Сервомотор.
Сегодня нам понадобятся два сервомотора. Можно взять любые. Я взял SG90 так как это самые распространённые серво. Три кнопки. Так как будем делать пример с тремя положениями. Открытие наружу, закрытие и открытие внутрь. 
Ну и как я говорил, я использую плату ESP так как по просьбе своих подписчиков, я этот пример использую для работы с Телеграм.

Сразу покажу что у меня получилось. 
При нажатии на 1 кнопку, ворота открываются внутрь, при нажатии на среднюю кнопку ворота закрываются. При нажатии на третью кнопку ворота открываются наружу. Этап закрытия можно пропустить, и если нажать на крайние кнопки то ворота будут открывать из одного крайнего положения в другое.
Как это работает я покажу дальше в видео. Скорость движения сервомоторов можно регулировать в скетче.

Рассмотрим схему подключения. Здесь ничего сложного. Кнопки подключаем одним контактом к земле, а вторым к соответствующему пину платы. Так как внешних резисторов я не использовал, то в скетче подключил внутренние. Так называемую внутреннюю подтяжку.
Для питания сервомоторов желательно использовать внешний источник питания на 5 вольт, или подключить к контакту VIN если вы питаете плату от 5 вольт.
Сигнальные провода подключены к контактам D1 и D2.

Теперь давайте посмотрим скетчи. Их будет 3.
Первый и самый простой, Но у него нельзя изменить скорость вращения сервомотора, но если вам нужна максимальная скорость, то этот вариант как раз для вас.

Вначале мы создаём два объекта SERVO для первого и второго сервомотора.
Теперь указываем, что кнопки будут подключены к пинам 5 , 6, 7. Эти пины объявляем входами, и включаем внутреннюю подтяжку.
Говорим, что всрвы у нас подключены к пинам D1 и  D2.
Здесь указываем, что при включении питания или прим первом запуске или перезагрузке установить среднее положение. В моём случае это закрытые ворота.
Теперь напишем условие.
Если нажата кнопка 1. А так как у нас кнопка одним концом сидит на земле, то при нажатии на кнопке будет низкий уровень, о есть LOW. 
Так вот, при нажатии, один сервомотор переместиться в положение 180 градусов, а второй в положение 0, так как они расположены друг против друга и крутятся в разные стороны.
Пауза в пол секунды, это просто защита от дребезга кнопки и на вращение она не влияет.
Закомментированный код пока не трогаем, он нам понадобится в следующем примере.
На других кнопках всё тоже самое только градусы другие. 

Теперь я расскомментировал код. 
Сейчас он будет работать немного по другому. Сначала откроется одна створка, а потом другая. Это например может понадобится если вам надо открывать по очереди створки. Или ещё для чего.
Больше здесь я ничего не менял. Смотрим как работает этот пример, а потом переходим к примеру где можно управлять скоростью открытия. Потому что эти примеры для открытия явно не подходят, ну или если у вас другие сервомоторы с более низкой скоростью вращения.
Кстати, для закрытия я забыл вставить паузу, и закрываются створки вместе, а не по очереди.

Теперь рассмотрим финальный скетч. Но перед этим хочу задать вопрос смотрящим. Надо ли мне показывать как я набираю код и будете ли вы это смотреть, или оставить как есть сейчас. Первый способ, с набором, увеличит время просмотра на несколько минут.
И второй вопрос. Надо ли показывать сам процесс сборки. Ну, типа как я паяю или втыкаю провода и подключаю датчики.
Как скажите, так и будет. А теперь продолжим.
В первой части кода я ничего не менял, поэтому пропускаем, и переходим к функции loop.
Здесь код стал немного сложнее чем в первом примере. Сначала рассмотрим цикл for.
Он немного отличается от обычного.
Как работает for.
Попав в него, вы не можете выйти пока условие верно. Получается, что пока работает один сервомотор, второй стоит и ждёт своей очереди. Меня такое не устраивало, поэтому я ввёл ещё одну переменную.
Теперь оба сервомотора работают по очереди. Сначала первый делает один шаг, затем второй. И так пока оба не переместятся в нужное положение.
Скорость можно регулировать, изменяя время паузы. Чем больше пауза, тем больше время между шагами и тем медленнее скорость вращения.
Изначально положение обоих серв установлено посередине, то есть в 90 градусов.
Вы можете изменить скетч и сделать так чтобы ворота открывались больше чем на 90 градусов. Например на 180 градусов. Тогда начальную точку указываете в положение 0. И тогда вам не понадобится средний цикл, так как будет всего два положения.
 При нажатии первой кнопки, одна серва перемещается в положение 180 градусов, а вторая положение 0.
Затем эти значения присваиваются переменным.
Здесь всё в точности до наоборот. И сервы вращаются в другом направлении.

Перемещение в 90 градусов ничем не отличается. Если только надо отслеживать в каком сейчас положении сервы.
Если в положение внутрь, то выполняется один цикл, если наружу, то другой.
Вот вроде и всё что хотел рассказал и показал. Теперь дело за вами. Смотрите, пишите комментарии. 
По возможности, я буду отвечать на все вопросы.

 Если вам нравятся мои видеоуроки, то вы можете подписаться на них, и не забудьте нажать на колокольчик, так вы не пропустите следующее видео.
Вы видите ссылки на видео, которые, я думаю будут вам интересны. Перейдя на любое из этих видео вы узнаете что-то новое, а ещё поможете мне. Ведь любой ваш просмотр - это знак YOUTUBE, что это кому-то интересно и что его надо показывать чаще.
Спасибо.
А пока на этом всё.
 

Управление сервоприводом Ардуино
servo sg90 Подключение серво и управление с телефона
Сервомотор с памятью. Arduino сервомотор sg90
SG90 сервопривод Управление кнопками
Сервоприводы SG90 и Arduino: Использование, Характеристики и Примеры Применения