В этом эксперименте мы вращаем сервопривод на угол, задаваемый потенциометром.
Прочтите перед выполнением
Список деталей для эксперимента
-
1 плата Arduino Uno
-
1 беспаечная макетная плата
-
1 конденсатор ёмкостью 220 мкФ
-
11 проводов «папа-папа»
Принципиальная схема
Схема на макетке
Обратите внимание
-
Конденсатор в данной схеме нам нужен для того, чтобы при включении сервопривода избежать просадки питания платы.
-
Не забывайте про то, что нужно соблюдать полярность элетролитического конденсатора. Короткая ножка (со стороны белой полосы на корпусе) — «минус».
-
Вы можете соединить провод сервопривода с макетной платой проводами «папа-папа»: коричневый это земля, красный — питание, оранжевый — сигнал.
-
В данном эксперименте мы подключаем питние сервопривода к 5V-выходу Arduino. С одним сервоприводом плата справится, но если в каком-либо проекте вам нужно больше серв, используйте специальные платы-драйвера с отдельным источником питания для серв.
|
Пояснения к коду
-
В данном эксперименте мы также имеем дело с объектом, на этот раз он нужен для простого управления сервоприводом. Как отмечено в комментариях, в отличие от объекта
Serial
, объекты типаServo
нам нужно явно создать:Servo myServo
, предварительно подключив библиотеку<Servo.h>
. -
Далее мы используем два метода для работы с ним:
-
myServo.attach(pin)
— сначала «подключаем» серву к порту, с которым физически соединен его сигнальный провод.pinMode()
не нужна, методattach()
займется этим. -
myServo.write(angle)
— задаем угол, т.е. позицию, которую должен принять вал сервопривода. Обычно это 0—180°.
-
-
myServo
здесь это имя объекта, идентификатор, который мы придумываем так же, как названия переменных. Например, если вы хотите управлять двумя захватами, у вас могут быть объектыleftGrip
иrightGrip
. -
Мы использовали функцию
int()
для явного преобразования числа с плавающей точкой в целочисленное значение. Она принимает в качестве параметра значение любого типа, а возвращает целое число. Когда в одном выражении мы имеем дело с различными типами данных, нужно позаботиться о том, чтобы не получить непредсказуемый ошибочный результат.
Вопросы для проверки себя
-
Зачем нужен конденсатор при включении в схему сервопривода?
-
Каким образом библиотека
<Servo.h>
позволяет нам работать с сервоприводом? -
Зачем мы ограничиваем область допустимых значений для
angle
? -
Как быть уверенным в том, что в переменную типа
int
после вычислений попадет корректное значение?