В рамках данного проекта рассматривается, как подключить несколько серводвигателей к Arduino и заставить их запускаться случайным образом, а также случайным образом задерживать свои валы в пределах заданного диапазона.

Для начала подключим несколько сервоприводов к Arduino UNO, как показано на следующей схеме подключения.

У Uno есть проблемы с постоянным питанием нескольких сервоприводов напряжением 5 В, поэтому мы рекомендуем использовать источник питания 5 В. Сигнальные провода подключатся к контактам Uno 9, 10 и 11, а питание и земля каждого сервопривода должны быть подключены к источнику питания. Убедитесь, что вы подключили заземление источника питания к заземлению Uno.
Подключите Arduino к компьютеру и откройте новый скетч в Arduino IDE. Скопируйте и вставьте следующий код.
Servo tail; // создаем объект для управления сервомотором
Servo head; // создаем объект для управления сервомотором
Servo eyes; // создаем объект для управления сервомотором
// данным образом может быть создано до 12 объектов для Arduino Uno
void loop_tail() {
int t1 = random(0, 170); // определяем переменную и устанавливаем величину шага сервопривода от 0 до 170 градусов
int t2 = random(500, 800); // определяем переменную и устанавливаем случайную задержку
int t3 = random(400, 1000); // определяем переменную и устанавливаем нейтральную случайную задержку
tail.write(t1); // делаем положение сервопривода случайным
delay(t2); // запускаем случайную задержку
tail.write(0); // сбрасываем сервопривод в нейтральное положение
delay(t3); // запускаем нейтральную случайную задержку
}
void loop_head() {
int h1 = random(0, 170); // определяем переменную и устанавливаем величину шага сервопривода от 0 до 170 градусов
int h2 = random(500, 800); // определяем переменную и устанавливаем случайную задержку
int h3 = random(400, 1000); // определяем переменную и устанавливаем нейтральную случайную задержку
head.write(h1); // делаем положение сервопривода случайным
delay(h2); // запускаем случайную задержку
head.write(0); // сбрасываем сервопривод в нейтральное положение
delay(h3); // запускаем нейтральную случайную задержку
}
void loop_eyes() {
int e1 = random(0, 170); // определяем переменную и устанавливаем величину шага сервопривода от 0 до 170 градусов
int e2 = random(500, 800); // определяем переменную и устанавливаем случайную задержку
int e3 = random(400, 1000); // определяем переменную и устанавливаем нейтральную случайную задержку
eyes.write(e1); // делаем положение сервопривода случайным
delay(e2); // запускаем случайную задержку
eyes.write(0); // сбрасываем сервопривод в нейтральное положение
delay(e3); // запускаем нейтральную случайную задержку
}
void setup() {
tail.attach(9); // назначаем сервомотор на линию 9
head.attach(10); // назначаем сервомотор на линию 10
eyes.attach(11); // назначаем сервомотор на линию 11
}
void loop() {
byte randNum = random(3); // максимальный диапазон чисел
switch (randNum) // переключение между случайными числами, назначенными в этом цикле
{
case 0:
loop_tail();
break;
case 1:
loop_head();
break;
case 2:
loop_eyes();
break;
}
}
Код прокомментирован достаточно подробно, поэтому все должно быть понятно.
© digitrode.ru