Inhaltsverzeichnis:
- Schritt 1: Blackbox
- Schritt 2: Arduino
- Schritt 3: Anbringen des Arduino an Blackbox
- Schritt 4: Ultraschallsensor
- Schritt 5: Steckbrettverbindung des Sensors zu Arduino
- Schritt 6: Motorschild
- Schritt 7: Anschließen des Motorschilds an Arduino
- Schritt 8: Anschließen der 4 Motoren und Batterien an die Abschirmung
- Schritt 9: Programmieren Sie den Roboter
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
So bauen Sie einen Roboter, der Hindernisse ausweicht
Schritt 1: Blackbox
im ersten schritt habe ich eine black box als basis für meinen roboter verwendet.
Schritt 2: Arduino
Der Arduino ist das Gehirn des gesamten Systems und orchestriert unsere Motoren
Schritt 3: Anbringen des Arduino an Blackbox
Ich habe das Arduino mit Heißkleber an der Blackbox befestigt
Schritt 4: 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
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
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
Befestigen Sie einfach die Motorabschirmung am Arduino mit den eingeklemmten Sensordrähten
Schritt 8: 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); }