Sadržaj:

Robotski automobil koji izbjegava prepreke: 9 koraka
Robotski automobil koji izbjegava prepreke: 9 koraka

Video: Robotski automobil koji izbjegava prepreke: 9 koraka

Video: Robotski automobil koji izbjegava prepreke: 9 koraka
Video: Дэнис Хонг: О создании автомобиля для слепых 2024, Srpanj
Anonim
Robotski automobil koji izbjegava prepreke
Robotski automobil koji izbjegava prepreke
Robotski automobil koji izbjegava prepreke
Robotski automobil koji izbjegava prepreke

Kako izgraditi robota koji izbjegava prepreke

Korak 1: Crna kutija

Crna kutija
Crna kutija

prvi korak sam koristio crnu kutiju kao bazu za svog robota.

Korak 2: Arduino

Arduino
Arduino

Arduino je mozak cijelog sustava i orkestrira naše motore

Korak 3: Priključivanje Arduina na Blackbox

Priključivanje Arduina na Blackbox
Priključivanje Arduina na Blackbox

Spojio sam arduino na crnu kutiju vrućim ljepilom

Korak 4: Ultrazvučni senzor

Ultrazvučni senzor
Ultrazvučni senzor

Da bismo napravili robota koji se može sam kretati, potrebna nam je neka vrsta ulaza, senzora koji odgovara našem cilju. Ultrazvučni senzor je instrument koji mjeri udaljenost do objekta pomoću ultrazvučnih zvučnih valova. Ultrazvučni senzor koristi pretvarač za slanje i primanje ultrazvučnih impulsa koji prenose povratne informacije o blizini objekta

Korak 5: Spajanje senzora na matičnu ploču s Arduinom

Povezivanje senzora na matičnu ploču s Arduinom
Povezivanje senzora na matičnu ploču s Arduinom
Povezivanje senzora na matičnu ploču s Arduinom
Povezivanje senzora na matičnu ploču s Arduinom

Koristio sam žice za povezivanje veze između matične ploče i arduina.

Obratite pažnju da vaš ping senzor može imati drugačiji raspored pinova, ali bi trebao imati naponski pin, pin za uzemljenje, okidač i echo pin.

Korak 6: Štit motora

Motorni štit
Motorni štit

Arduino ploče ne mogu same upravljati istosmjernim motorima, jer su struje koje generiraju preniske. Za rješavanje ovog problema koristimo štitnike motora. Štitnik motora ima 2 kanala, što omogućuje upravljanje s dva istosmjerna motora, ili 1 koračni motor. … Adresiranjem ovih pinova možete odabrati kanal motora za pokretanje, odrediti smjer motora (polaritet), postaviti brzinu motora (PWM), zaustaviti i pokrenuti motor i pratiti trenutnu apsorpciju svakog kanala

Korak 7: Povezivanje štita motora s Arduinom

Povezivanje štita motora s Arduinom
Povezivanje štita motora s Arduinom

Jednostavno pričvrstite štitnik motora na arduino sa zgužvanim žicama senzora

Korak 8: Spajanje 4 motora i baterija na štit

Spajanje 4 motora i baterija na Shield
Spajanje 4 motora i baterija na Shield

Svaki štit motora ima (najmanje) dva kanala, jedan za motore, a jedan za izvor napajanja, povežite ih međusobno

Korak 9: Programirajte robota

pokrenite ovaj kod

#include #include

Sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motora1 (1, MOTOR12_1KHZ); AF_DCMotor motora2 (2, MOTOR12_1KHZ); AF_DCMotor motora3 (3, MOTOR34_1KHZ); AF_DCMotor motora4 (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 goesForward = false; int udaljenost = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); odgoda (2000); udaljenost = readPing (); kašnjenje (100); udaljenost = readPing (); kašnjenje (100); udaljenost = readPing (); kašnjenje (100); udaljenost = readPing (); kašnjenje (100); }

void loop () {int distanceR = 0; int udaljenostL = 0; kašnjenje (40); if (udaljenost <= 15) {moveStop (); kašnjenje (50); moveBackward (); kašnjenje (150); moveStop (); kašnjenje (100); distanceR = lookRight (); kašnjenje (100); udaljenostL = lookLeft (); kašnjenje (100);

if (distanceR> = distanceL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } udaljenost = readPing (); }

int lookRight () {myservo.write (50); kašnjenje (250); int udaljenost = readPing (); kašnjenje (50); myservo.write (100); povratna udaljenost; }

int lookLeft () {myservo.write (120); kašnjenje (300); int udaljenost = readPing (); kašnjenje (100); myservo.write (115); povratna udaljenost; kašnjenje (100); }

int readPing () {odgoda (70); int cm = sonar.ping_cm (); ako (cm == 0) {cm = 200; } return cm; }

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

if (! goesForward) {goesForward = true; motor1.run (NAPRIJED); motor2.run (NAPRIJED); motor3.run (NAPRIJED); motor4.run (NAPRIJED); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); kašnjenje (5); }}}

void moveBackward () {goesForward = false; motor1.run (NAZAD); motor2.run (NAZAD); motor3.run (NAZAD); motor4.run (NAZAD); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); kašnjenje (5); } void turnLeft () {motor1.run (NAZAD); motor2.run (NAZAD); motor3.run (NAPRIJED); motor4.run (NAPRIJED); kašnjenje (500); motor1.run (NAPRIJED); motor2.run (NAPRIJED); motor3.run (NAPRIJED); motor4.run (NAPRIJED); }

void turnLeft () {motor1.run (NAZAD); motor2.run (NAZAD); motor3.run (NAPRIJED); motor4.run (NAPRIJED); kašnjenje (500); motor1.run (NAPRIJED); motor2.run (NAPRIJED); motor3.run (NAPRIJED); motor4.run (NAPRIJED); }

Preporučeni: