Драйверы двигателя L298N, L293D и Arduino Motor Shield


Драйвер двигателя в проектах ардуино

Для чего нужен драйвер двигателя?

Как известно, плата ардуино имеет существенные ограничения по силе тока присоединенной к ней нагрузки. Для платы это 800 mA, а для каждого отдельного вывода – и того меньше, 40mA. Мы не можем подключить напрямую к Arduino Uno, Mega или Nano даже самый маленький двигатель постоянного тока. Любой из этих двигателей в момент запуска или остановки создаст пиковые броски тока, превышающие этот предел.

Как же тогда подключить двигатель к ардуино? Есть несколько вариантов действий:

Использовать реле. Мы включаем двигатель в отдельную электрическую сеть, никак не связанную с платой Arduino. Реле по команде ардуино замыкает или размыкает контакты, тем самым включает или выключает ток. Соответственно, двигатель включается или выключается. Главным преимуществом этой схемы является ее простота и возможность использовать Главным недостатком данной схемы является то, что мы не можем управлять скоростью и направлением вращения.

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

Использовать специальную схему подключения, называемую H-мостом, с помощью которой мы можем изменять направление движения шпинделя двигателя. Сегодня можно без проблем найти как микросхемы, содержащие два или больше H-моста, так и отдельные модули и платы расширения, построенные на этих микросхемах.

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

Микросхема или плата расширения Motor Shield

Motor Shield – плата расширения для Ардуино, которая обеспечивает работу двигателей постоянного тока и шаговых двигателей. Самыми популярными платами Motor Shield являются схемы на базе чипов L298N и L293D, которые могут управлять несколькими двигателями. На плате установлен комплект сквозных колодок Ардуино Rev3, позволяющие устанавливать другие платы расширения. Также на плате имеется возможность выбора источника напряжения – Motor Shield может питаться как от Ардуино, так и от внешнего источника. На плате имеется светодиод, который показывает, работает ли устройство. Все это делает использование драйвера очень простым и надежным – не нужно самим изобретать велосипеды и решать уже кем-то решенные проблемы. В этой статье мы будем говорить именно о шилдах.

Принцип действия H-моста

Принцип работы драйвера двигателя основан на принципе работы H-моста. H-мост является электронной схемой, которая состоит из четырех ключей с нагрузкой. Название моста появилось из напоминающей букву H конфигурации схемы.

Схема моста изображена на рисунке. Q1…Q4 0 полевые, биполярные или IGBT транзисторы. Последние используются в высоковольтных сетях. Биполярные транзисторы практически не используются, они могут присутствовать в маломощных схемах. Для больших токов берут полевые транзисторы с изолированным затвором. Ключи не должны быть замкнуты вместе одновременно, чтобы не произошло короткого замыкания источника. Диоды D1…D4 ограничительные, обычно используются диоды Шоттки.

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

Q1Q2Q3Q4Состояние
1001Поворот мотора вправо
0110Поворот мотора влево
0000Свободное вращение
0101Торможение
1010Торможение
1100Короткое замыкание
0011Короткое замыкание

Подключение шагового двигателя к ардуино через l293d

Управление DC-моторчиками с помощью L293D

Изучение трактата профессора «школы компьютерного энтузиаста и микророботов» стало последней каплей, переполнившей чашу. Пришло время вплотную заняться управлением DC-моторчиками. Они будут двигать нашего робота вперёд-назад, а также разворачивать. В абсолютном большинстве случаев повороты осуществляются методом торможения одного из ведущих колёс. Простейшие роботы имеют два ведущих колеса, а третье – исключительно для опоры и уменьшения трения. Кстати, один деятель на каком-то форуме заявил: «всем известно, что трение скольжения, конечно же, значительно меньше, чем трение качения». Показал тем самым незнание элементарной физики и свою псевдокомпетентность. И это факт! Грустно становится иногда, но и позитивной информации в сети хватает, если не зависа́ть на форумах.

Я не буду в дальнейшем описывать мелкие детали. О них можно узнать в предыдущих публикациях. Попытаюсь работать более-менее системно, проиллюстрировав каждый шаг (если получится) практическим примером.

Драйвер двигателя L298N

Модуль используется для управления шаговыми двигателями с напряжением от 5 до 35 В. При помощи одной платы L298N можно управлять сразу двумя двигателями. Наибольшая нагрузка, которую обеспечивает микросхема, достигает 2 А на каждый двигатель. Если подключить двигатели параллельно, это значение можно увеличить до 4 А.

Плата выглядит следующим образом:

Распиновка микросхемы L298N:

  • Vcc – используется для подключения внешнего питания;
  • 5В;
  • Земля GND;
  • IN1, IN2, IN3, IN4 – используется для плавного управления скоростью вращения мотора;
  • OUT1, OUT2 – используется для выхода с первого двигателя;
  • OUT3, OUT4 – используется для выхода со второго двигателя;
  • S1 – переключает питание схемы: от внешнего источника или от внутреннего преобразователя;
  • ENABLE A, B – требуются для раздельного управления каналами. Используются в двух режимах – активный, при котором каналами управляет микроконтроллер и имеется возможность изменения скорости вращения, и пассивный, в котором невозможно управлять скоростью двигателей (установлено максимальное значение).

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

Как подключить Motor Shield к Ардуино

Для этого занятия нам потребуется:

К Ардуино шилд подключается очень просто — он устанавливается на плату UNO прямо сверху. Обратите внимание, что без подключения внешнего источника питания к Motor Shield, логика и двигатели будут работать от 5 Вольт, что не всегда бывает достаточно. Поэтому скорость вращения моторов постоянного тока при подключении платы Ардуино от компьютера и блока питания будет значительно отличаться.

Мотор Шилд Ардуино схема подключения

Обратите внимание, что даже если вы задали одинаковую скорость вращения в скетче, моторы в реальности могут вращаться с разной скоростью — на это оказывает влияние скорость самого двигателя, качество изготовления редуктора и колес. После подключения двигателей, как на схеме выше, загрузите следующий скетч (скачать библиотеку AFMotor и скетч можно здесь) для тестирования работы шилда:

Скетч для Motor Shield L293D Ардуино и моторов

Пояснения к коду:

Скетч для подключение серво и шаговых двигателей

Для управления сервоприводами используется стандартная библиотека Servo.h, сами сервоприводы подключаются к цифровым выходам 9 и 10 через штырьки на краю платы. К шилду можно подключить только два сервопривода и два шаговых двигателя. Первый шаговый двигатель подключается к клеммам M1 и M2, а второй к клеммам M3 и M4. Схема подключения двигателей к Motor Shield L293D изображена далее.

Подключение шаговых двигателей к Motor Shield L293D

После подключения Stepper Motor к шилду загрузите в плату следующий скетч:

Источник

Драйвер двигателя L293D

L293D – является самой простой микросхемой для работы с двигателями. L293D обладает двумя H-моста, которые позволяют управлять двумя двигателями. Рабочее напряжение микросхемы – 36 В, рабочий ток достигает 600 мА. На двигатель L293D может подавать максимальный ток в 1,2 А.

В схеме имеется 16 выходов. Распиновка:

  • +V – питание на 5 В;
  • +Vmotor – напряжение питания для мотором до 36 В;
  • 0V – земля;
  • En1, En2 –включают и выключают H-мосты;
  • In1, In2 – управляют первым H-мостом;
  • Out1, Out2 – подключение первого H-моста;
  • In3, In4 – управляют вторым H-мостом;
  • Out3, Out4 – подключение второго H-моста.

Для подключения к микроконтроллеру Arduino Uno нужно соединить выходы In1 на L293D и 7 пин на Ардуино, In2 – 8, In3 – 2, In4 – 3, En1 – 6, En2 – 5, V – 5V, Vmotor – 5 V, 0V – GND. Пример подключения одного двигателя к Ардуино показан на рисунке.

Схема подключения Motor Shield L293D и Arduino

Присоединение шилда к Arduino воспроизводится стандартным способом, а именно прямым подключением, сделав «бутерброд». Как это сделать, вы можете увидеть на фотографии ниже.

После подключения Motor Shield L293D к Arduino, нам необходимо присоединить оставшиеся компоненты. Правильное подключение показано на фотографии ниже.

Скорее всего, подключение не вызвало у вас проблем, так как оно очень даже простое. Пришло время перейти к более важной процедуре — к программированию.

Драйвер двигателя на микросхеме HG7881

HG7881 – двухканальный драйвер, к которому можно подключить 2 двигателя или четырехпроводной двухфазный шаговый двигатель. Устройство часто используется из-за своей невысокой стоимости. Драйвер используется только для изменения направления вращения, менять скорость он не может.

Плата содержит 2 схемы L9110S, работающие как H-мост.

Характеристики драйвера HG7881:

  • 4-контактное подключение;
  • Питание для двигателей от 2,5 В до 12 В;
  • Потребляемый ток менее 800 мА;
  • Малые габариты, небольшой вес.

Распиновка:

  • GND – земля;
  • Vcc – напряжение питания 2,5В – 12В;
  • A-IA – вход A(IA) для двигателя A;
  • A-IB – вход B (IB) для двигателя A;
  • B-IA – вход A(IA) для двигателя B;
  • B-IB – вход B (IB) для двигателя B.

В зависимости от поданного сигнала на выходах IA и IB будет разное состояние для двигателей. Возможные варианты для одного из моторов приведены в таблице.

IAIBСостояние мотора
00Остановка
10Двигается вперед
01Двигается назад
11Отключение

Подключение одного двигателя к Ардуино изображено на рисунке.

Сравнение модулей

Модуль L293D подает максимальный ток в 1,2А, в то время как на L298N можно добиться максимального тока в 4 А. Также L293D обладает меньшим КПД и быстро греется во время работы. При этом L293D является самой распространенной платой и стоит недорого. Плата HG7881 отличается от L293D и L298N тем, что с ее помощью можно управлять только направлением вращения, скорость менять она не может. HG7881 – самый дешевый и самый малогабаритный модуль.

Подключение мотор шилд к Ардуино

L293D motor shield Arduino ► рассмотрим подключение к плате Ардуино, команды библиотеки AFMotor для управление от L293D серво и моторами постоянного тока.
Сегодня мы разберем весьма полезное расширение для платы Arduino UNO — Motor Control Shield L293D, рассмотрим схему подключения к данному шилду сервомоторов, шаговых двигателей и моторов постоянного тока. Также вы можете ознакомиться с командами, используемых в библиотеке AFMotor.h, и попробовать различные скетчи для управления шаговыми двигателями и моторами постоянного тока на Ардуино.

Подключение L298N к Arduino

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

Нужно присоединить источник питания. + подключается к пину 4 на плате L298N, минус (GND) – к 5 пину. Затем нужно соединить выходы с L298N и пины на Ардуино, причем некоторые из них должны поддерживать ШИМ-модуляцию. На плате Ардуино они обозначены ~. Выходы с L298N IN1, IN2, IN3 и IN4 подключить к D7, D6, D5 и D4 на Ардуино соответственно. Подключение всех остальных контактов представлено на схеме.

Направление вращения задается с помощью сигналов HIGH и LOW на каждый канал. Двигатели начнут вращаться, только когда на 7 пине для первого мотора и на 12 пине для второго на L298N будет сигнал HIGH. Подача LOW останавливает вращение. Чтобы управлять скоростью, используются ШИМ-сигналы.

Для управления шаговым двигателем в Arduino IDE существует стандартная библиотека Stepper library. Чтобы проверить работоспособность собранной схемы, можно загрузить тестовый пример stepper_oneRevolution. При правильной сборке вал двигателя начнет вращаться.

При работе с моторами Ардуино может периодически перезагружаться. Это возникает из-за того, что двигателям требуются большие токи при старте и в момент торможения. Для решения этой проблемы в плату встроены конденсаторы, диоды и другие схемы. Также для этих целей на шидле имеется раздельное питание.

Настала пора Arduino поуправлять моторчиками :) Для этого воспользуемся самым популярным драйвером, используемым для управления моторчиками – микросхемой L293D.

L293D

содержит два драйвера для управления электродвигателями небольшой мощности. Имеет две пары входов для управляющих сигналов и две пары выходов для подключения электромоторов. Кроме того, у L293D есть два входа для включения каждого из драйверов. Эти входы используются для управления скоростью вращения электромоторов с помощью ШИМ (PWM).

Рассмотрим блок-схему L293D, приведённую в datasheet-е (нумерация для SO-корпуса

):

К выходам OUTPUT1 и OUTPUT2 подключается электромотор MOTOR1 (для микросхемы в DIP-корпусе – ножки 3 и 6

). Соответственно MOTOR2 подключается к выходам OUTPUT3 и OUTPUT4 (ножки
11 и 14
).

Сигналы, подаваемые на ENABLE1(2) управляют соответствующим драйвером (ножки 1 и 9 соответственно).

Подавая на вход ENABLE1 сигнал HIGH ( или просто соединив с плюсом источника питания +5V) – включаем драйвер 1-го моторчика. Если при этом на входы INPUT1 и INPUT2 сигналы не подавать, то моторчик вращаться не будет. Подавая HIGH на INPUT1 и LOW на INPUT2 мы заставим моторчик вращаться. А если теперь поменять сигналы местами и подавать на INPUT1 сигнал LOW, а на INPUT2 сигнал HIGH – мы заставим моторчик вращаться в другую сторону.

Аналогично для второго драйвера.

Выход Vss (ножка 16

) отвечает за питание самой микросхемы, а выход Vs (ножка
8
) отвечает за питание моторчиков – это обеспечивает разделение электропитания для микросхемы и для управляемых ею двигателей, что позволяет подключить электродвигатели с напряжением питания отличным от напряжения питания микросхемы.
Разделение электропитания микросхем и электродвигателей также необходимо для уменьшения помех, вызванных бросками напряжения, связанными с работой моторов.
Четыре контакта GND (ножки 4, 5, 12,13) нужно соединить с землёй. Так же эти контакты обеспечивают теплоотвод от микросхемы.

Характеристики L293D

напряжение питания двигателей (Vs) от 4,5 до 36В напряжение питания микросхемы (Vss) 5В допустимый ток нагрузки 600мА (на каждый канал) пиковый (максимальный) ток на выходе 1,2A (на каждый канал) логический «0» входного напряжения до 1,5В логическая «1» входного напряжения 2,3…7В скорость переключений до 5 кГц.

Если использовать микросхему L293E

, то допустимый ток нагрузки на каждый канал уже будет 1А (а пиковый ток – 2А),
но придётся использовать внешние защитные диоды, которые у L293D встроены в саму микросхему.
Попробуем смоделировать как Arduino справляется с управлением моторчиками :)

Запускаем Proteus и открываем проект с Arduino :) Добавим на схему наш драйвер – L293D

Соединим выводы Vss и Vs с положительным полюсом батареи, выводы GND соединим с землёй, а к выводам 3,6 и 11,14 подсоединим моторчики – соответственно MOTOR1 и MOTOR2.

В реальной схеме — параллельно к моторчику нужно припаять конденсатор – он помогает справиться с наводками от работающего электродвигателя ( это распространённая практика — разберите любую игрушку с моторчиком и увидите, что прямо к моторчику припаян керамический конденсатор номиналом где-то в 0,1 мкф )

А как же соединить входы драйверов? Для начала, посмотрим – как вообще это работает на практике :) Загрузим в МК скетч Blink или Blink_HL, а далее, как показано на рисунке, соединим INPUT1 и ENABLE1 с digital pin 13, к которому подключен светодиод, а INPUT2 соединим с землёй. Запустим симуляцию и увидим, что моторчик одну секунду вращается в одну сторону, а потом останавливается на секунду. Т.е. получили моторчиковый Blink :)

Итак, получается, что для управления одним моторчиком требуется три порта

(один из них — PWM). Если скоростью вращения моторчика управлять не требуется, то можно сэкономить на PWM-портах (ENABLE1 и ENABLE2). Тогда, для управления одним моторчиком нужно будет задействовать
два порта
.

Итак, определимся с портами (в скобках – соответствующий номер ножки МК из pin mapping ):

MOTOR1 11 (17) – PWM ENABLE1 12 (18) INPUT2 13 (19) INPUT1 MOTOR2 7 (13) INPUT3 8 (14) INPUT4 9 (15) – PWM ENABLE2

Изменим наш проект в Proteus-е:

А теперь напишем скетч.

Для удобства – будем хранить номера портов не в обычных переменных типа int, а объединим их структурой:

struct MOTOR // структура для хранения номеров pin-ов, к которым подключены моторчики { int in1; // INPUT1 int in2; // INPUT2 int enable; // ENABLE1 };

однако, если просто объявить такую структуру в коде скетча, например так:

/* * тестовый скетч с L293 */ struct MOTOR // структура для хранения номеров pin-ов, к которым подключены моторчики { int in1; // INPUT1 int in2; // INPUT2 int enable; // ENABLE1 }; // определяем порты, к которым подключены моторчики MOTOR MOTOR1 = { 13, 12, 11 }; MOTOR MOTOR2 = { 7, 8, 9 }; void set_m_pins(MOTOR *m); void setup() { set_m_pins(&MOTOR1); set_m_pins(&MOTOR2); Serial.begin(9600); } void loop() { delay(1000); } void set_m_pins(MOTOR *m) { if(m) { pinMode(m->in1, OUTPUT); pinMode(m->in2, OUTPUT); } }

То при попытке скомпилировать — получим ошибку:

error: variable or field ‘set_m_pins’ declared void In function ‘void setup()’:

— дело в том, что дополнительные структуры данных должны объявляться в заголовочных (.h) файлах. Т.е. нужно создать библиотечный файл и подключиться его к скетчу директивой #include

Однако, тут компилятору не нравится именно обращение к новому типу данных по указателю.

Изменим скетч:

/* * тестовый скетч с L293 */ struct MOTOR // структура для хранения номеров pin-ов, к которым подключены моторчики { int in1; // INPUT1 int in2; // INPUT2 int enable; // ENABLE1 }; // определяем порты, к которым подключены моторчики MOTOR MOTOR1 = { 13, 12, 11 }; MOTOR MOTOR2 = { 7, 8, 9 }; void setup() { Serial.begin(9600); pinMode(MOTOR1.in1, OUTPUT); // настраиваем выводы pinMode(MOTOR1.in2, OUTPUT); // на ВЫВОД pinMode(MOTOR2.in1, OUTPUT); pinMode(MOTOR2.in2, OUTPUT); } void loop() { forward1(); // вращаем оба моторчика вперёд forward2(); delay(3000); back2(); // вращаем второй моторчик назад delay(500); forward2(); // а теперь опять вращаем второй моторчик вперёд } void forward1() // первый вперёд { digitalWrite(MOTOR1.in1, HIGH); digitalWrite(MOTOR1.in2, LOW); analogWrite(MOTOR1.enable, 254); } void forward2() // второй вперёд { digitalWrite(MOTOR2.in1, HIGH); digitalWrite(MOTOR2.in2, LOW); analogWrite(MOTOR2.enable, 254); } void back1() // первый назад { digitalWrite(MOTOR1.in1, LOW); digitalWrite(MOTOR1.in2, HIGH); analogWrite(MOTOR1.enable, 254); } void back2() // второй назад { digitalWrite(MOTOR2.in1, LOW); digitalWrite(MOTOR2.in2, HIGH); analogWrite(MOTOR2.enable, 254); }

Три секунды оба моторчика вращаются вперёд, затем пол-секунды второй моторчик вращается назад, а потом снова вперёд.

Перенесём структуру и функции в нашу библиотеку RoboCraft.

/* * robocraft.h * * RoboCraft — library fo RoboCraft.ru project * RoboCraft — библиотека для проекта RoboCraft.ru * * * Written by noonv, August 2009. */ #ifndef robocraft_h #define robocraft_h #include «WProgram.h» #define _RCDEBUG_ 1 struct MOTOR // структура для хранения номеров pin-ов, к которым подключены моторчики { int in1; // INPUT1 int in2; // INPUT2 int enable; // ENABLE1 }; class RoboCraft { public: RoboCraft(); RoboCraft(MOTOR *m1, MOTOR *m2); void hello(); void motor_forward(int m,int speed=254); void motor_back(int m, int speed=254); private: void set_m_pins(MOTOR *m); void m_forward(MOTOR *m,int speed=254); void m_back(MOTOR *m,int speed=254); MOTOR MOTOR1; MOTOR MOTOR2; }; #endif // #ifndef robocraft_h А скетч тогда будет таким: #include // // тестовый скетч с L293 // добавили пробные функции для работы с моторчиками через L293 // // // by noonv // MOTOR MOTOR1 = { 13, 12, 11 }; MOTOR MOTOR2 = { 7, 8, 9 }; RoboCraft robot(&MOTOR1, &MOTOR2); // создаём экземпляр нашего класса void setup() { Serial.begin(9600); robot.hello(); // говорим «Hello» :) } void loop() { Serial.println(«loop»); robot.motor_forward(0,254); // оба полный вперёд :) delay(3000); robot.motor_back(2,254); // крутим второй назад delay(1000); robot.motor_forward(2,254); // и снова 2-й вперёд! }

Функции вращения принимают два параметра – номер моторчика(1-2) и скорость вращения (0-255). Если номер отличается от 1-2, то вращение задаётся сразу обоим моторчикам.

У меня под рукой оказалась микросхема L293E – поэтому необходимо использовать защитные диоды (1N4007), которых для двух моторчиков нужно аж 8 штук :)

Так же у L293E не 16, а целых 20 ножек:

Впрочем, для тестирования можно собрать схему только для одного моторчика ;)


Соответственно нужно внести изменения в скетч:

MOTOR MOTOR1 = { 13, 12, 11 }; MOTOR MOTOR2 = { 7, 8, 9 }; RoboCraft robot(&MOTOR1, &MOTOR2); // создаём экземпляр нашего класса void setup() { Serial.begin(9600); robot.hello(); // говорим «Hello» :) } void loop() { Serial.println(«loop»); robot.motor_forward(0,254); // полный вперёд :) delay(3000); robot.motor_back(1,254); // крутим назад delay(1000); } — крутим наш моторчик 3 секунды вперёд, а затем одну секунду назад.


Крутится :)

читать далее

Простой мотор-шилд для Arduino/CraftDuino Ещё пара слов про L293 L-Motor Shield

Ссылки

ДРАЙВЕР ДВИГАТЕЛЕЙ L293D https://www.arduino.cc/playground/Code/Struct

Класс AF_DCMotor

Класс AF_DCMotor дает возможность управлять скоростью и направлением четырех двигателей постоянного тока с использованием Motor Shield. Для того, чтобы использовать эту возможность при программировании Arduino, надо в начале скетча добавить следующую строку:

#include &ltAFMotor.h>

AF_DCMotor motorname(portnum, freq)

Функция для двигателей постоянного тока. Функцию надо вызывать один раз для каждого мотора постоянного тока, который вы используете. Каждый мотор должен иметь различное имя (motorname).

Параметры:

  • port num — выбор канала (1-4) на мотор шилде, к которому подключен двигатель.
  • freq — выбор частоты ШИМ сигнала. Если частота не указана, используется значение по умолчанию — 1 КГц.

Частоты для канала 1 и 2 следующие:

  • MOTOR12_64KHZ
  • MOTOR12_8KHZ
  • MOTOR12_2KHZ
  • MOTOR12_1KHZ

Частоты для канала 3 и 4:

  • MOTOR34_64KHZ
  • MOTOR34_8KHZ
  • MOTOR34_1KHZ

Пример:

AF_DCMotor motor4(4); // Инициализируем мотор на канале 4 с частотой ШИМ-модуляции 1 КГц

AF_DCMotor left_motor(1, MOTOR12_64KHZ); // Инициализируем мотор на канале 1 с частотой ШИМ 64 КГц

setSpeed(speed)

Устанавливает скорость вращения ротора мотора.

Параметры:

  • speed — значение скорости, которое находится в диапазоне от 0 до 255. 0 — не вращается, 255 — максимальная скорость вращения.

Пример:

Примечание: ответ двигателей постоянного тока обычно не линейный, так что фактическая скорость вращения не обязательна будет пропорциональна скорости, которую вы указали при программировании.

run(cmd)

Устанавливает режим работы мотора.

Параметры:

  • cmd — желаемый режим работы мотора

Значения, которые может принимать аргумент cmd:

  • FORWARD — вращение «вперед» (фактическое направление вращения ротора будет зависеть от подключения двигателя);
  • BACKWARD — вращение «назад» (вращение в противоположном направлении относительно FORWARD);
  • RELEASE — остановка мотора. Остановка питания мотора. Эквивалент setSpeed(0). На мотор шилде не предусмотрены механизмы динамической остановки, так что мотору понадобится некоторое время, чтобы ротор окончательно остановился.

Пример:

motor.run(FORWARD);

delay(1000); // вращается «вперед» на протяжении 1 секунды

motor.run(RELEASE);

delay(100); // ‘отпускаем ротор’ на 1/10 секунды

motor.run(BACKWARDS); // вращение в противоположном направлении

Рейтинг
( 2 оценки, среднее 4.5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]