Innehållsförteckning:
- Steg 1: Black Box
- Steg 2: Arduino
- Steg 3: Anslut Arduino till Blackbox
- Steg 4: Ultraljudssensor
- Steg 5: Anslutning av brödbräda till sensor till Arduino
- Steg 6: Motorskydd
- Steg 7: Anslutning av motorskydd till Arduino
- Steg 8: Anslut de fyra motorerna och batterierna till skärmen
- Steg 9: Programmera roboten
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-13 06:58
Hur man bygger ett hinder för att undvika robot
Steg 1: Black Box
det första steget använde jag en svart låda som bas för min robot.
Steg 2: Arduino
Arduino är hjärnan i hela systemet och orkestrerar våra motorer
Steg 3: Anslut Arduino till Blackbox
Jag fäst arduinoen i blackboxen med varmt lim
Steg 4: Ultraljudssensor
För att skapa en robot som kan röra sig själv behöver vi någon form av ingång, en sensor som passar vårt mål. En ultraljudssensor är ett instrument som mäter avståndet till ett föremål med hjälp av ultraljuds ljudvågor. En ultraljudssensor använder en givare för att skicka och ta emot ultraljudspulser som vidarebefordrar information om ett objekts närhet
Steg 5: Anslutning av brödbräda till sensor till Arduino
Jag använde trådar för att hana anslutningen mellan brödbrädan och arduino.
Var uppmärksam på att din pingsensor kan ha en annan stiftlayout, men den bör ha en spänningsstift, jordstift, trigpinne och en ekostift.
Steg 6: Motorskydd
Arduino -kort kan inte styra likströmsmotorer själva eftersom strömmarna de genererar är för låga. För att lösa detta problem använder vi motorskydd. stegmotor. … Genom att adressera dessa stift kan du välja en motorkanal som ska initieras, ange motorriktning (polaritet), ställ in motorvarvtal (PWM), stoppa och starta motorn och övervaka strömabsorptionen för varje kanal
Steg 7: Anslutning av motorskydd till Arduino
Fäst helt enkelt motorskyddet på arduino med sensortrådarna inpressade
Steg 8: Anslut de fyra motorerna och batterierna till skärmen
Varje motorskydd har (minst) två kanaler, en för motorerna och en för en strömkälla, Anslut dem i förhållande till varandra
Steg 9: Programmera roboten
kör den här koden
#inkludera #inkludera
NewPing -ekolod (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
booleska goesForward = false; int avstånd = 80; int speedSet = 0;
void setup () {
myservo.attach (10); myservo.write (115); fördröjning (2000); avstånd = readPing (); fördröjning (100); avstånd = readPing (); fördröjning (100); avstånd = readPing (); fördröjning (100); avstånd = readPing (); fördröjning (100); }
void loop () {int distanceR = 0; int avstånd L = 0; fördröjning (40); if (avstånd <= 15) {moveStop (); fördröjning (50); flytta bakåt(); fördröjning (150); moveStop (); fördröjning (100); distanceR = lookRight (); fördröjning (100); distanceL = lookLeft (); fördröjning (100);
if (distanceR> = distanceL) {turnRight (); moveStop (); } annat {turnLeft (); moveStop (); }} annat {moveForward (); } distans = readPing (); }
int lookRight () {myservo.write (50); fördröjning (250); int avstånd = readPing (); fördröjning (50); myservo.write (100); returavstånd; }
int lookLeft () {myservo.write (120); fördröjning (300); int avstånd = readPing (); fördröjning (100); myservo.write (115); returavstånd; fördröjning (100); }
int readPing () {delay (70); int cm = sonar.ping_cm (); om (cm == 0) {cm = 200; } retur cm; }
void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {
if (! goesForward) {goesForward = true; motor1.körning (FRAMÅT); motor2.run (FRAMÅT); motor3.körning (FRAMÅT); motor4.run (FRAMÅT); för (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); fördröjning (5); }}}
void moveBackward () {goesForward = false; motor1.körning (BACKWARD); motor2.run (BACKWARD); motor3.körning (BACKWARD); motor4.körning (BACKWARD); för (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); fördröjning (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.körning (FRAMÅT); motor4.run (FRAMÅT); fördröjning (500); motor1.körning (FRAMÅT); motor2.run (FRAMÅT); motor3.körning (FRAMÅT); motor4.run (FRAMÅT); }
void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); motor3.körning (FRAMÅT); motor4.run (FRAMÅT); fördröjning (500); motor1.körning (FRAMÅT); motor2.run (FRAMÅT); motor3.körning (FRAMÅT); motor4.run (FRAMÅT); }