Inhaltsverzeichnis:

Roboterauto zur Vermeidung von Hindernissen - Gunook
Roboterauto zur Vermeidung von Hindernissen - Gunook

Video: Roboterauto zur Vermeidung von Hindernissen - Gunook

Video: Roboterauto zur Vermeidung von Hindernissen - Gunook
Video: Ein unglaublicher fliegender Biker aus Russland. Das neue Modell 2024, Juli
Anonim
Roboterauto mit Hindernisvermeidung
Roboterauto mit Hindernisvermeidung
Roboterauto mit Hindernisvermeidung
Roboterauto mit Hindernisvermeidung

So bauen Sie einen Roboter, der Hindernisse ausweicht

Schritt 1: Blackbox

Blackbox
Blackbox

im ersten schritt habe ich eine black box als basis für meinen roboter verwendet.

Schritt 2: Arduino

Arduino
Arduino

Der Arduino ist das Gehirn des gesamten Systems und orchestriert unsere Motoren

Schritt 3: Anbringen des Arduino an Blackbox

Anbringen des Arduino an Blackbox
Anbringen des Arduino an Blackbox

Ich habe das Arduino mit Heißkleber an der Blackbox befestigt

Schritt 4: Ultraschallsensor

Ultraschallsensor
Ultraschallsensor

Um einen Roboter zu bauen, der sich selbst bewegen kann, brauchen wir eine Art Eingabe, einen Sensor, der zu unserem Ziel passt. Ein Ultraschallsensor ist ein Instrument, das die Entfernung zu einem Objekt mithilfe von Ultraschallwellen misst. Ein Ultraschallsensor verwendet einen Wandler, um Ultraschallimpulse zu senden und zu empfangen, die Informationen über die Nähe eines Objekts zurückgeben

Schritt 5: Steckbrettverbindung des Sensors zu Arduino

Steckbrettverbindung des Sensors zu Arduino
Steckbrettverbindung des Sensors zu Arduino
Steckbrettverbindung des Sensors zu Arduino
Steckbrettverbindung des Sensors zu Arduino

Ich benutzte Drähte, um die Verbindung zwischen dem Steckbrett und dem Arduino zu verbinden.

Beachten Sie, dass Ihr Ping-Sensor möglicherweise ein anderes Pin-Layout hat, aber er sollte einen Spannungs-Pin, Masse-Pin, Trig-Pin und einen Echo-Pin haben.

Schritt 6: Motorschild

Motorschild
Motorschild

Arduino-Boards können DC-Motoren nicht selbst steuern, da die von ihnen erzeugten Ströme zu niedrig sind. Um dieses Problem zu lösen, verwenden wir Motorschilde. Das Motorschild hat 2 Kanäle, die die Steuerung von zwei DC-Motoren oder 1. ermöglichen Schrittmotor. … Durch Adressieren dieser Pins können Sie einen zu startenden Motorkanal auswählen, die Motorrichtung (Polarität) festlegen, die Motordrehzahl (PWM) einstellen, den Motor stoppen und starten und die Stromaufnahme jedes Kanals überwachen

Schritt 7: Anschließen des Motorschilds an Arduino

Anschließen des Motorschilds an Arduino
Anschließen des Motorschilds an Arduino

Befestigen Sie einfach die Motorabschirmung am Arduino mit den eingeklemmten Sensordrähten

Schritt 8: Anschließen der 4 Motoren und Batterien an die Abschirmung

Anschließen der 4 Motoren und Batterien an die Abschirmung
Anschließen der 4 Motoren und Batterien an die Abschirmung

Jedes Motor Shield hat (mindestens) zwei Kanäle, einen für die Motoren und einen für eine Stromquelle. Verbinden Sie sie miteinander

Schritt 9: Programmieren Sie den Roboter

führe diesen Code aus

#einschließen #einschließen

NewPing-Sonar (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); Servo-Myservo;

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

boolean gehtForward=false; int-Abstand = 80; int speedSet = 0;

Leere Einrichtung () {

myservo.attach(10); myservo.write(115); Verzögerung (2000); Abstand = readPing(); Verzögerung (100); Abstand = readPing(); Verzögerung (100); Abstand = readPing(); Verzögerung (100); Abstand = readPing(); Verzögerung (100); }

Void Schleife () { Int DistanceR = 0; int-AbstandL = 0; Verzögerung (40); if (Abstand <=15) { moveStop(); Verzögerung (50); rückwärts bewegen(); Verzögerung (150); moveStop(); Verzögerung (100); distanceR = lookRight(); Verzögerung (100); AbstandL = lookLeft(); Verzögerung (100);

Wenn (EntfernungR>=EntfernungL) {turnRight(); moveStop(); } sonst { turnLeft(); moveStop(); }} sonst { moveForward(); } Abstand = readPing(); }

int lookRight () { myservo.write (50); Verzögerung (250); int-Abstand = readPing(); Verzögerung (50); myservo.write(100); Rückweg; }

int lookLeft () { myservo.write (120); Verzögerung (300); int-Abstand = readPing(); Verzögerung (100); myservo.write(115); Rückweg; Verzögerung (100); }

int readPing () { Verzögerung (70); int cm = sonar.ping_cm(); wenn (cm = = 0) {cm = 200; } zurück cm; }

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

if(!goesForward) { goesForward=true; motor1.run (vorwärts); motor2.run (vorwärts); motor3.run (FOWARD); motor4.run (FOWARD); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed(speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); Verzögerung(5); } } }

Void moveBackward() { goesForward=false; motor1.run (RÜCKWÄRTS); motor2.run (RÜCKWÄRTS); motor3.run (RÜCKWÄRTS); motor4.run (RÜCKWÄRTS); for (speedSet = 0; speedSet < MAX_SPEED; speedSet +=2) { motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); Verzögerung(5); aufrechtzuerhalten. Void turnLeft () { motor1.run (BACKWARD); motor2.run (RÜCKWÄRTS); motor3.run (FOWARD); motor4.run (FOWARD); Verzögerung (500); motor1.run (vorwärts); motor2.run (FOWARD); motor3.run (FOWARD); motor4.run (FOWARD); }

Void turnLeft () { motor1.run (BACKWARD); motor2.run (RÜCKWÄRTS); motor3.run (FOWARD); motor4.run (FOWARD); Verzögerung (500); motor1.run (vorwärts); motor2.run (vorwärts); motor3.run (FOWARD); motor4.run (FOWARD); }

Empfohlen: