Занятие на тему «Управление сервоприводом»
«Робототехника». Уровень 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() { 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.
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 |
Serial.begin(9600); |
13 |
motor.attach(10); // Подключаем серву на 10 пин |
14 |
} |
15 |
|
16 |
void loop() |
17 |
{ |
18 |
// Печатаем на монитор |
19 |
Serial.println(analogRead(sensePin)); |
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 |
} |