Сервопривод является очень важным элементом при конструировании роботов и радиоуправляемых моделей.
Во втором уроке мы рассмотрим как при помощи Arduino UNO управлять сервоприводом.
Программа очень проста и наглядна. Начинается она с подключения файла. Данный файл содержит все необходимые команды для управления серво, чтобы облегчить нам жизнь и не изобретать велосипед. Далее, мы должны создать обьект servo. Пусть это будет servoMain. Следующая функция будет setup(), в которой мы указываем, что сервопривод подключен к выводу 10 контроллера.
Теперь все готово и мы можем посылать команды для управления серво. В главной функции loop(), мы даем различные команды для серводвигателя, выдерживая паузы между командами.
/* Arduino Servo */ #include "Servo.h" Servo servoMain; // Объект Servo void setup() { servoMain.attach(10); // Servo присоединен к 10 выводу } void loop() { servoMain.write(45); // Повернуть серво влево на 45 градусов delay(2000); // Пауза 2 сек. servoMain.write(0); // Повернуть серво влево на 0 градусов delay(1000); // Пауза 1 сек. servoMain.write(90); // Повернуть серво на 90 градусов. Центральная позиция delay(1500); // Пауза 1.5 сек. servoMain.write(135); // Повернуть серво вправо на 135 градусов delay(3000); // Пауза 3 сек. servoMain.write(180); // Повернуть серво вправо на 180 градусов delay(1000); // Пауза 1 сек. servoMain.write(90); // Повернуть серво на 90 градусов. Центральная позиция delay(5000); // Пауза 5 сек. }
Используемый в проекте сервопривод содержит 3 провода: черный, красный и оранжевый или белый
Схема подсоединения к Arduino следующая: черный провод присоединяем к выводу Arduino 0V, красный к Arduino 5V и оранжевый/белый к 10 выводу Arduino UNO.
Комментарии (13)
|
Я собрал (0) |
Подписаться
Для добавления Вашей сборки необходима регистрация
Спасибо большое! Ваш скетч очень полезен!
На данный момент делаю серво-манипулятор, который состоит из 3 сервоприводов. Можно Вас попросить выложить пример скетча, который позволит управлять тремя сервами одновременно,
Например:
1. Включение Ардуино Уно
2. Через две секунды, после включения - начинает двигаться СЕРВО1 с 0 до 180 градусов(отложе нный старт, после включения)
3. Через 0,5 секунды после начала движения СЕРВО1 - включается СЕРВО2 и начинает двигаться с 0 до 60 градусов
4. Через 0,5 секунды после начала движения СЕРВО2 - включается СЕРВО и начинает двигаться с 45 до 78 градусов
Вот мой скетч:
Servo servo1; // объявляем переменную servo типа "servo1"
void setup() {
servo1.attach(1); // привязываем сервопривод к аналоговому выходу 1
}
void loop() {
servo1.write(0); // ставим угол поворота под 0
delay(5000); // ждем 2 секунды
servo1.write(180); // ставим угол поворота под 180
delay(5000); // ждем 2 секунды
}
Всё работает. Но я не понимаю как написать программу для кнопки без резистора, так чтобы при одном нажатии кнопки сервик начал повторять действия в скейтче и при повторном нажатии переставал работать.
Помогите, пожалуйста!