Все модули подключаются одинаково. В качестве примера мы возьмем самый популярный драйвер двигателя на L293D микросхеме.
Кроме драйвера нам понадобится контроллер DaVinci, два мотора постоянного тока, соединительные провода и дополнительный источник питания, так как контроллер выдает маленькие токи и на двигатели необходимо подавать питание отдельным источником питания к контакту MOTOR 5-36V (у драйвера на 9110S микросхемах используется один контакт для подключения питания модуля и двигателей, источник питания может быть от 5В до 12В).
Управление двигателями производится с помощью ШИМ сигналов через контакты IN1..IN4.
Двигатели подключаются к клеммам М1 и М2. При этом полярность не имеет значения, ее можно поменять программно.
Собираем схему согласно рисунку.

Напишем простую программу, которая будет вращать один из двигателей, меняя направление каждую секунду.
#define M1 3
#define DIRECTION1 9
void setup() {
pinMode(M1, OUTPUT);
pinMode(DIRECTION1, OUTPUT);
}
void loop() {
digitalWrite(M1, LOW);
digitalWrite(DIRECTION1, HIGH);
delay(1000);
digitalWrite(M1, HIGH);
digitalWrite(DIRECTION1, LOW);
delay(1000);
}
Теперь усложним программу. Будем кроме направления менять еще и мощность.
#define M1 3
#define DIRECTION1 9
void setup() {
pinMode(M1, OUTPUT);
pinMode(DIRECTION1, OUTPUT);
}
void loop() {
analogWrite(M1, 255);
digitalWrite(DIRECTION1, LOW);
delay(2000);
analogWrite(M1, 130);
digitalWrite(DIRECTION1, LOW);
delay(2000);
analogWrite(M1, 125);
digitalWrite(DIRECTION1, HIGH);
delay(2000);
analogWrite(M1, 0);
digitalWrite(DIRECTION1, HIGH);
delay(2000);
}
Вот что получится в итоге. Сначала мотор вращается с максимальной скоростью, затем замедляется, и повторяет все в обратном направлении.
А теперь задействуем второй двигатель.
#define M1 3
#define M2 6
#define DIRECTION1 9
#define DIRECTION2 12
void setup() {
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
pinMode(DIRECTION1, OUTPUT);
pinMode(DIRECTION2, OUTPUT);
}
void loop() {
analogWrite(M1, 100);
digitalWrite(DIRECTION1, LOW);
analogWrite(M2, 100);
digitalWrite(DIRECTION2, LOW);
delay(1000);
analogWrite(M1, 200);
digitalWrite(DIRECTION1, LOW);
analogWrite(M2, 200);
digitalWrite(DIRECTION2, LOW);
delay(2000);
analogWrite(M1, 155);
digitalWrite(DIRECTION1, HIGH);
analogWrite(M2, 155);
digitalWrite(DIRECTION2, HIGH);
delay(2000);
analogWrite(M1, 55);
digitalWrite(DIRECTION1, HIGH);
analogWrite(M2, 55);
digitalWrite(DIRECTION2, HIGH);
delay(1000);
}
Как видим, моторы сначала вращаются с небольшой скоростью, а затем переходят на увеличенные обороты, и повторяют все в обратном направлении.
В качестве закрепления материала, можно собрать простого колесного робота и научить его двигаться по окружности, выполнять змейку и восьмерку.