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

מבטא רגש הצמח המלאכותי (A.P.E.X.): 7 שלבים (עם תמונות)
מבטא רגש הצמח המלאכותי (A.P.E.X.): 7 שלבים (עם תמונות)

וִידֵאוֹ: מבטא רגש הצמח המלאכותי (A.P.E.X.): 7 שלבים (עם תמונות)

וִידֵאוֹ: מבטא רגש הצמח המלאכותי (A.P.E.X.): 7 שלבים (עם תמונות)
וִידֵאוֹ: הגלה נא - Higale Na (ניגון חבד שקט) / אברמי פלדמן🎸 2024, נוֹבֶמבֶּר
Anonim
Image
Image

אבל רגע … יש עוד!

שלב 1: מבוא

מבוא
מבוא
מבוא
מבוא
מבוא
מבוא

מהו APEX?

APEX הוא מכשיר ניטור צמחים חכם (שלא לדבר על חמוד). פשוט חבר אותו לכל צמח והוא יציג את רמת ה"אושר "של הצמח! זוהי תזכורת מצוינת להשקות את הצמחים שלכם אם יש לכם הרגל רע לשכוח להשקות אותם.

איך זה עובד?

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

אבל למה?

למה לא?

שלב 2: איסוף החלקים והכלים

איסוף החלקים והכלים
איסוף החלקים והכלים
איסוף החלקים והכלים
איסוף החלקים והכלים
איסוף החלקים והכלים
איסוף החלקים והכלים

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

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

רשימת חלקים:

  • ארדואינו אונו
  • תצוגת LED 8x8
  • חיישן מגע קיבולי
  • חיישן לחות
  • מחבר סוללה 9V
  • סוללה 9V

רשימת כלים:

  • 22 חוט מד
  • קלטת חשמל
  • חשפניות חוטים
  • מלחם
  • משאבת הלחמה

לאחר שאספת את כל הציוד הדרוש, הגיע הזמן להתקין את תוכנת Arduino!

שלב 3: התקנת ה- Arduino IDE

התקנת ה- Arduino IDE
התקנת ה- Arduino IDE
התקנת ה- Arduino IDE
התקנת ה- Arduino IDE
התקנת ה- Arduino IDE
התקנת ה- Arduino IDE

כדי שהפרויקט הזה יעבוד, נצטרך להיות מסוגל לתכנת את הארדואינו. זה דורש הורדה והתקנה של סביבת הפיתוח המשולב של Arduino (IDE) למחשב שלך. זה הסבר פשוט למדי, אבל אני אלווה אותך בתהליך:

1. בקר באתר Arduino

2. נווט לדף הורדות (תוכנה> הורדות)

3. לחץ על קישור ההורדה של מערכת ההפעלה שלך

הערה צדדית: התוכנית תפעל ב- Windows, Mac ו- Linux.

4. התקנה ב- Windows

  • לחץ פעמיים על הקובץ שהורדת כדי להריץ אותו
  • לחץ על "מסכים" כדי להסכים לרישיון
  • בצע את שאר ההנחיות
  • כעת יש להתקין את התוכנית!

(הקפד להסתכל על צילומי המסך אם אתה הולך לאיבוד)

5. התקנה ב- Mac

  • לחץ על הקובץ שהורדת
  • בחר "פתח"
  • התוכנית תתקין ותפעל אוטומטית!

(הקפד לבדוק את צילומי המסך אם אתה מתבלבל)

6. זהו זה

וסיימת! כעת הורדת את IDE Arduino למערכת שלך!

שלב 4: הקוד

הקוד
הקוד
הקוד
הקוד
הקוד
הקוד

שלב זה עוסק בקוד. זו תוכנית די קצרה, אז אני אעבור עליה איתך ואסביר כיצד היא פועלת. ראשית, סקירה קצרה, אחר כך הסבר מעמיק, ולבסוף איך לדחוף אותו לארדואינו!

סקירה קצרה

לאלו מכם שלא מעוניינים בהסבר המפורט של הקוד, אני מספק קטע TL; DR! להלן ההסבר הבסיסי. ה- Arduino תופס ערכים מחיישן הלחות כל כמה שניות. מידע זה משמש לאחר מכן לחישוב ולהצגת פנים מסוימות! יש גם קצת קוד בסוף, בואו ניתן ללחוץ על כפתור המגע הקיבולי ולהדליק את התצוגה. די פשוט נכון?

הפרטים הקטנים והחשובים

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

תוכנית זו מחולקת לחמישה חלקים:

  1. כולל ספריות ויצירת משתנים
  2. פונקציית ההתקנה
  3. פונקציות להבעות פנים
  4. הפונקציה Write Arduino On Matrix
  5. פונקציית הלולאה

כולל ספריות ויצירת משתנים:

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

#כלול "LedControlMS.h"

#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; בול התחיל = שקר; בול על = נכון; בוליאני לחוץ = נמוך;

השורה הראשונה כוללת ספרייה בשם LedControlMS. הספרייה הזו נדרשת כדי לשלוח ערכים לתצוגת LED. השורה הבאה היא משפט הגדרה שמגדיר את הסיכה לחיישן המגע ל- 7. לאחר מכן יש לנו עוד שלושה משתנים המגדירים את הפינים לתצוגת LED, חיישן הלחות, והערך שלה. שלוש השורות האחרונות כולן בוליאניות המסדירות את מצב כפתור המגע והתצוגה. לאחר מכן, יש לנו את ערכי הבייט שלנו:

חיוך בתים [4] = {B00000100, B00110010, B01100100, B01100000}; הפתעת בתים [4] = {B00001110, B00001010, B01101110, B10010000}; בייט מה [4] = {B00000100, B00100100, B00100100, B00100000}; בת עצוב [4] = {B00000010, B01100100, B00110010, B00110000}; בייט מת [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; שגיאת בתים [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Evil Faces byte esmile [4] = {B00000010, B00101010, B01000100, B01000000}; בייט elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; בייט eplain [4] = {B00000010, B00101010, B00100100, B00100000}; בייט עין [4] = {B00000001, B01101001, B01100010, B01100000}; byte etalk [4] = {B00000001, B00101001, B01100010, B01100000};

ערכים אלה מייצגים את כל הפנים של APEX. כל בת הוא מערך המכיל מספר סיביות המכתיבות את המצב של כל פיקסל בשורה נתונה. "1" ו- "0" מייצגים הפעלה/כיבוי בהתאמה.

פונקציית ההתקנה:

במעבר לפרק הבא, יש לנו את פונקציית ההתקנה שלנו.

הגדרת void () {// MS Serial Output Serial.begin (9600);

pinMode (TouchSensor, INPUT);

// כיבוי LED מטריקס lc (0, שקר); lc.setIntensity (0, 4); lc.clearDisplay (0); }

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

פונקציות להבעות פנים:

זה כנראה הקטע הארוך ביותר, אבל הכל פשוט וחוזר על עצמו.

חלל שבור () {lc.setRow (0, 0, שגיאה [0]); lc.setRow (0, 1, שגיאה [1]); lc.setRow (0, 2, שגיאה [2]); lc.setRow (0, 3, שגיאה [3]); lc.setRow (0, 4, שגיאה [4]); lc.setRow (0, 5, שגיאה [5]); lc.setRow (0, 6, שגיאה [6]); lc.setRow (0, 7, שגיאה [7]); }

בטל שמח () {

lc.setRow (0, 0, חיוך [0]); lc.setRow (0, 1, חיוך [1]); lc.setRow (0, 2, חיוך [2]); lc.setRow (0, 3, חיוך [3]); lc.setRow (0, 4, חיוך [3]); lc.setRow (0, 5, חיוך [2]); lc.setRow (0, 6, חיוך [1]); lc.setRow (0, 7, חיוך [0]); }

void plain () {

lc.setRow (0, 0, מה [0]); lc.setRow (0, 1, מה [1]); lc.setRow (0, 2, מה [2]); lc.setRow (0, 3, מה [3]); lc.setRow (0, 4, מה [3]); lc.setRow (0, 5, מה [2]); lc.setRow (0, 6, מה [1]); lc.setRow (0, 7, מה [0]); }

ריק מופתע () {

lc.setRow (0, 0, הפתעה [0]); lc.setRow (0, 1, הפתעה [1]); lc.setRow (0, 2, הפתעה [2]); lc.setRow (0, 3, הפתעה [3]); lc.setRow (0, 4, הפתעה [3]); lc.setRow (0, 5, הפתעה [2]); lc.setRow (0, 6, הפתעה [1]); lc.setRow (0, 7, הפתעה [0]); }

גוסס חלל () {

lc.setRow (0, 0, מת [0]); lc.setRow (0, 1, מת [1]); lc.setRow (0, 2, מת [2]); lc.setRow (0, 3, מת [3]); lc.setRow (0, 4, מת [4]); lc.setRow (0, 5, מת [5]); lc.setRow (0, 6, מת [1]); lc.setRow (0, 7, מת [0]); }

בכי ריק () {

lc.setRow (0, 0, עצוב [0]); lc.setRow (0, 1, עצוב [1]); lc.setRow (0, 2, עצוב [2]); lc.setRow (0, 3, עצוב [3]); lc.setRow (0, 4, עצוב [3]); lc.setRow (0, 5, עצוב [2]); lc.setRow (0, 6, עצוב [1]); lc.setRow (0, 7, עצוב [0]); }

voil evil smile () {

lc.setRow (0, 0, esmile [0]); lc.setRow (0, 1, esmile [1]); lc.setRow (0, 2, esmile [2]); lc.setRow (0, 3, esmile [3]); lc.setRow (0, 4, esmile [3]); lc.setRow (0, 5, esmile [2]); lc.setRow (0, 6, esmile [1]); lc.setRow (0, 7, esmile [0]); }

חלל evillaugh () {

lc.setRow (0, 0, elaugh [0]); lc.setRow (0, 1, elaugh [1]); lc.setRow (0, 2, elaugh [2]); lc.setRow (0, 3, elaugh [3]); lc.setRow (0, 4, elaugh [3]); lc.setRow (0, 5, elaugh [2]); lc.setRow (0, 6, elaugh [1]); lc.setRow (0, 7, elaugh [0]); }

void evilplain () {

lc.setRow (0, 0, eplain [0]); lc.setRow (0, 1, eplain [1]); lc.setRow (0, 2, eplain [2]); lc.setRow (0, 3, eplain [3]); lc.setRow (0, 4, eplain [3]); lc.setRow (0, 5, eplain [2]); lc.setRow (0, 6, eplain [1]); lc.setRow (0, 7, eplain [0]); }

void evilyell () {

lc.setRow (0, 0, eyell [0]); lc.setRow (0, 1, eyell [1]); lc.setRow (0, 2, eyell [2]); lc.setRow (0, 3, eyell [3]); lc.setRow (0, 4, eyell [3]); lc.setRow (0, 5, eyell [2]); lc.setRow (0, 6, eyell [1]); lc.setRow (0, 7, eyell [0]); }

void eviltalk () {

lc.setRow (0, 0, etalk [0]); lc.setRow (0, 1, etalk [1]); lc.setRow (0, 2, etalk [2]); lc.setRow (0, 3, etalk [3]); lc.setRow (0, 4, etalk [3]); lc.setRow (0, 5, etalk [2]); lc.setRow (0, 6, etalk [1]); lc.setRow (0, 7, etalk [0]); }

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

הפונקציה WriteArduinoOnMatrix:

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

void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {מופתע (); } אחר {שבור (); }}

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

פונקציית הלולאה:

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

לולאת void () {if (started == true) {delaytime = 3000; } // לחצן קריאה לחוץ = digitalRead (TouchSensor);

אם (לחוץ) {

אם (on == true) {lc.clearDisplay (0); on = false; עיכוב (זמן עיכוב); } אחר {on = true; עיכוב (זמן עיכוב); }} sensorValue = analogRead (sensorPin); עיכוב (זמן עיכוב); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }

התחיל = נכון;

}

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

לדחוף את הקוד לארדואינו

כעת, לאחר שכיסינו את כל הקוד, הגיע הזמן לדחוף אותו לארדואינו! למרבה המזל, IDE עושה את זה פשוט מאוד. כל שעליך לעשות הוא לחבר את הארדואינו למחשב באמצעות כבל USB ולאחר מכן לחץ על החץ הימני בפינה השמאלית העליונה של ה- IDE. תן לקוד לדחוף, ותראה הודעת הצלחה בתחתית התוכנית אם עשית את זה נכון!

שלב 5: תרשים מעגלים

תרשים מעגלים
תרשים מעגלים

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

תצוגת LED:

  • VCC -> 5V
  • GRD -> GRD
  • DIN -> סיכה 12
  • CS -> סיכה 10
  • CLK -> סיכה 11

חיישן הלחות:

  • חיובי -> 5V
  • שלילי -> GRD
  • אות -> A5

חיישן המגע הקיבולי:

  • VCC -> 5V
  • GRD -> GRD
  • SIG -> 7

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

שלב 6: לשים את הכל ביחד

לשים את הכל ביחד
לשים את הכל ביחד
לשים את הכל ביחד
לשים את הכל ביחד
לשים את הכל ביחד
לשים את הכל ביחד

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

מזל טוב! אם הכל הלך בהצלחה, כעת אמורה להיות לך יחידת APEX מתפקדת במלואה!

כדי לבדוק את היחידה שלך, מצא מפעל מושקה וחבר אותו לחשמל! אתה צריך לגלות שזה שמח או מופתע וזה אומר שזה אמור לעבוד !!! עבודה מצוינת להשלמת הפרויקט!

שלב 7: סיכום

סיכום
סיכום

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

(מדריך זה נוצר בהשראת פרויקט ישן יותר, אמוג'י הצמח!)

נ.ב. הוראה זו רשומה בתחרות מיקרו -בקרים, אז אל תשכח להצביע לנו! אנו מעריכים זאת מאוד:)

P. P. S. בואו לקבל את APEX במגזין Make! הצביעו כאן! תודה:)

מוּמלָץ: