Indholdsfortegnelse:

Hindring for at undgå robotbil: 9 trin
Hindring for at undgå robotbil: 9 trin

Video: Hindring for at undgå robotbil: 9 trin

Video: Hindring for at undgå robotbil: 9 trin
Video: Кто-нибудь из вас слышал о полуночной игре? Страшные истории. Мистика. Ужасы 2024, November
Anonim
Hindring for at undgå robotbil
Hindring for at undgå robotbil
Hindring for at undgå robotbil
Hindring for at undgå robotbil

Sådan bygger du en forhindring for at undgå robot

Trin 1: Black Box

Sort æske
Sort æske

det første trin brugte jeg en sort boks som base for min robot.

Trin 2: Arduino

Arduino
Arduino

Arduino er hjernen i hele systemet og orkestrerer vores motorer

Trin 3: Vedhæftning af Arduino til Blackbox

Vedhæftning af Arduino til Blackbox
Vedhæftning af Arduino til Blackbox

Jeg fastgjorde arduinoen til blackboxen ved hjælp af varm lim

Trin 4: Ultralydssensor

Ultralydssensor
Ultralydssensor

For at lave en robot, der kan bevæge sig selv, har vi brug for en slags input, en sensor, der passer til vores mål. En ultralydssensor er et instrument, der måler afstanden til et objekt ved hjælp af ultralyds lydbølger. En ultralydssensor bruger en transducer til at sende og modtage ultralydspulser, der videresender oplysninger om et objekts nærhed

Trin 5: Brødbrætstilslutning af sensor til Arduino

Brødbræt Tilslutning af sensor til Arduino
Brødbræt Tilslutning af sensor til Arduino
Breadboard Tilslutning af sensor til Arduino
Breadboard Tilslutning af sensor til Arduino

Jeg brugte ledninger til at male forbindelsen mellem brødbrættet og arduino.

Vær opmærksom på, at din ping -sensor kan have et andet pin -layout, men den skal have en spændingsstift, jordstift, trig -pin og en ekko -pin.

Trin 6: Motorskærm

Motorskærm
Motorskærm

Arduino -tavler kan ikke selv styre jævnstrømsmotorer, fordi de strømme, de genererer, er for lave. For at løse dette problem bruger vi motorskærme. Motorskærmen har 2 kanaler, som gør det muligt at styre to DC -motorer eller 1 trinmotor. … Ved at adressere disse stifter kan du vælge en motorkanal, der skal startes, specificere motorretningen (polaritet), indstille motorhastighed (PWM), standse og starte motoren og overvåge den aktuelle absorption af hver kanal

Trin 7: Tilslutning af motorskærm til Arduino

Tilslutning af motorskærm til Arduino
Tilslutning af motorskærm til Arduino

Du skal blot fastgøre motorafskærmningen til arduinoen med sensortrådene krøllet ind

Trin 8: Tilslutning af de 4 motorer og batterier til Shield

Tilslutning af de 4 motorer og batterier til skjold
Tilslutning af de 4 motorer og batterier til skjold

Hvert motorskærm har (mindst) to kanaler, en til motorerne og en til en strømkilde, tilslut dem i forhold til hinanden

Trin 9: Programmer robotten

køre denne kode

#include #include

NewPing -ekkolod (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 afstand = 80; int speedSet = 0;

ugyldig opsætning () {

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 distanceL = 0; forsinkelse (40); hvis (afstand <= 15) {moveStop (); forsinkelse (50); moveBackward (); forsinkelse (150); moveStop (); forsinkelse (100); distanceR = lookRight (); forsinkelse (100); distanceL = lookLeft (); forsinkelse (100);

hvis (distanceR> = distanceL) {turnRight (); moveStop (); } ellers {turnLeft (); moveStop (); }} else {moveForward (); } distance = readPing (); }

int lookRight () {myservo.write (50); forsinkelse (250); int distance = readPing (); forsinkelse (50); myservo.write (100); returafstand; }

int lookLeft () {myservo.write (120); forsinkelse (300); int distance = readPing (); forsinkelse (100); myservo.write (115); returafstand; forsinkelse (100); }

int readPing () {forsinkelse (70); int cm = sonar.ping_cm (); hvis (cm == 0) {cm = 200; } cm tilbage; }

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 (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); forsinkelse (5); } void turnLeft () {motor1.run (BACKWARD); motor2.run (BACKWARD); 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 (BACKWARD); motor3.run (FREM); motor4.run (FREM); forsinkelse (500); motor1.run (FREM); motor2.run (FREM); motor3.run (FREM); motor4.run (FREM); }

Anbefalede: