Tartalomjegyzék:

Akadálykerülő robotkocsi: 9 lépés
Akadálykerülő robotkocsi: 9 lépés

Videó: Akadálykerülő robotkocsi: 9 lépés

Videó: Akadálykerülő robotkocsi: 9 lépés
Videó: Lego Mindstorms EV3 programozás 8. rész Vezérlési szerkezetek 2024, November
Anonim
Akadálykerülő robotkocsi
Akadálykerülő robotkocsi
Akadálykerülő robotkocsi
Akadálykerülő robotkocsi

Hogyan építsünk akadályt a robot elkerülése érdekében

Lépés: Fekete doboz

Fekete doboz
Fekete doboz

az első lépésben fekete dobozt használtam robotom alapjául.

2. lépés: Arduino

Arduino
Arduino

Az Arduino az egész rendszer agya, és irányítja motorjainkat

Lépés: Az Arduino csatlakoztatása a Blackboxhoz

Az Arduino csatlakoztatása a Blackboxhoz
Az Arduino csatlakoztatása a Blackboxhoz

Az arduino -t forró ragasztóval rögzítettem a blackboxhoz

Lépés: Ultrahangos érzékelő

Ultrahangos érzékelő
Ultrahangos érzékelő

Ahhoz, hogy egy robotot önállóan tudjunk mozgatni, szükségünk van valamilyen bemenetre, egy érzékelőre, amely megfelel a célunknak. Az ultrahangos érzékelő olyan eszköz, amely ultrahangos hanghullámok segítségével méri a tárgytól való távolságot. Az ultrahangos érzékelő egy jelátalakítót használ ultrahangos impulzusok küldésére és fogadására, amelyek visszaadják az objektum közelségére vonatkozó információkat

Lépés: Az érzékelő csatlakoztatása az Arduino -hoz

Kenyértábla Az érzékelő csatlakoztatása az Arduino -hoz
Kenyértábla Az érzékelő csatlakoztatása az Arduino -hoz
Kenyértábla Az érzékelő csatlakoztatása az Arduino -hoz
Kenyértábla Az érzékelő csatlakoztatása az Arduino -hoz

Vezetékeket használtam a kenyértábla és az arduino közötti kapcsolat kialakítására.

Ügyeljen arra, hogy a ping -érzékelő eltérő tűs elrendezésű lehet, de feszültség-, földelő-, indító- és visszhangcsapnak kell lennie.

6. lépés: Motorpajzs

Motorpajzs
Motorpajzs

Az Arduino táblák nem tudják önállóan szabályozni az egyenáramú motorokat, mert az általuk generált áramok túl alacsonyak. A probléma megoldásához motorpajzsokat használunk. A motorpajzs 2 csatornával rendelkezik, amely lehetővé teszi két egyenáramú motor vagy 1 vezérlését léptetőmotor. … Ezeknek a tűknek a címzésével kiválaszthatja az indítandó motorcsatornát, megadhatja a motor irányát (polaritását), beállíthatja a motor fordulatszámát (PWM), leállíthatja és beindíthatja a motort, és ellenőrizheti az egyes csatornák áramfelvételét.

7. lépés: A motorpajzs csatlakoztatása az Arduino -hoz

A motorpajzs csatlakoztatása az Arduino -hoz
A motorpajzs csatlakoztatása az Arduino -hoz

Egyszerűen csatlakoztassa a motorpajzsot az arduino -hoz úgy, hogy az érzékelő vezetékei be vannak roppanva

8. lépés: A 4 motor és akkumulátor csatlakoztatása a pajzshoz

A 4 motor és akkumulátor csatlakoztatása a pajzshoz
A 4 motor és akkumulátor csatlakoztatása a pajzshoz

Minden motorpajzsnak (legalább) két csatornája van, az egyik a motorokhoz, a másik az áramforráshoz. Csatlakoztassa őket egymáshoz képest

9. lépés: Programozza be a robotot

futtassa ezt a kódot

#befoglalni #befoglalni

NewPing szonár (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); Szervo myservo;

#define TRIG_PIN A2 #define ECHO_PIN A3 #define MAX_DISTANCE 150 #define MAX_SPEED 100 #define MAX_SPEED_OFFSET 10

logikai megyForward = false; int távolság = 80; int speedSet = 0;

void setup () {

myservo.attach (10); myservo.write (115); késleltetés (2000); távolság = readPing (); késleltetés (100); távolság = readPing (); késleltetés (100); távolság = readPing (); késleltetés (100); távolság = readPing (); késleltetés (100); }

void loop () {int távolságR = 0; int távolságL = 0; késleltetés (40); if (távolság <= 15) {moveStop (); késleltetés (50); hátrafelé mozogni(); késleltetés (150); moveStop (); késleltetés (100); távolságR = lookRight (); késleltetés (100); távolságL = lookLeft (); késleltetés (100);

if (távolságR> = távolságL) {turnRight (); moveStop (); } else {turnLeft (); moveStop (); }} else {moveForward (); } távolság = readPing (); }

int lookRight () {myservo.write (50); késleltetés (250); int távolság = readPing (); késleltetés (50); myservo.write (100); visszatérési távolság; }

int lookLeft () {myservo.write (120); késleltetés (300); int távolság = readPing (); késleltetés (100); myservo.write (115); visszatérési távolság; késleltetés (100); }

int readPing () {delay (70); int cm = szonár.ping_cm (); ha (cm == 0) {cm = 200; } visszatérés cm; }

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

if (! goForward) {goForward = true; motor1.run (ELŐRE); motor2.run (ELŐRE); motor3.run (ELŐRE); motor4.run (ELŐRE); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); késleltetés (5); }}}

void moveBackward () {goForward = false; motor1.run (VISSZA); motor2.run (VISSZA); motor3.run (VISSZA); motor4.run (VISSZA); for (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); késleltetés (5); } void turnLeft () {motor1.run (VISSZA); motor2.run (VISSZA); motor3.run (ELŐRE); motor4.run (ELŐRE); késleltetés (500); motor1.run (ELŐRE); motor2.run (ELŐRE); motor3.run (ELŐRE); motor4.run (ELŐRE); }

void turnLeft () {motor1.run (VISSZA); motor2.run (VISSZA); motor3.run (ELŐRE); motor4.run (ELŐRE); késleltetés (500); motor1.run (ELŐRE); motor2.run (ELŐRE); motor3.run (ELŐRE); motor4.run (ELŐRE); }

Ajánlott: