Obsah:

Robotické auto vyhýbající se překážkám: 9 kroků
Robotické auto vyhýbající se překážkám: 9 kroků

Video: Robotické auto vyhýbající se překážkám: 9 kroků

Video: Robotické auto vyhýbající se překážkám: 9 kroků
Video: OKRADLI MĚ ZLODĚJI… 2024, Červenec
Anonim
Robotickému vozu, který se vyhýbá překážkám
Robotickému vozu, který se vyhýbá překážkám
Robotickému vozu, který se vyhýbá překážkám
Robotickému vozu, který se vyhýbá překážkám

Jak postavit robota, který se vyhýbá překážkám

Krok 1: Black Box

Černá skříňka
Černá skříňka

v prvním kroku jsem jako základ svého robota použil černou skříňku.

Krok 2: Arduino

Arduino
Arduino

Arduino je mozek celého systému a orchestruje naše motory

Krok 3: Připojení Arduina k Blackboxu

Připojení Arduina k Blackboxu
Připojení Arduina k Blackboxu

Arduino jsem připevnil na blackbox pomocí horkého lepidla

Krok 4: Ultrazvukový senzor

Ultrazvukový senzor
Ultrazvukový senzor

Abychom mohli robota, který se dokáže sám pohybovat, potřebujeme nějaký vstup, senzor, který odpovídá našemu cíli. Ultrazvukový senzor je nástroj, který měří vzdálenost k předmětu pomocí ultrazvukových zvukových vln. Ultrazvukový senzor používá snímač k odesílání a přijímání ultrazvukových impulsů, které přenášejí zpět informace o blízkosti objektu

Krok 5: Breadboard připojení senzoru k Arduinu

Připojení senzoru k Arduinu na Breadboardu
Připojení senzoru k Arduinu na Breadboardu
Připojení senzoru k Arduinu na Breadboardu
Připojení senzoru k Arduinu na Breadboardu

Použil jsem dráty k propojení spojení mezi prkénkem a arduinem.

Dávejte pozor, aby váš snímač ping měl jiné rozložení pinů, ale mělo by mít napěťový pin, zemnící pin, trigonový pin a echo pin.

Krok 6: Motorový štít

Motorový štít
Motorový štít

Desky Arduino nemohou samy řídit stejnosměrné motory, protože generované proudy jsou příliš nízké. K vyřešení tohoto problému používáme stínění motoru. Štít motoru má 2 kanály, což umožňuje ovládání dvou stejnosměrných motorů nebo 1 krokový motor. … Adresováním těchto pinů můžete vybrat kanál motoru, který chcete spustit, určit směr motoru (polaritu), nastavit otáčky motoru (PWM), zastavit a spustit motor a sledovat absorpci proudu každého kanálu

Krok 7: Připojení štítu motoru k Arduinu

Připojení štítu motoru k Arduinu
Připojení štítu motoru k Arduinu

Jednoduše připevněte stínění motoru k arduinu se zalomenými dráty senzoru

Krok 8: Připojení 4 motorů a baterií k štítu

Připojení 4 motorů a baterií k štítu
Připojení 4 motorů a baterií k štítu

Každý štít motoru má (alespoň) dva kanály, jeden pro motory a jeden pro zdroj energie, propojte je navzájem

Krok 9: Naprogramujte robota

spusťte tento kód

#include #include

NewPing sonar (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DC Motor motoru1 (1, MOTOR12_1KHZ); AF_DC Motor motoru2 (2, MOTOR12_1KHZ); AF_DC Motor motoru3 (3, MOTOR34_1KHZ); AF_DC Motor motoru4 (4, MOTOR34_1KHZ); Servo myservo;

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

boolean goesForward = false; int vzdálenost = 80; int speedSet = 0;

neplatné nastavení () {

myservo.attach (10); myservo.write (115); zpoždění (2000); vzdálenost = readPing (); zpoždění (100); vzdálenost = readPing (); zpoždění (100); vzdálenost = readPing (); zpoždění (100); vzdálenost = readPing (); zpoždění (100); }

void loop () {int vzdálenostR = 0; int vzdálenostL = 0; zpoždění (40); if (vzdálenost <= 15) {moveStop (); zpoždění (50); jít zpět(); zpoždění (150); moveStop (); zpoždění (100); distanceR = lookRight (); zpoždění (100); vzdálenostL = lookLeft (); zpoždění (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } vzdálenost = readPing (); }

int lookRight () {myservo.write (50); zpoždění (250); int vzdálenost = readPing (); zpoždění (50); myservo.write (100); návratová vzdálenost; }

int lookLeft () {myservo.write (120); zpoždění (300); int vzdálenost = readPing (); zpoždění (100); myservo.write (115); návratová vzdálenost; zpoždění (100); }

int readPing () {zpoždění (70); int cm = sonar.ping_cm (); if (cm == 0) {cm = 200; } vrátit cm; }

void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {

if (! goesForward) {goesForward = true; motor1.run (VPŘED); motor2.run (VPŘED); motor3.run (VPŘED); motor4.run (VPŘED); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); zpoždění (5); }}}

void moveBackward () {goesForward = false; motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (BACKWARD); motor4.run (BACKWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); zpoždění (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (VPŘED); motor4.run (VPŘED); zpoždění (500); motor1.run (VPŘED); motor2.run (VPŘED); motor3.run (VPŘED); motor4.run (VPŘED); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.run (VPŘED); motor4.run (VPŘED); zpoždění (500); motor1.run (VPŘED); motor2.run (VPŘED); motor3.run (VPŘED); motor4.run (VPŘED); }

Doporučuje: