תוכן עניינים:

מכשול להימנעות ממכונית רובוטית: 9 שלבים
מכשול להימנעות ממכונית רובוטית: 9 שלבים

וִידֵאוֹ: מכשול להימנעות ממכונית רובוטית: 9 שלבים

וִידֵאוֹ: מכשול להימנעות ממכונית רובוטית: 9 שלבים
וִידֵאוֹ: 1 4 Lecture Video 1 4 Cruise Controllers 2024, נוֹבֶמבֶּר
Anonim
מכשול להימנע ממכונית רובוטית
מכשול להימנע ממכונית רובוטית
מכשול להימנע ממכונית רובוטית
מכשול להימנע ממכונית רובוטית

כיצד לבנות מכשול להימנעות מרובוט

שלב 1: קופסה שחורה

קופסה שחורה
קופסה שחורה

בשלב הראשון השתמשתי בקופסה שחורה כבסיס לרובוט שלי.

שלב 2: ארדואינו

ארדואינו
ארדואינו

הארדואינו הוא המוח של המערכת כולה ומתזמר את המנועים שלנו

שלב 3: חיבור הארדואינו ל- Blackbox

חיבור הארדואינו ל- Blackbox
חיבור הארדואינו ל- Blackbox

חיברתי את הארדואינו לבלוקבוקס באמצעות דבק חם

שלב 4: חיישן קולי

חיישן קולי
חיישן קולי

על מנת ליצור רובוט שיכול לנוע בכוחות עצמו אנו זקוקים לקלט כלשהו, חיישן המתאים למטרה שלנו. חיישן קולי הוא מכשיר המודד את המרחק לאובייקט באמצעות גלי קול קולי. חיישן קולי משתמש במתמר כדי לשלוח ולקבל פולסים אולטראסוניים המעבירים מידע על קרבת אובייקט.

שלב 5: חיבור לוח הלחם לארדואינו

חיבור לוח לחם לארדואינו
חיבור לוח לחם לארדואינו
חיבור לוח לחם לארדואינו
חיבור לוח לחם לארדואינו

השתמשתי בחוטים כדי לחבר את הקשר בין לוח הלחם לארדואינו.

שים לב שחיישן הפינג שלך עשוי להיות בעל פריסת סיכה אחרת, אך הוא אמור להיות בעל סיכת מתח, סיכת הארקה, סיכת טריג ופין הד.

שלב 6: מגן מוטורי

מגן מנוע
מגן מנוע

לוחות Arduino אינם יכולים לשלוט במנועי DC בעצמם, מכיוון שהזרמים שהם יוצרים נמוכים מדי. כדי לפתור בעיה זו אנו משתמשים במגיני מנוע. מגן המנוע כולל 2 ערוצים, המאפשר שליטה של שני מנועי DC, או 1 מנוע צעדים. … על ידי התייחסות לסיכות אלה אתה יכול לבחור ערוץ מנוע ליזום, לציין את כיוון המנוע (קוטביות), להגדיר את מהירות המנוע (PWM), לעצור ולהפעיל את המנוע ולפקח על הספיגה הנוכחית של כל ערוץ

שלב 7: חיבור מגן מנוע ל- Arduino

חיבור מגן מנוע ל- Arduino
חיבור מגן מנוע ל- Arduino

כל שעליך לעשות הוא לחבר את מגן המנוע לארדואינו כאשר חוטי החיישן מכווצים פנימה

שלב 8: חיבור 4 המנועים והסוללות למגן

חיבור 4 המנועים והסוללות למגן
חיבור 4 המנועים והסוללות למגן

לכל מגן מנוע יש (לפחות) שני ערוצים, אחד למנועים ואחד למקור כוח, חבר אותם זה לזה

שלב 9: תכנת הרובוט

הפעל את הקוד הזה

#כלול #כלול

סונאר NewPing (TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

AF_DC מנוע מנוע 1 (1, MOTOR12_1KHZ); AF_DC מנוע מנוע 2 (2, MOTOR12_1KHZ); AF_DC מנוע מנוע 3 (3, MOTOR34_1KHZ); AF_DC מנוע מנוע 4 (4, MOTOR34_1KHZ); סרוו מיסרבו;

#הגדר TRIG_PIN A2 #הגדר ECHO_PIN A3 #הגדר MAX_DISTANCE 150 #הגדר MAX_SPEED 100 #הגדר MAX_SPEED_OFFSET 10

בוליאני goesForward = false; מרחק int = 80; int speedSet = 0;

הגדרת בטל () {

myservo.attach (10); myservo.write (115); עיכוב (2000); distance = readPing (); עיכוב (100); distance = readPing (); עיכוב (100); distance = readPing (); עיכוב (100); distance = readPing (); עיכוב (100); }

לולאת חלל () {int distanceR = 0; int distanceL = 0; עיכוב (40); if (מרחק <= 15) {moveStop (); עיכוב (50); moveBackward (); עיכוב (150); moveStop (); עיכוב (100); distanceR = lookRight (); עיכוב (100); distanceL = lookLeft (); עיכוב (100);

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

int lookRight () {myservo.write (50); עיכוב (250); int distance = readPing (); עיכוב (50); myservo.write (100); מרחק החזרה; }

int lookLeft () {myservo.write (120); עיכוב (300); int distance = readPing (); עיכוב (100); myservo.write (115); מרחק החזרה; עיכוב (100); }

int readPing () {delay (70); int cm = sonar.ping_cm (); אם (cm == 0) {cm = 200; } ס מ להחזיר; }

void moveStop () {motor1.run (RELEASE); motor2.run (שחרור); motor3.run (שחרור); motor4.run (שחרור); } void moveForward () {

אם (! goesForward) {goesForward = true; motor1.run (קדימה); motor2.run (קדימה); motor3.run (קדימה); motor4.run (קדימה); עבור (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); עיכוב (5); }}}

void moveBackward () {goesForward = false; motor1.run (אחורה); motor2.run (אחורה); מנוע 3. ריצה (אחורה); motor4.run (אחורה); עבור (speedSet = 0; speedSet <MAX_SPEED; speedSet += 2) {motor1.setSpeed (speedSet); motor2.setSpeed (speedSet); motor3.setSpeed (speedSet); motor4.setSpeed (speedSet); עיכוב (5); } חלל turnLeft () {motor1.run (BACKWARD); motor2.run (אחורה); motor3.run (קדימה); motor4.run (קדימה); עיכוב (500); motor1.run (קדימה); motor2.run (קדימה); motor3.run (קדימה); motor4.run (קדימה); }

void turnLeft () {motor1.run (BACKWARD); motor2.run (אחורה); motor3.run (קדימה); motor4.run (קדימה); עיכוב (500); motor1.run (קדימה); motor2.run (קדימה); motor3.run (קדימה); motor4.run (קדימה); }

מוּמלָץ: