Проект 8: Робот который ездит по квадрату

В этом руководстве мы рассмотрим процесс программирования робота на базе Arduino с использованием модуля L298N для управления моторами. Мы научимся программировать робота так, чтобы он двигался по квадрату, используя библиотеку AlashMotorControlLite для упрощения управления моторами.

Теоретическая основа

Движение робота по квадрату основано на следующих принципах:

  • Прямолинейное движение: Оба мотора вращаются с одинаковой скоростью в одном направлении

  • Поворот: Один мотор вращается вперед, другой - назад, что создает поворот

  • Временное управление: Использование задержек для контроля длительности каждого движения

Необходимые компоненты

  • Arduino Uno

  • Модуль драйвера двигателя L298N

  • 2 DC мотора

  • Источник питания (батареи или блок питания)

  • Шасси робота с колесами

Подключение компонентов

Подключение модуля L298N к Arduino: - ENA → пин 10 (управление скоростью левого мотора) - IN1 → пин 9 (направление левого мотора) - IN2 → пин 8 (направление левого мотора) - IN3 → пин 7 (направление правого мотора) - IN4 → пин 6 (направление правого мотора) - ENB → пин 5 (управление скоростью правого мотора) - VCC → 5V Arduino - GND → GND Arduino - VM → внешний источник питания (5V-35V)

Установка библиотеки AlashMotorControlLite

Чтобы подключить библиотеку для Arduino, выполните следующие шаги:

  1. Скачайте обе библиотеки с официального сайта или из репозитория GitHub: - LiquidCrystal_I2C

  2. Откройте программу Arduino IDE и перейдите в меню «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку…».

  3. В открывшемся окне выберите скачанный .zip файл и нажмите «Открыть».

  4. Внизу Arduino IDE появится сообщение «Библиотека добавлена. Проверьте меню «Подключить библиотеку»».

  5. Теперь библиотека будет доступна для использования в ваших проектах.

Пример кода для движения робота по квадрату

/*
 * Этот код демонстрирует движение робота по квадрату с использованием библиотеки AlashMotorControlLite.
 * Код написан для Alash engineering.
 */
#include <AlashMotorControlLite.h>

// Создаем объект motorLeft с режимом DIR_DIR_PWM и пинами inA = 9, inB = 8, PWM = 10
AlashMotorControlLite motorLeft(DIR_DIR_PWM, 9, 8, 10);
// Создаем объект motorRight с режимом DIR_DIR_PWM и пинами inA = 7, inB = 6, PWM = 5
AlashMotorControlLite motorRight(DIR_DIR_PWM, 7, 6, 5);

void setup() {
  // В данной функции нет инициализации, оставлено пустым
}

void loop() {
  for (int i = 0; i < 4; i++) {
    // Движение вперед
    motorLeft.setSpeed(100);  // Установка скорости вращения вперед для левого мотора
    motorRight.setSpeed(100); // Установка скорости вращения вперед для правого мотора
    delay(1000);              // Движение вперед в течение 1 секунды

    // Поворот направо
    motorLeft.setSpeed(100);  // Левый мотор вращается вперед
    motorRight.setSpeed(-100);// Правый мотор вращается назад
    delay(750);              // Поворот в течение 0.75 секунд для поворота на 90 градусов

    // Пауза для стабилизации
    motorLeft.setSpeed(0);
    motorRight.setSpeed(0);
    delay(500);               // Пауза в течение 0.5 секунды
  }
}

Алгоритм движения

Робот выполняет следующий алгоритм движения:

  1. Движение вперед (1 секунда) - оба мотора вращаются вперед

  2. Поворот направо (0.75 секунды) - левый мотор вперед, правый назад

  3. Пауза (0.5 секунды) - оба мотора остановлены

  4. Повторение - цикл повторяется 4 раза

Результат

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

  • Движение вперед в течение 1 секунды

  • Поворот направо на 90 градусов в течение 0.75 секунд

  • Пауза для стабилизации в течение 0.5 секунд

Этот цикл будет повторяться четыре раза, чтобы робот прошел весь квадрат.

Настройка параметров

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

  • Скорость движения: Измените значения setSpeed() (от -255 до 255)

  • Время движения вперед: Измените delay(1000) для корректировки длины стороны квадрата

  • Время поворота: Измените delay(750) для точного поворота на 90 градусов

  • Время паузы: Измените delay(500) для стабилизации между движениями

Используя библиотеку AlashMotorControlLite, управление моторами упрощается, что позволяет сосредоточиться на логике движения робота. Вы можете настроить задержки для точного поворота робота в зависимости от его конструкции и мощности моторов.