Моторы Zumo 32U4
Робот Zumo 32U4 имеет два встроенных металлических микро мотор-редуктора, которые предлагают хорошее сочетание скорости, мощности и управляемости.Редуктор - это устройство, предназначенное для преобразования высокой скорости вращения входного вала в более низкую скорость выходного вала. Мотор-редуктор - это конструкция, которая образуется, если соединить редуктор и электромотор.
Тип данных для задания скорости
Скорость для моторов находится в диапазоне от -400 до 400. Мы будем использовать целочисленные типы фиксированного размера int16_t (от -32 768 до 32 767).Программирование моторов
Используемые объекты:Zumo32U4Motors motors;
Используемые методы:
motors.setLeftSpeed(int16_t speed) // установить скорость для левого мотора
motors.setRightSpeed(int16_t speed) // установить скорость для правого мотора
motors.setSpeeds(int16_t leftSpeed, int16_t rightSpeed); // установить скорость для двух моторов
motors.flipLeftMotor(bool flip) // изменить направление движения левого мотора на противоположное
motors.flipRightMotor(bool flip) // изменить направление движения правого мотора на противоположное
Пример программы
/* Робот ждёт нажатия на кнопку А. После нажатия на неё он ждёт 2 секунды и начинает движение вперёд с начальной скоростью robotSpeed = 50*/
#include <Wire.h>#include <Zumo32U4.h>
Zumo32U4Motors motors;
Zumo32U4LCD lcd;
Zumo32U4ButtonA buttonA;
Zumo32U4ButtonB buttonB;
Zumo32U4ButtonC buttonC;
// Объявим переменную и зададим начальную скорость
int16_t robotSpeed = 50;
void setup() {
// Останавливаем оба мотора
motors.setSpeeds(0,0);
// Очистка экрана и вывод надписи
lcd.clear();
lcd.gotoXY(0,0);
lcd.print("Press A");
// Ждём нажатия кнопки А, ждём 2 секунды
buttonA.waitForButton();
delay(2000);
// Запускаем оба мотора со скоростью robotSpeed
motors.setSpeeds(robotSpeed ,robotSpeed );
}
void loop() {
// Кнопка В останавливает моторы
if(buttonB.getSingleDebouncedPress())
{
motors.setSpeeds(0,0);
}
// Кнопка А запускает моторы
if(buttonA.getSingleDebouncedPress())
{
motors.setSpeeds(robotSpeed,robotSpeed);
}
// Кнопка С увеличивает скорость моторов и выводит новую скорость на экран
if(buttonC.getSingleDebouncedPress())
{
robotSpeed = robotSpeed + 10;
lcd.clear();
lcd.gotoXY(0,0);
lcd.print(robotSpeed);
motors.setSpeeds(robotSpeed,robotSpeed);
}
}
Задачи
Задача 1. Робот едет вперёд со скоростью 200 2 секунды, после едет назад с той же скоростью 1 секунду. После этого 1 секунду крутится вокруг своей оси.Задача 2. Кнопка А включает моторы на ход вперёд. Кнопка В включает моторы на реверс – ход назад. Кнопка С останавливает моторы. Когда робот едет вперёд, он светит зелёной лампочкой. Когда назад – светит красной лампочкой. Когда стоит на месте, мигает жёлтой лампочкой
Задача 3. Написать программу движения робота по квадратной траектории.
Задача 4. Написать программу для прохождения роботом дистанции в 1 метр и остановки с точностью до 1 сантиметра. Найти зависимость между скоростью и временем для прохождения. Использовать эту программу для дистанций в 2 и 3 метра. Попробовать использовать эту программу на другой поверхности (например, на ковре).
Задача 5. Сделать из подручных средств устройство для рисования (например, карандаш), чтобы робот мог оставлять за собой след.
Комментарии
Отправить комментарий