Проект 10: Робот, который объезжает препятствия
Этот проект предназначен для тестирования робота, который следит за движением руки с помощью ультразвукового датчика. Используя библиотеки AlashUltrasonic и AlashMotorControl, робот обнаруживает препятствия и реагирует на них, двигаясь вперед, назад или останавливаясь в зависимости от расстояния до объекта. Проект позволяет проверить правильность сборки робота и работоспособность датчиков, обеспечивая базу для дальнейшего развития и улучшения функциональности робота.

В этом проекте мы будем тестировать робота, который будет следить за движением руки с помощью ультразвукового датчика. Используя библиотеки AlashUltrasonic и AlashMotorControl, мы упростим управление датчиком и моторами для выполнения этой задачи. Робот сможет обнаруживать препятствия и двигаться в зависимости от их расположения, что позволяет проверить правильность сборки и работоспособность датчиков.
Принцип работы
Ультразвуковой датчик измеряет расстояние до ближайшего объекта путем отправки ультразвукового сигнала и измерения времени, необходимого для возвращения отраженного сигнала. Датчик подключен к Arduino, который обрабатывает данные и управляет моторами через модуль L298N, чтобы робот мог двигаться вперед, назад или останавливаться в зависимости от расстояния до объекта.
Установка библиотек
Чтобы подключить библиотеки для Arduino, выполните следующие шаги:
Скачайте библиотеки с официального сайта или из репозитория GitHub:
Откройте программу Arduino IDE и перейдите в меню «Скетч» → «Подключить библиотеку» → «Добавить .ZIP библиотеку…».
В открывшемся окне выберите скачанный .zip файл и нажмите «Открыть».
Внизу Arduino IDE появится сообщение “Библиотека добавлена. Проверьте меню “Подключить библиотеку””.
Теперь библиотека будет доступна для использования в ваших проектах.
Пример кода
#include <AlashUltrasonic.h>
#include <AlashMotorControlX2.h>
// Определение пинов для ультразвукового датчика
const uint8_t TRIGGER_PIN = A1;
const uint8_t ECHO_PIN = A0;
AlashUltrasonic sensor(TRIGGER_PIN, ECHO_PIN);
// Определение пинов для моторов
const unsigned int PIN_FORWARD_LEFT = 9;
const unsigned int PIN_BACKWARD_LEFT = 8;
const unsigned int PIN_ENABLE_LEFT = 10;
const unsigned int PIN_FORWARD_RIGHT = 7;
const unsigned int PIN_BACKWARD_RIGHT = 6;
const unsigned int PIN_ENABLE_RIGHT = 5;
// Инициализация двух моторов
AlashMotorControlX2 motors(PIN_FORWARD_LEFT, PIN_BACKWARD_LEFT, PIN_ENABLE_LEFT, PIN_FORWARD_RIGHT, PIN_BACKWARD_RIGHT, PIN_ENABLE_RIGHT);
void setup() {
Serial.begin(9600); // Инициализация последовательного порта для отображения информации
sensor.begin();
motors.setSpeed(80); // Установка начальной скорости для обоих моторов
}
void loop() {
float distanceCenter = sensor.getDistance();
Serial.print("DistanceCenter: ");
Serial.print(distanceCenter);
Serial.println(" cm");
if (distanceCenter < 25) {
motors.setSpeed(100);
motors.backward();
}
else if (distanceCenter >= 25 && distanceCenter < 50) {
motors.setSpeed(100);
motors.forward();
}
else {
motors.stop();
}
delay(25);
}
Описание кода
Инициализация датчика и моторов:
Создаем объект sensor для управления ультразвуковым датчиком.
Создаем объект motors для управления двумя моторами.
В функции setup инициализируем последовательный порт, датчик и устанавливаем начальную скорость для моторов.
Основной цикл (loop):
Получаем расстояние до объекта с помощью датчика.
Если расстояние меньше 25 см, робот движется назад.
Если расстояние между 25 и 50 см, робот движется вперед.
Если объектов поблизости нет (более 50 см), робот останавливается.
Информация о расстоянии выводится в последовательный монитор.
Полезная информация
Ультразвуковые датчики: Ультразвуковые датчики, такие как HC-SR04, позволяют точно измерять расстояние до объектов и избегать препятствий. Они отправляют ультразвуковые волны и измеряют время их отражения, что позволяет определять расстояние до объекта с высокой точностью.
Библиотека AlashUltrasonic: Эта библиотека упрощает работу с ультразвуковыми датчиками, предоставляя удобные функции для получения расстояния. Она абстрагирует детали работы с датчиком, позволяя разработчикам сосредоточиться на логике приложения.
Библиотека AlashMotorControl: Эта библиотека упрощает управление моторами, предоставляя функции для управления скоростью и направлением вращения моторов. Она поддерживает различные режимы управления и позволяет легко интегрировать управление моторами в проекты на базе Arduino.
Оптимизация работы: Вы можете экспериментировать с настройками скорости и расстояния, чтобы оптимизировать работу робота для конкретных задач и условий. Например, вы можете настроить пороговые значения расстояний
Заключение
Этот проект позволяет протестировать робота, собранного из набора 4WD Smart Car Kit v1.0, который следит за движением руки или других объектов, используя ультразвуковой датчик и две библиотеки для управления сенсорами и моторами. Это отличная возможность для изучения основ робототехники, работы с датчиками и управления моторами на базе Arduino. Вы можете продолжить улучшать и модифицировать этот проект, добавляя новые функции и возможности, такие как более сложные алгоритмы избегания препятствий или использование дополнительных датчиков для повышения точности и функциональности робота.