Kazalo:

Robotski avtomobil, ki se izogiba oviram: 9 korakov
Robotski avtomobil, ki se izogiba oviram: 9 korakov

Video: Robotski avtomobil, ki se izogiba oviram: 9 korakov

Video: Robotski avtomobil, ki se izogiba oviram: 9 korakov
Video: Объяснение истории судьи Дредда Лора и ранних лет — ру... 2024, Julij
Anonim
Robotski avtomobil, ki se izogiba oviram
Robotski avtomobil, ki se izogiba oviram
Robotski avtomobil, ki se izogiba oviram
Robotski avtomobil, ki se izogiba oviram

Kako zgraditi robota, ki se izogiba oviram

Korak: Črna škatla

Črna škatla
Črna škatla

prvi korak sem uporabil črno škatlo kot osnovo za svojega robota.

2. korak: Arduino

Arduino
Arduino

Arduino so možgani celotnega sistema in orkestrirajo naše motorje

Korak: Priključitev Arduina na Blackbox

Priključitev Arduina na Blackbox
Priključitev Arduina na Blackbox

Arduino sem pritrdil na črno škatlo z vročim lepilom

4. korak: Ultrazvočni senzor

Ultrazvočni senzor
Ultrazvočni senzor

Za izdelavo robota, ki se lahko sam premika, potrebujemo nekakšen vhod, senzor, ki ustreza našemu cilju. Ultrazvočni senzor je instrument, ki z ultrazvočnimi zvočnimi valovi meri razdaljo do predmeta. Ultrazvočni senzor uporablja pretvornik za pošiljanje in sprejemanje ultrazvočnih impulzov, ki prenašajo nazaj informacije o bližini predmeta

5. korak: Povezava senzorja na ploščici z Arduinom

Povezava senzorja na ploščici z Arduinom
Povezava senzorja na ploščici z Arduinom
Povezava senzorja na ploščici z Arduinom
Povezava senzorja na ploščici z Arduinom

Uporabil sem žice za povezovanje povezave med ploščo in arduinom.

Bodite pozorni, da ima lahko vaš ping senzor drugačno razporeditev zatičev, vendar mora imeti napetostni, ozemljitveni, sprožilni in odmevni zatič.

6. korak: Ščit motorja

Motorni ščit
Motorni ščit

Arduino plošče ne morejo same krmiliti enosmernih motorjev, ker so tokovi, ki jih ustvarjajo, prenizki. Za rešitev tega problema uporabljamo ščitnike motorjev. Ščit motorja ima 2 kanala, kar omogoča krmiljenje dveh enosmernih motorjev ali 1 koračni motor. … Z naslavljanjem teh zatičev lahko izberete kanal motorja za zagon, določite smer motorja (polarnost), nastavite hitrost motorja (PWM), ustavite in zaženete motor ter spremljate absorpcijo toka vsakega kanala

Korak 7: Povežite ščit motorja z Arduinom

Priključitev motornega ščita na Arduino
Priključitev motornega ščita na Arduino

Enostavno pritrdite ščit motorja na arduino z žicami senzorja

8. korak: Priključite 4 motorje in baterije na ščit

Priključitev 4 motorjev in baterij na ščit
Priključitev 4 motorjev in baterij na ščit

Vsak motorni ščit ima (vsaj) dva kanala, enega za motorje in enega za vir energije, povežite ju med seboj

9. korak: Programirajte robota

zaženite to kodo

#include #include

Sonar NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DCMotor motorja1 (1, MOTOR12_1KHZ); AF_DCMotor motorja2 (2, MOTOR12_1KHZ); AF_DCMotor motorja3 (3, MOTOR34_1KHZ); AF_DCMotor motorja4 (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 razdalja = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); zamuda (2000); distance = readPing (); zamuda (100); distance = readPing (); zamuda (100); distance = readPing (); zamuda (100); distance = readPing (); zamuda (100); }

void loop () {int distanceR = 0; int razdaljaL = 0; zamuda (40); if (razdalja <= 15) {moveStop (); zamuda (50); moveBackward (); zamuda (150); moveStop (); zamuda (100); distanceR = lookRight (); zamuda (100); distanceL = lookLeft (); zamuda (100);

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

int lookRight () {myservo.write (50); zamuda (250); int distance = readPing (); zamuda (50); myservo.write (100); povratna razdalja; }

int lookLeft () {myservo.write (120); zamuda (300); int distance = readPing (); zamuda (100); myservo.write (115); povratna razdalja; zamuda (100); }

int readPing () {zakasnitev (70); int cm = sonar.ping_cm (); če (cm == 0) {cm = 200; } vrnitev cm; }

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

if (! goesForward) {goesForward = true; motor1.run (NAPREJ); motor2.run (NAPREJ); motor3.run (NAPREJ); motor4.run (NAPREJ); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); zamuda (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); zamuda (5); } void turnLeft () {motor1.run (NAZAJ); motor2.run (NAZAD); motor3.run (NAPREJ); motor4.run (NAPREJ); zamuda (500); motor1.run (NAPREJ); motor2.run (NAPREJ); motor3.run (NAPREJ); motor4.run (NAPREJ); }

void turnLeft () {motor1.run (NAZAJ); motor2.run (NAZAD); motor3.run (NAPREJ); motor4.run (NAPREJ); zamuda (500); motor1.run (NAPREJ); motor2.run (NAPREJ); motor3.run (NAPREJ); motor4.run (NAPREJ); }

Priporočena: