Оглавление:

Роботизированная машина для объезда препятствий: 9 шагов
Роботизированная машина для объезда препятствий: 9 шагов

Видео: Роботизированная машина для объезда препятствий: 9 шагов

Видео: Роботизированная машина для объезда препятствий: 9 шагов
Видео: Машинка Arduino – как собрать и программа 2024, Июль
Anonim
Роботизированная машина для обхода препятствий
Роботизированная машина для обхода препятствий
Роботизированная машина для обхода препятствий
Роботизированная машина для обхода препятствий

Как построить робота для обхода препятствий

Шаг 1: черный ящик

Черный ящик
Черный ящик

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

Шаг 2: Arduino

Ардуино
Ардуино

Arduino - это мозг всей системы, управляющий нашими двигателями.

Шаг 3: Присоединение Arduino к Blackbox

Присоединение Arduino к Blackbox
Присоединение Arduino к Blackbox

Я прикрепил ардуино к черному ящику с помощью горячего клея

Шаг 4: ультразвуковой датчик

Ультразвуковой датчик
Ультразвуковой датчик

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

Шаг 5: Макетное подключение датчика к Arduino

Макетное подключение датчика к Arduino
Макетное подключение датчика к Arduino
Макетное подключение датчика к Arduino
Макетное подключение датчика к Arduino

Я использовал провода, чтобы соединить макетную плату и Arduino.

Обратите внимание, что ваш датчик ping может иметь другое расположение выводов, но он должен иметь вывод напряжения, вывод заземления, вывод триггера и вывод эха.

Шаг 6: моторный щит

Моторный щит
Моторный щит

Платы Arduino не могут управлять двигателями постоянного тока самостоятельно, потому что генерируемые ими токи слишком малы. Для решения этой проблемы мы используем экраны двигателя. Щит двигателя имеет 2 канала, что позволяет управлять двумя двигателями постоянного тока, или 1 шаговый двигатель. … Обращаясь к этим контактам, вы можете выбрать канал двигателя для запуска, указать направление двигателя (полярность), установить скорость двигателя (ШИМ), остановить и запустить двигатель, а также контролировать потребление тока в каждом канале.

Шаг 7: Подключение Motor Shield к Arduino

Подключение Motor Shield к Arduino
Подключение Motor Shield к Arduino

Просто прикрепите моторный щит к ардуино с зажатыми проводами датчика.

Шаг 8: Подключение 4 двигателей и батарей к экрану

Подключение 4 двигателей и батарей к экрану
Подключение 4 двигателей и батарей к экрану

Каждый Motor Shield имеет (как минимум) два канала, один для двигателей и один для источника питания. Соедините их друг с другом.

Шаг 9: запрограммируйте робота

запустите этот код

#include #include

Эхолот NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motor1 (1, MOTOR12_1KHZ); AF_DCMotor motor2 (2, MOTOR12_1KHZ); AF_DCMotor motor3 (3, MOTOR34_1KHZ); AF_DCMotor motor4 (4, MOTOR34_1KHZ); Сервомашина;

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

логическое goForward = false; int distance = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); задержка (2000); расстояние = readPing (); задержка (100); расстояние = readPing (); задержка (100); расстояние = readPing (); задержка (100); расстояние = readPing (); задержка (100); }

void loop () {int distanceR = 0; int distanceL = 0; задержка (40); если (расстояние <= 15) {moveStop (); задержка (50); двигаться назад(); задержка (150); moveStop (); задержка (100); distanceR = lookRight (); задержка (100); distanceL = lookLeft (); задержка (100);

если (distanceR> = distanceL) {turnRight (); moveStop (); } еще {turnLeft (); moveStop (); }} еще {moveForward (); } distance = readPing (); }

int lookRight () {мой резервуар.write (50); задержка (250); int distance = readPing (); задержка (50); myservo.write (100); расстояние возврата; }

int lookLeft () {мой резервуар.write (120); задержка (300); int distance = readPing (); задержка (100); myservo.write (115); расстояние возврата; задержка (100); }

int readPing () {задержка (70); int cm = sonar.ping_cm (); если (см == 0) {см = 200; } return cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (РЕЛИЗ); motor3.run (ВЫПУСК); motor4.run (РЕЛИЗ); } void moveForward () {

если (! идет вперед) {идет вперед = истина; motor1.run (ВПЕРЕД); motor2.run (ВПЕРЕД); motor3.run (ВПЕРЕД); motor4.run (ВПЕРЕД); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (набор скорости); motor3.setSpeed (набор скорости); motor4.setSpeed (набор скорости); задержка (5); }}}

void moveBackward () {goForward = false; motor1.run (НАЗАД); motor2.run (НАЗАД); motor3.run (НАЗАД); motor4.run (НАЗАД); for (speedSet = 0; speedSet <MAX_SPEED; speedSet + = 2) {motor1.setSpeed (speedSet); motor2.setSpeed (набор скорости); motor3.setSpeed (набор скорости); motor4.setSpeed (набор скорости); задержка (5); } void turnLeft () {motor1.run (НАЗАД); motor2.run (НАЗАД); motor3.run (ВПЕРЕД); motor4.run (ВПЕРЕД); задержка (500); motor1.run (ВПЕРЕД); motor2.run (ВПЕРЕД); motor3.run (ВПЕРЕД); motor4.run (ВПЕРЕД); }

void turnLeft () {motor1.run (НАЗАД); motor2.run (НАЗАД); motor3.run (ВПЕРЕД); motor4.run (ВПЕРЕД); задержка (500); motor1.run (ВПЕРЕД); motor2.run (ВПЕРЕД); motor3.run (ВПЕРЕД); motor4.run (ВПЕРЕД); }

Рекомендуемые: