- Платы Ардуино
- Обучение Ардуино
- Мой блог
- Уроки
- Урок № 1 "Пишем свой первый скетч"
- Урок № 2 "Подключение фоторезистора"
- Урок № 3 "Подключение пищалки(BUZZER)
- Урок № 7 "Модуль часов RTC DS3231"
- Урок № 8 - "Шаговый двигатель 28BYJ-48"
- Урок № 10 - "ИК пульт на Ардуино"
- Урок № 11- "Сканер отпечатка пальца"
- Урок № 12- "Датчик наклона SW-200D"
- Урок № 13- "Гирлянда светодиодная WS2812b"
- Книги
- Мой YOUTUBE
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, что это кому-то интересно и что его надо показывать чаще.
Спасибо.
А пока на этом всё.
Скетчи