Всем привет! Сегодня я покажу вам как подключить Motor Shield L293D к Arduino.
Для этого понадобятся:
1. Arduino Uno или Mega с USB кабелем
2. Компьютер с установленной Arduino IDE и драйверами для плат
3. Четыре двигателя с припаянными проводами или два серво(можно использовать и один)
4. Motor Shield L293D
5. Бокс и два литий-ионных аккумулятора на 3.7V(в качестве источника питания). Можно использовать и другой источник питания.
Описание Motor Shield L293D
Motor Shield L293D оснащён двумя драйверами двигателей L293D, поэтому он может управлять четырьмя двигателями, или двумя двигателями и одним серво, или двумя серво, или двумя шаговыми двигателями. Также этот шилд имеет контакты для внешнего питания, что часто бывает полезно в проектах.
Нужно учесть, что для управления двигателями драйвер использует пины платы с 3 по 8 и 12 , а для управлением серво - пины 9 и 10. Поэтому к ним лучше ничего не подключать. Я пробовал в проекте танка использовать сразу L293D и L298N, подключенный к контактам управления драйвером L293D. Из-за того, что L298N и L293D использовали общие контакты управления часто срабатывали не те двигатели.
Для работы с L293D нужно установить библиотеку AFmotor. Скачать её можно отсюда. Извлеките содержимое скачанного архива в папку libraries.
Обратите внимание! Нельзя подавать на EXT_PWR напряжение больше 12V при наличии перемычки PWR!
Подключение четырёх моторов к Motor Shield L293D и скетч
Схема подключения четырёх моторов и источника питания к L293D представлена ниже:
Теперь напишем скетч для четырёх моторов. Вместо звёздочки перед include нужно вставить "решётку". Если мотор будет вращаться не в ту сторону нужно поменять контакты в клеммнике местами.
#include <AFMotor.h> // подключаем библиотеку для Motor Shield
AF_DCMotor motor1(1); // подключаем первый мотор к клеммнику M1
AF_DCMotor motor2(2); // подключаем второй мотор к клеммнику M2 AF_DCMotor motor3(3); // подключаем третий мотор к клеммнику M3 AF_DCMotor motor4(4); // подключаем четвёртый мотор к клеммнику M4
void setup() {
motor1.setSpeed(255); // задаем максимальную скорость первого мотора
motor1.run(RELEASE); // останавливаем первый мотор
motor2.setSpeed(255); // задаем максимальную скорость второго мотора
motor2.run(RELEASE); // останавливаем второй мотор
motor3.setSpeed(255);//задаем максимальную скорость 3-го мотора
motor3.run(RELEASE); // останавливаем третий мотор
motor4.setSpeed(255);//задаем максимальную скорость 4-го мотора
motor4.run(RELEASE); // останавливаем четвёртый мотор
}
void loop() {
motor1.run(FORWARD); // вращаем первый мотор вперёд
motor2.run(FORWARD); // вращаем второй мотор вперёд
motor1.setSpeed(255); // задаем макс. скорость первого мотора
motor2.setSpeed(255); // задаем макс. скорость второго мотора
motor3.run(FORWARD); // вращаем третий мотор вперёд
motor4.run(FORWARD); // вращаем четвёртый мотор вперёд
motor3.setSpeed(255); // задаем макс. скорость третьего мотора
motor4.setSpeed(255); // задаем макс. скорость четвёртого мотора
delay(5000); // задержка 5 секунд
motor1.run(RELEASE); // останавливаем первый мотор
motor2.run(RELEASE); // останавливаем второй мотор
motor3.run(RELEASE); // останавливаем третий мотор
motor4.run(RELEASE); // останавливаем четвёртый мотор
motor1.run(BACKWARD); // вращаем первый мотор назад
motor2.run(BACKWARD); // вращаем второй мотор назад
motor1.setSpeed(255); // задаем макс. скорость первого мотора
motor2.setSpeed(255); // задаем макс. скорость второго мотора
motor3.run(BACKWARD); // вращаем третий мотор назад
motor4.run(BACKWARD); // вращаем четвёртый мотор назад
motor3.setSpeed(255); // задаем макс. скорость третьего мотора
motor4.setSpeed(255); // задаем макс. скорость четвёртого мотора
delay(5000); // задержка 5 секунд
motor1.run(RELEASE); // останавливаем первый мотор
motor2.run(RELEASE); // останавливаем второй мотор
motor3.run(RELEASE); // останавливаем третий мотор
motor4.run(RELEASE); // останавливаем четвёртый мотор
}
Подключение сервомоторов к Motor Shield L293D и скетч
Подключать сервомоторы нужно к контактам, которые выделены на фото ниже. Соединяем так:
Красный провод(Сервомотор) - плюс(Motor Shield L293D)
Коричневый провод(Сервомотор) - минус(Motor Shield L293D)
Оранжевый провод(Сервомотор) - S(Motor Shield L293D)
Как я уже писал для управления сервомоторами используются пины 9 и 10 платы Arduino. Приступим к написанию скетча для двух сервомоторов. Вместо звёздочки перед include нужно вставить "решётку".
#include <Servo.h>
Servo servo;
Servo servo2;
void setup() {
servo.attach(9);
servo2.attach(10);
}
void loop() {
servo.write(90);
servo2.write(90);
delay(500);
servo.write(0);
servo2.write(0);
delay(500);
}
На этот раз всё, всем спасибо за внимание!