זוהי ההדרכה השנייה של רצף הדרכה בה אנו לומדים את ה- MSP430G2 LaunchPad מטקסס אינסטרומנטס באמצעות Energia IDE. במדריך ה- Blinky LED האחרון הצגנו את עצמנו בפני מועצת הפיתוח LaunchPad ו- Energia IDE, העלינו גם את התוכנית הראשונה שלנו שהיא להבהב את נורית ה- LED ברווח קבוע.
במדריך זה נלמד כיצד להשתמש באפשרות קריאה דיגיטלית וכתיבה דיגיטלית כדי לקרוא את מצבו של התקן קלט כמו מתג, ולשלוט על מספר יציאות כמו נוריות LED. בסוף הדרכה זו היית לומד לעבוד עם כניסות ויציאות דיגיטליות, שניתן להשתמש בהם כדי לממשק חיישנים דיגיטליים רבים כמו חיישן IR, חיישן PIR וכו 'וגם להפעיל או לכבות יציאות כמו LED, זמזם וכו' נשמע מעניין ימין!!? בוא נתחיל.
חומר נדרש:
- MSP430G2 LaunchPad
- נורית LED בכל צבע - 8
- מתג - 2
- נגד 1k - 8
- חוטי חיבור
תרשים מעגל:
במדריך הקודם שלנו, שמנו לב כי משטח השיגור עצמו מגיע עם שני נוריות LED ומתג על הלוח. אבל במדריך זה נצטרך יותר מכך, מכיוון שאנו מתכננים להדליק שמונה נורות LED ברצף כשלוחצים על כפתור. נשנה את הרצף גם כאשר לוחצים על כפתור אחר רק כדי להפוך אותו למעניין. אז עלינו לבנות מעגל עם 8 נורות לד ושני מתגים, את דיאגרמת המעגל המלאה תוכלו למצוא למטה.
כאן 8 נוריות LED הן היציאות ושני המתגים הם הכניסות. אנו יכולים לחבר אותם לכל סיכת קלט / פלט על הלוח, אך חיברתי את ה- LRD מפין P1.0 ל- P2.1 ומתג 1 ו- 2 לסיכה P2.4 ו- P2.3 בהתאמה כפי שמוצג לעיל.
כל סיכות הקתודה של ה- LED קשורות לקרקע וסיכת האנודה מחוברת לסיכות ה- I / O דרך נגד. נגד זה נקרא נגד מגביל זרם, נגד זה אינו חובה עבור MSP430 מכיוון שהזרם המקסימלי שמקורו של פין קלט / פלט הוא רק 6mA והמתח על הפין הוא 3.6V בלבד. עם זאת, זה נוהג טוב להשתמש בהם. כאשר כל אחד מהסיכות הדיגיטליות הללו יעלה גבוה נורית ה- LED בהתאמה תידלק. אם אתה יכול לזכור את תוכנית ההדרכות האחרונה של ה- LED, אז תזכור ש- DigitalWrite (LED_pin_name, HIGH) יהפוך את ה- LED לזוהר ו- DigitalWrite (LED_pin_name, LOW) יהפוך של ה- LED.
המתגים הם מכשיר הקלט, קצה אחד של המתג מחובר למסוף הקרקע והשני מחובר לסיכות דיגיטליות P2.3 ו- P2.4. המשמעות היא שבכל פעם שנלחץ על המתג סיכת הקלט / פלט (2.3 או 2.4) תהיה מקורקעת ותישאר חופשית אם לא לוחצים על הכפתור. בואו נראה כיצד נוכל להשתמש בסידור זה במהלך התכנות.
הסבר על תכנות:
יש לכתוב את התוכנית כדי לשלוט על נורית 8 באופן רצוף כאשר לוחצים על המתג 1 ואז כאשר לוחצים על מתג 2 יש לשנות את הרצף. את התוכנית ואת סרטון ההדגמה המלא תוכלו למצוא בתחתית עמוד זה. בהמשך אני אסביר את התוכנית שורה אחר שורה כדי שתוכלו להבין אותה בקלות.
כמו תמיד עלינו להתחיל בפונקציית התקנת החלל () שבתוכה היינו מצהירים שהסיכות בהן אנו משתמשים היא סיכת קלט או פלט. בתוכנית שלנו פלט 8 הפינים LED ושני המתגים הם כניסות. אלה נוריות 8 מחוברים מ P1.0 עד P2.1 שהוא מספר פינים 2 עד 9 על הלוח. ואז המתגים מחוברים לסיכה P2.3 ולסיכה 2.4 שהיא מספר סיכה 11 ו- 12 בהתאמה. אז הכרזנו על הדברים הבאים בהתקנה בטלה ()
הגדרת חלל () {עבור (int i = 2; i <= 9; i ++) {pinMode (i, OUTPUT); } עבור (int i = 2; i <= 9; i ++) {digitalWrite (i, LOW); } pinMode (11, INPUT_PULLUP); pinMode (12, INPUT_PULLUP); }
כידוע פונקציית pinMode () מצהירה שהסיכה היא פלט או קלט והפונקציה digitalWrite () הופכת אותה לגבוהה (ON) או נמוכה (OFF). השתמשנו בלולאת for כדי להכריז על הצהרה זו כדי להפחית את מספר השורות. המשתנה "i" תגדל מן 2 עד 9 עבור לולאה ולכל תוספת מבפנים פונקציה יבוצע. דבר נוסף שעשוי לבלבל אותך הוא המונח " INPUT_PULLUP ". ניתן להכריז על סיכה כקלט רק על ידי קריאה לפונקציה pinMode (Pin_name, INPUT) אך כאן השתמשנו ב- INPUT_PULLUP במקום INPUT ולשניהם יש שינוי מורגש.
כאשר אנו משתמשים בסיכות מיקרו-בקר כלשהן, על הפין להיות מחובר לנמוך או לגבוה. במקרה זה הסיכה 11 ו -12 מחוברת למתג שיחובר לקרקע בלחיצה עליו. אך כאשר לא נלחץ על המתג, הסיכה אינה מחוברת לשום דבר, מצב זה נקרא סיכה צפה וזה רע למיקרו-בקרים. אז כדי להימנע מכך אנו משתמשים בנגד הנפתח או הנפתח כדי להחזיק את הסיכה למצב כאשר הוא נכנס לצף. בשנת MSP430G2553 מייקרו סיכות I / O יש נגד למשוך עד המובנית. כדי להשתמש בזה כל שעלינו לעשות הוא להתקשר אל INPUT_PULLUP במקום INPUT במהלך ההצהרה בדיוק כמו שעשינו לעיל.
כעת ניתן להיכנס לפונקציית loop () הריקנית. כל מה שכתוב בפונקציה זו יבוצע לנצח. השלב הראשון בתוכנית שלנו הוא לבדוק אם לחצו על המתג ואם לחצו עלינו להתחיל למצמץ את נוריות הנורות ברצף. כדי לבדוק אם הכפתור נלחץ נעשה שימוש בשורה הבאה
אם (digitalRead (12) == LOW)
כאן הפונקציה החדשה היא פונקציית digitalRead () , פונקציה זו תקרא את הסטטוס של סיכה דיגיטלית ותחזיר HIGH (1) כאשר הסיכה מקבל מתח כלשהו ותחזיר נמוך LOW (0) כאשר הפין מקורקע. בחומרה שלנו, הסיכה תהיה מקורקעת רק כשאנחנו לוחצים על הכפתור אחרת הוא יהיה גבוה מאחר והשתמשנו בנגד משיכה. אז אנו משתמשים בהצהרת if כדי לבדוק אם לחצן נלחץ.
לאחר לחיצה על הכפתור אנו נכנסים לולאה האינסופית תוך כדי (1) . זה המקום בו אנו מתחילים למצמץ את נוריות הנורה ברצף. אינסופי בעוד הלולאה מוצגת למטה וכול מה שכתוב בתוך הלולאה תפעל לנצח עד הפסקה; משתמשים בהצהרה.
whiel (1) {}
בתוך האינסוף בזמן שאנחנו בודקים את מצב המתג השני המחובר לסיכה 11.
אם מתג זה נלחץ אנו ממצמצים את ה- LED ברצף מסוים אחר, אנו מהבהבים ברצף אחר.
אם (digitalRead (11) == LOW) {עבור (int i = 2; i <= 9; i ++) {digitalWrite (i, HIGH); עיכוב (100); } עבור (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
כדי להבהב את ה- LED ברצף אנו משתמשים שוב בלולאה ה- for , אך הפעם אנו משתמשים בעיכוב קטן של 100 אלפיות השנייה באמצעות פונקציית ה- delay (100) כדי שנוכל להבחין בכך שה- LED מתחזק. כדי להפוך רק זוהר אחד LED בכל פעם שאנחנו משתמשים גם אחרים עבור לולאה כדי לכבות את כל LED. אז אנו מפעילים המתנה לד זמן מה ואז מכבים את כל הנוריות ואז מגדילים את הספירה מדליקים את ההמתנה של נורית זמן מה והמחזור ממשיך. אבל כל זה יקרה כל עוד לא לוחצים על המתג השני.
אם לוחצים על המתג השני אז נשנה את הרצף, התוכנית תהיה פחות או יותר אותה ציפייה לרצף שבו נורית ה- LED דולקת. השורות מוצגות להלן נסה להעיף מבט ולהבין מה השתנה.
אחרת {for (int i = 9; i> = 2; i--) {digitalWrite (i, HIGH); עיכוב (100); } עבור (int i = 2; i <= 9; i ++) digitalWrite (i, LOW); }
כן, לולאת ה- for שונתה. בעבר הפכנו את נורית ה- LED לזרוח ממספר 2 וכלה עד 9. אבל עכשיו אנחנו הולכים להתחיל ממספר 9 וירידה עד 2. בדרך זו נוכל להבחין אם המתג נלחץ או לא.
הגדרת חומרה לרצף LED מהבהב:
בסדר מספיק מכל החלק של התיאוריה והתוכנה. בואו, קבלו כמה רכיבים ונראה איך תוכנית זו נראית בפעולה. המעגל פשוט מאוד ולכן ניתן לבנות אותו בקלות על קרש לחם. אבל הלחמתי את ה- LED והפעלתי את לוח ה- perf רק כדי שייראה מסודר. לוח הפרפום שהלחמתי מוצג להלן.
כפי שאתה יכול לראות יש לנו את סיכות הפלט של ה- LED ואת המתג הוצא כסיכות מחבר. כעת השתמשנו בחוטי מחבר נקבה עד נקבה כדי לחבר את נוריות הנורות והמתגים לכיוון לוח ה- MSP430 LaunchPad, כפי שמוצג בתמונה למטה.
העלאה ועבודה:
לאחר שסיימתם את החומרה, פשוט חברו את לוח ה- MSP430 למחשב ופתחו את ה- Energia IDE והשתמשו בתוכנית שניתנה בסוף עמוד זה. וודאו כי הלוח הימני ויציאת ה- COM נבחרו ב- Energia IDE ולחצו על כפתור העלאה. התוכנית צריכה להיאסף בהצלחה ולאחר שההעלאה תוצג "Done Upload".
כעת לחץ על כפתור 1 בלוח והנורית צריכה להידלק ברצף כמוצג להלן
אתה יכול גם להחזיק את הכפתור השני כדי לבדוק אם הרצף משתנה. העבודה המלאה של הפרויקט מוצגת בסרטון להלן. אם אתה מרוצה מהתוצאות אתה יכול לנסות לבצע כמה שינויים בקוד כמו לשנות את זמן העיכוב בשינוי הרצף וכו '. זה יעזור לך ללמוד ולהבין טוב יותר.
מקווה שהבנת את ההדרכה ולמדת איתו משהו שימושי. אם נתקלת בבעיה כלשהי, אל תהסס לפרסם את השאלה בסעיף ההערות או להשתמש בפורומים. בואו ניפגש בהדרכה אחרת בה נלמד כיצד לקרוא מתחים אנלוגיים באמצעות לוח השיגור MSP30 שלנו.