Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Hvordan bygge et hinder for å unngå robot
Trinn 1: Black Box
det første trinnet brukte jeg en svart boks som base for roboten min.
Trinn 2: Arduino
Arduino er hjernen i hele systemet og orkestrerer motorene våre
Trinn 3: Fest Arduino til Blackbox
Jeg festet arduinoen til blackboxen med varmt lim
Trinn 4: Ultralydsensor
For å lage en robot som kan bevege seg alene trenger vi en slags inngang, en sensor som passer målet vårt. En ultralydsensor er et instrument som måler avstanden til et objekt ved hjelp av ultralyds lydbølger. En ultralydsensor bruker en transduser til å sende og motta ultralydspulser som videresender informasjon om et objekts nærhet
Trinn 5: Tilkobling av sensor til brødbrett til Arduino
Jeg brukte ledninger til å male forbindelsen mellom brødbrettet og arduino.
Vær oppmerksom på at ping -sensoren din kan ha en annen pin -layout, men den bør ha en spenningspinne, jordet pin, trig -pin og en ekko -pin.
Trinn 6: Motorskjerm
Arduino -kort kan ikke styre likestrømsmotorer alene, fordi strømmen de genererer er for lav. For å løse dette problemet bruker vi motorskjerm. trinnmotor. … Ved å adressere disse pinnene kan du velge en motorkanal å starte, spesifisere motorretningen (polaritet), stille inn motorhastighet (PWM), stoppe og starte motoren og overvåke strømabsorpsjonen til hver kanal
Trinn 7: Koble motorskjermen til Arduino
Bare fest motorskjermen til arduinoen med sensortrådene knust inn
Trinn 8: Koble de 4 motorene og batteriene til skjoldet
Hvert motorskjerm har (minst) to kanaler, en for motorene og en for en strømkilde, koble dem til hverandre
Trinn 9: Programmer roboten
kjør denne koden
#include #include
NewPing -ekkolodd (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
boolsk goesForward = false; int avstand = 80; int speedSet = 0;
ugyldig oppsett () {
myservo.attach (10); myservo.write (115); forsinkelse (2000); distance = readPing (); forsinkelse (100); distance = readPing (); forsinkelse (100); distance = readPing (); forsinkelse (100); distance = readPing (); forsinkelse (100); }
void loop () {int distanceR = 0; int distanse L = 0; forsinkelse (40); if (avstand <= 15) {moveStop (); forsinkelse (50); Flytt tilbake(); forsinkelse (150); moveStop (); forsinkelse (100); distanceR = lookRight (); forsinkelse (100); distanceL = lookLeft (); forsinkelse (100);
if (distanceR> = distanceL) {turnRight (); moveStop (); } annet {turnLeft (); moveStop (); }} annet {moveForward (); } distanse = readPing (); }
int lookRight () {myservo.write (50); forsinkelse (250); int distance = readPing (); forsinkelse (50); myservo.write (100); returavstand; }
int lookLeft () {myservo.write (120); forsinkelse (300); int distance = readPing (); forsinkelse (100); myservo.write (115); returavstand; forsinkelse (100); }
int readPing () {forsinkelse (70); int cm = sonar.ping_cm (); hvis (cm == 0) {cm = 200; } retur cm; }
void moveStop () {motor1.run (RELEASE); motor2.run (RELEASE); motor3.run (RELEASE); motor4.run (RELEASE); } void moveForward () {
hvis (! goesForward) {goesForward = true; motor1.run (FREM); motor2.run (FREM); motor3.run (FREM); motor4.run (FREM); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); forsinkelse (5); }}}
void moveBackward () {goesForward = false; motor1.run (BACKWARD); motor2.run (TILBAKE); motor3.kjøring (TILBAKE); motor4.run (BACKWARD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); forsinkelse (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (TILBAKE); motor3.run (FREM); motor4.run (FREM); forsinkelse (500); motor1.run (FREM); motor2.run (FREM); motor3.run (FREM); motor4.run (FREM); }
void turnLeft () {motor1.run (BACKWARD); motor2.run (TILBAKE); motor3.run (FREM); motor4.run (FREM); forsinkelse (500); motor1.run (FREM); motor2.run (FREM); motor3.run (FREM); motor4.run (FREM); }