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

רובוט שמספר אם ספק אלקטרוניקה בוגד בך או לא: 6 שלבים
רובוט שמספר אם ספק אלקטרוניקה בוגד בך או לא: 6 שלבים

וִידֵאוֹ: רובוט שמספר אם ספק אלקטרוניקה בוגד בך או לא: 6 שלבים

וִידֵאוֹ: רובוט שמספר אם ספק אלקטרוניקה בוגד בך או לא: 6 שלבים
וִידֵאוֹ: אנה זק - מי זאת || Anna Zak - Mi Zot 2024, יולי
Anonim
רובוט שמספר אם ספק אלקטרוניקה בוגד בך או לא
רובוט שמספר אם ספק אלקטרוניקה בוגד בך או לא

בשנה שעברה הלכנו אני ואבי לחנות רובוטיקה/אלקטרוניקה שנפתחה לאחרונה קרוב מאוד למקום מגורינו. כשנכנסתי לשם, הוא היה מלא באלקטרוניקה, סרבים, חיישנים, פיס פטל וארדואינו. למחרת, הלכנו לאותה חנות וקנינו סנורים רבים ו -3 ארדואינים בשווי של כ -150 דולר. ברגע שחזרתי הביתה, אף מוצר אחר לא עבד מלבד ה- Arduino Mega. הונאו אותנו בכ -130 דולר וזה הרבה.

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

בואו ניכנס ישר לזה!

אספקה

1. ארדואינו UNO

2. תצוגת מסך מגע TFT 2.4 אינץ '

3. כמה חוטי מגשר

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

שלב 1: איך זה עובד …

Image
Image

תיכננתי ארדואינו ליצירת ממשק משתמש אינטראקטיבי עם תצוגת TFT. כידוע, לתצוגת TFT יש רק סיכה אחת פנויה, כלומר סיכת A5. (אם אתה משתמש ב- UNO). אז כל חיישן שמשתמש בסיכות אנלוגיות לקריאת נתונים תואם את ההתקנה הזו …

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

בפתיחת האפליקציה תוכלו לראות 2 אפשרויות, INPUT ו- OUTPUT. אז אם תלחץ על קלט, הוא יראה 4 חיישנים (הוא תואם ל -12, אבל אני עדיין מתכנת אותו כשהבחנות מתקרבות …. אין זמן:(. כל אחד יכול לערוך את הקוד …)

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

תסתכל:

שלב 2: העלאת הקוד

הקוד הוא תוכנית של 600 שורות שקידדתי בקפידה תוך כ- 50 שעות. יש בו כמה באגים אז אנא תקן אותו ושלח לי אותו בדואר שלי ([email protected]).

העלה את הקוד וחבר את מגן TFT ל- Arduino. אני ממליץ לך לשחק עם ממשק המשתמש כך שתקבל את העניין טוב יותר.

הקוד:

#לִכלוֹל

#include #include #include #define LCD_CS A3 #define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4 #define BLACK 0x0000 #define BLUE 0x001F #define NAVY 0x000F #define RED 0xF800 #define RED 0xF800 #define MAGENTA 0xF81F #define YELLOW 0xFFE0 #define WHITE 0xFFFF #define LIGHTGREY 0xC618 #define PURPLE 0x780F #define OLIVE 0x7BE0 #define Selection #define YP A1 #define XM A2 #define XM A2 #define XM A2 #define XM A2 #defin 160 #define TS_MAXX 160 #define TS_MAXY 970 מסך מגע ts = מסך מגע (XP, YP, XM, YM, 300); Adafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); #define BOXSIZE 40 #define PENRADIUS 3 #define MINPRESSURE 10 #define MAXPRESSURE 1000 int sound; מצב צ'ארה = 6; int touch = 0; int color = BLACK; int redir = 0; int ota; הגדרת void () {Serial.begin (9600); tft.reset (); tft.setFont (& FreeMonoBoldOblique12pt7b); tft.begin (0x9325); tft.setRotation (45); tft.setTextSize (0.5); tft.fillScreen (לבן); tft.setCursor (60, 160); tft.setTextColor (שחור); tft.print ("החלק כדי להיכנס"); } לולאת חלל () {float sensorVoltage; חיישן צף ערך; TSPoint p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); אם (pz> MINPRESSURE && pz 240 && px 130 && py 240 && px 20 && py 240 && px 20 && py 160 && px 12 && py 240 && px 20 && py 240 && px 20 && py 40 && px 15 && py 150 && px 40 && py 150 && px 80 && py 150 && px 120 && py 150 && px 170 && py 90 && px 40 && py 90 && px 80 && py 90 && px 120 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 150 && px 170 && py 100 && px 20 && py 200 && px 100 && py 100 && px 20 && py 100 && px 20 && py 100 && px 20 && py <100) {touch = 26; }} if (touch == 1 && state == 6) {tft.setRotation (0); tft.fillScreen (צבע); צליל = 0; tft.fillRect (200, 180, 80, 140, לבן); tft.drawRect (201, 181, 81, 141, שחור); tft.fillRect (80, 30, 100, 100, CYAN); tft.drawRect (81, 31, 101, 101, שחור); tft.fillRect (10, 30, 50, 100, NAVY); tft.drawRect (11, 31, 51, 101, שחור); tft.fillRect (10, 180, 30, 120, PURPLE); tft.drawRect (11, 181, 31, 121, BLACK); tft.fillRect (45, 180, 30, 120, כחול); tft.drawRect (46, 181, 31, 121, שחור); tft.fillRect (80, 180, 30, 120, CYAN); tft.drawRect (81, 181, 31, 121, שחור); tft.fillRect (115, 180, 30, 120, ירוק); tft.drawRect (116, 181, 31, 121, שחור); tft.fillRect (150, 180, 30, 120, צהוב); tft.drawRect (151, 181, 31, 121, שחור); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, לבן); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, שחור); tft.drawCircle (210, 40, 14, לבן); //tft.fillTriange(a1, b1, a2, b2, c1, c2, RED); tft.setRotation (45); tft.setCursor (200, 20); tft.print ("הגדרות"); tft.fillRoundRect (45, 75, 75, 75, 4, WHITE); tft.drawRoundRect (45, 75, 75, 75, 4, שחור); tft.fillRect (75, 75, 15, 30, שחור); tft.fillRect (75, 120, 15, 30, שחור); tft.fillRect (90, 105, 30, 15, שחור); tft.fillRect (45, 105, 30, 15, שחור); מצב = 7; מגע = 0; ota = 0; } if (touch == 2) {tft.fillScreen (WHITE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, לבן); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, שחור); tft.drawCircle (210, 40, 14, שחור); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, BLACK); tft.drawLine (300, 30, 270, 30, שחור); tft.setCursor (20, 200); tft.print ("התאמה אישית"); tft.setCursor (20, 170); tft.print ("התנתק"); tft.setCursor (20, 140); tft.print ("ציוד היקפי"); tft.setCursor (20, 110); tft.print ("אודות"); מגע = 1; מצב = 2; } if (touch == 10 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (10, 160); tft.setTextColor (שחור); tft.print ("נוצר ופותח"); tft.setCursor (100, 190); tft.print ("מאת:"); tft.setCursor (60, 220); tft.print ("נער מהודו"); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, לבן); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, שחור); tft.drawCircle (210, 40, 14, שחור); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, BLACK); tft.drawLine (300, 30, 270, 30, שחור); מצב = 6; } if (touch == 11 && state == 2) {tft.fillScreen (WHITE); tft.setCursor (60, 40); tft.print ("בחר א"); tft.setCursor (40, 60); tft.print ("צבע רקע"); tft.fillRect (60, 180, 45, 45, אדום); tft.fillRect (120, 180, 45, 45, צהוב); tft.fillRect (180, 180, 45, 45, כחול); tft.fillRect (240, 180, 45, 45, ירוק); tft.fillRect (60, 130, 45, 45, MAGENTA); tft.fillRect (120, 130, 45, 45, NAVY); tft.fillRect (180, 130, 45, 45, LIGHTGREY); tft.fillRect (240, 130, 45, 45, CYAN); tft.fillRect (60, 80, 45, 45, לבן); tft.drawRect (60, 80, 45, 45, שחור); tft.fillRect (120, 80, 45, 45, שחור); tft.fillRect (180, 80, 45, 45, OLIVE); tft.fillRect (240, 80, 45, 45, PURPLE); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, לבן); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, שחור); tft.drawCircle (210, 40, 14, שחור); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, BLACK); tft.drawLine (300, 30, 270, 30, שחור); מצב = 6; אם (redir == 1) {color = WHITE; } אם (redir == 2) {color = BLACK; } אם (redir == 3) {color = OLIVE; } אם (redir == 4) {color = PURPLE; } אם (redir == 5) {color = MAGENTA; } אם (redir == 6) {color = NAVY; } אם (redir == 7) {color = LIGHTGREY; } אם (redir == 8) {color = CYAN; } אם (redir == 9) {color = RED; } אם (redir == 10) {color = צהוב; } אם (redir == 11) {color = כחול; } אם (redir == 12) {color = ירוק; }} אם (מגע == 26) {ota = 1; tft.fillScreen (לבן); tft.setRotation (0); tft.fillTriangle (210, 30, 210, 50, 220, 40, WHITE); tft.fillRect (200, 35, 12, 12, לבן); tft.drawTriangle (210, 30, 210, 50, 220, 40, BLACK); tft.drawRect (200, 35, 12, 12, שחור); tft.drawCircle (210, 40, 14, שחור); tft.setRotation (45); tft.fillTriangle (270, 40, 270, 20, 260, 30, BLACK); tft.drawLine (300, 30, 270, 30, שחור); tft.setRotation (1); tft.setCursor (30, 80); tft.print ("קלט"); tft.setCursor (30, 150); tft.print ("פלט"); tft.drawRect (25, 130, 90, 30, שחור); tft.drawRect (25, 60, 90, 30, שחור); if (p.x> 190 && p.x 30 && p.y <90) {tft.setCursor (150, 220); tft.print ("מפלס המים"); tft.setCursor (150, 170); tft.print ("מפלס גז"); tft.setCursor (150, 120); tft.print ("מרחק"); tft.setCursor (150, 70); tft.print ("צליל"); מגע = 1; מצב = 2; }}} while (sound == 1) {tft.fillScreen (WHITE); sensorValue = analogRead (A5); sensorVoltage = sensorValue; tft.setCursor (60, 160); tft.print (sensorVoltage); Serial.println ("רמת קול ="); Serial.println (sensorVoltage); עיכוב (1000); אם (צליל == 0) {הפסקה; }}}}

שלב 3: נדרשות ספריות:

  • Adafruit_GFX.h
  • Adafruit_TFTLCD.h
  • TouchScreen.h

קישורים של Github לאותו הדבר:

github.com/adafruit/Adafruit-GFX-Library

github.com/adafruit/TFTLCD-Library

github.com/adafruit/Adafruit_TouchScreen

שלב 4: החיבורים

סטרו הכל ביחד
סטרו הכל ביחד

אתה צריך 6 חוטי מגשר. 3 זכרים ו -3 נקבות. הלחם אותם ישירות ללוח Arduino כך:

שלב 5: סטרו הכל ביחד

הכנס את החוטים אל הארדואינו (עיין בתמונה), השתמש באקדח דבק במידת הצורך …

לאחר מכן חבר את מגן TFT ואז בדוק את החיישנים שלך.

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

שמח לעשות ולהיזהר מרמאים אלקטרוניקה?

שלב 6: שיפורים נוספים:

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

מוּמלָץ: