Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия Следующая версия Следующая версия справа и слева | ||
main:shields:motor_shield [2020/03/30 12:03] smartadmin ↷ Страница перемещена из main:шилды:motor_shield в main:shields:motor_shield |
main:shields:motor_shield [2020/11/09 10:08] smartadmin [Пример подключения и использования] |
||
---|---|---|---|
Строка 40: | Строка 40: | ||
* Разъём для внешнего питания (со светодиодом-индикатором) | * Разъём для внешнего питания (со светодиодом-индикатором) | ||
* Совмещает в себе два шилда - шилд для управления моторами и сенсор шилд | * Совмещает в себе два шилда - шилд для управления моторами и сенсор шилд | ||
+ | |||
+ | ==== Библиотеки ==== | ||
+ | * [[http://files.smartelements.ru/know_libs/robotSE.zip|Библиотека robotSE]] | ||
+ | |||
+ | ==== Описание библиотеки ==== | ||
+ | Для более удобной работы с шилдом предусмотрена библиотека robotSE. Ниже приведено описание работы с библиотекой. | ||
+ | |||
+ | === Инициализация === | ||
+ | |||
+ | |||
+ | Инициализация и создание объекта для управления движением происходит с помощью типа robotSE. Простейший способ создания объекта робота: | ||
+ | |||
+ | <file> | ||
+ | robotSE myRobot; | ||
+ | </file> | ||
+ | |||
+ | При таком вызове выводы шилда назначены по-умолчанию. Если требуется указать явно номера выводов, используйте создание объекта с параметрами: | ||
+ | |||
+ | <file> | ||
+ | robotSE myRobot(E1, E2, M1, M2, speed) | ||
+ | </file> | ||
+ | где: | ||
+ | - **E1** - вывод подключения пина мотор-шилда Е1 | ||
+ | - **E2** - вывод подключения пина мотор-шилда E2 | ||
+ | - **M1** - вывод подключения пина мотор-шилда M1 | ||
+ | - **M2** - вывод подключения пина мотор-шилда M2 | ||
+ | - **speed** - скорость вращения моторов (задаётся значением от 0 до 255, где 0 - колёса вращаться не будут). По-умолчанию скорость равна 150. | ||
+ | |||
+ | === Установка скорости === | ||
+ | Для управления скоростью предусмотрен метод **setSpeed(speed)**, имеющий единственный параметр - скорость, от 0 до 255. | ||
+ | |||
+ | === Движение === | ||
+ | Для управления движением предусмотрены следующие методы (движение происходит со скоростью, указанной при изначальном создании объекта робота или установленной с помощью метода setSpeed(speed)): | ||
+ | |||
+ | * **move_forward()** - робот движется вперед | ||
+ | * **move_right()** - робот движется вправо | ||
+ | * **move_left()** - робот движется влево | ||
+ | * **move_back()** - робот движется назад | ||
+ | * **move_stop()** - робот останавливается | ||
+ | * **randomMove()** - робот движется в случайном направлении. Техника движения следующая: сначала случайным образом робот поворачивает с заданной выше скоростью в течении 200 мс, затем движется вперёд. | ||
+ | |||
===== Пример подключения и использования ===== | ===== Пример подключения и использования ===== | ||
Строка 60: | Строка 101: | ||
**Скетч для загрузки:** | **Скетч для загрузки:** | ||
<file Arduino> | <file Arduino> | ||
- | #define E1 6 //Вывод платы расширения Motor Drive Shield, используемый для контроля скорости мотора А. | + | #include <robotSE.h> //подключение библиотеки |
- | #define E2 5 //Вывод платы расширения Motor Drive Shield, используемый для контроля скорости мотора В. | + | |
- | #define M1 7 //Вывод платы расширения Motor Drive Shield, используемый для контроля направления вращения мотора А. | + | |
- | #define M2 4 //Вывод платы расширения Motor Drive Shield, используемый для контроля направления вращения мотора В. | + | |
- | int motorSpeed = 255; //Переменная для хранения скорости вращения моторов (вы можете задать свою скорость вращения колес). | + | robotSE myRobot; //создание объекта робота |
- | int delay_time = 1500; | + | |
- | void motor_drive_config() //Инициализация выводов платы расширения Motor Drive Shield. | + | int delay_time = 1500; //время задержки для движения |
- | { | + | |
- | pinMode(M1, OUTPUT); //Назначение вывода M1 выходом. | + | |
- | pinMode(M2, OUTPUT); //Назначение вывода M2 выходом. | + | |
- | pinMode(E1, OUTPUT); //Назначение вывода E1 выходом. | + | |
- | pinMode(E2, OUTPUT); //Назначение вывода E2 выходом. | + | |
- | } | + | |
- | void move_forward() //Движение робота вперед. | ||
- | { | ||
- | digitalWrite(M1, HIGH); //Левые колеса вращаются вперед. | ||
- | digitalWrite(M2, HIGH); //Правые колеса вращаются вперед. | ||
- | analogWrite(E1, motorSpeed); //Скорость вращения правых колес. | ||
- | analogWrite(E2, motorSpeed); //Скорость вращения левых колес. | ||
- | } | ||
- | |||
- | void move_right() //Движение робота вправо. | ||
- | { | ||
- | digitalWrite(M1, LOW); //Левые колеса вращаются назад. | ||
- | digitalWrite(M2, HIGH); //Правые колеса вращаются вперед. | ||
- | analogWrite(E1, motorSpeed); //Скорость вращения левых колес. | ||
- | analogWrite(E2, motorSpeed); //Скорость вращения правых колес. | ||
- | } | ||
- | |||
- | void move_left() //Движение робота влево. | ||
- | { | ||
- | digitalWrite(M1, HIGH); //Левые колеса вращаются вперед. | ||
- | digitalWrite(M2, LOW); //Правые колеса вращаются назад. | ||
- | analogWrite(E1, motorSpeed); //Скорость вращения левых колес. | ||
- | analogWrite(E2, motorSpeed); //Скорость вращения правых колес. | ||
- | } | ||
- | |||
- | void move_stop() //Остановка робота. | ||
- | { | ||
- | digitalWrite(M1, LOW); //Левые колеса вращаются назад. | ||
- | digitalWrite(M2, LOW); //Правые колеса вращаются назад. | ||
- | analogWrite(E1, 0); //Скорость вращения колес снизить до 0. | ||
- | analogWrite(E2, 0); //Скорость вращения колес снизить до 0. | ||
- | } | ||
- | |||
- | void move_back() //Движение робота назад. | ||
- | { | ||
- | digitalWrite(M1, LOW); //Левые колеса вращаются назад. | ||
- | digitalWrite(M2, LOW); //Правые колеса вращаются назад. | ||
- | analogWrite(E1, motorSpeed); //Скорость вращения левых колес. | ||
- | analogWrite(E2, motorSpeed); //Скорость вращения правых колес. | ||
- | } | ||
void setup() // Задание начальных параметров системы. | void setup() // Задание начальных параметров системы. | ||
{ | { | ||
- | motor_drive_config(); //инициализация выводов платы расширения Motor Drive Shield. | + | |
- | move_stop(); //начальная позиция робота — робот стоит. | + | |
} | } | ||
void loop() //Основной цикл | void loop() //Основной цикл | ||
{ | { | ||
- | move_forward(); //движение вперёд | + | myRobot.move_forward(); //движение вперёд |
delay(delay_time); //задержка | delay(delay_time); //задержка | ||
- | move_right(); //движение вправо | + | myRobot.move_right(); //движение вправо |
delay(delay_time); //задержка | delay(delay_time); //задержка | ||
- | move_left(); //движение влево | + | myRobot.move_left(); //движение влево |
delay(delay_time); //задержка | delay(delay_time); //задержка | ||
- | move_back(); //движение назад | + | myRobot.move_back(); //движение назад |
delay(delay_time); //задержка | delay(delay_time); //задержка | ||
- | move_stop(); //остановка | + | myRobot.move_stop(); //остановка |
delay(delay_time); //задержка | delay(delay_time); //задержка | ||
} | } | ||
</file> | </file> |