12+ Свидетельство СМИ ЭЛ № ФС 77 - 70917 Лицензия на образовательную деятельность №0001058 |
Пользовательское соглашение Контактная и правовая информация |
Жакыпова Молдир Асилбеккызы20 |
Занятие на тему «Управление сервоприводом»
«Робототехника». Уровень 6. Занятие 13.
Тема занятия: Управление сервоприводом.
Продолжительность занятия: 2 часа.
Arduino UNO. Управление сервоприводом
Сервопривод является очень важным элементом при конструировании роботов и радиоуправляемых моделей.
Во втором уроке мы рассмотрим как при помощи Arduino UNO управлять сервоприводом.
Программа очень проста и наглядна. Начинается она с подключения файла. Данный файл содержит все необходимые команды для управления серво, чтобы облегчить нам жизнь и не изобретать велосипед. Далее, мы должны создать обьект servo. Пусть это будет servoMain. Следующая функция будет setup(), в которой мы указываем, что сервопривод подключен к выводу 10 контроллера.
Теперь все готово и мы можем посылать команды для управления серво. В главной функцииloop(), мы даем различные команды для серводвигателя, выдерживая паузы между командами.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /* Arduino Servo */ #include "Servo.h" Servo servoMain; // Объект Servo
void setup() { }
void loop() { delay(2000); // Пауза 2 сек. delay(1000); // Пауза 1 сек. delay(1500); // Пауза 1.5 сек. delay(3000); // Пауза 3 сек. delay(1000); // Пауза 1 сек. delay(5000); // Пауза 5 сек. } |
Используемый в проекте сервопривод содержит 3 провода: черный, красный и оранжевый или белый
Схема подсоединения к Arduino следующая: черный провод присоединяем к выводу Arduino 0V, красный к Arduino 5V и оранжевый/белый к 10 выводу Arduino UNO.
Arduino UNO. Управление сервоприводом через фоторезистор
01 | /*Управляем сервой в зависимости от освещенности |
02 | Используем фотосопротивление, может быть любой аналоговый сенсор |
03 | */ |
04 | #include |
05 | Servo motor; |
06 | int sensePin = 0;//Обьявляем 0 аналоговый пин |
07 | void setup() |
08 | { |
09 | analogReference(DEFAULT); //Объявляем диапазон чтения с аналогового порта.Необязательное |
10 | /* Будем смотреть вывод на сериальном мониторе с Ардуино, для чего его инициализируем |
11 | Заодно можно посмотреть диапазон работы датчика чтобы в этом диапазоне поворачивать серву*/ |
12 | |
13 | motor.attach(10); // Подключаем серву на 10 пин |
14 | } |
15 |
|
16 | void loop() |
17 | { |
18 | // Печатаем на монитор |
19 | |
20 | int val = analogRead(sensePin);// Создаем переменную val для чтения analogRead |
21 | val= constrain(val,230 ,699);// Ограничиваем диапазон работы датчика посмотрев его на мониторе |
22 | int motorAngl = map(val,699, 230, 180,0);//Преобразуем диапазон выдаваемый датчиком в диапазон углов сервы |
23 | motor.write(motorAngl);// Устанавливаем серву на угол который получаем через преобразование |
24 | } |