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

שימוש בלוח Dot Matrix עם מרשם Arduino ו- Shift: 5 שלבים
שימוש בלוח Dot Matrix עם מרשם Arduino ו- Shift: 5 שלבים

וִידֵאוֹ: שימוש בלוח Dot Matrix עם מרשם Arduino ו- Shift: 5 שלבים

וִידֵאוֹ: שימוש בלוח Dot Matrix עם מרשם Arduino ו- Shift: 5 שלבים
וִידֵאוֹ: CS50 2013 - Week 9 2024, נוֹבֶמבֶּר
Anonim
שימוש ב- Dot Matrix LED עם מרשם Arduino ו- Shift
שימוש ב- Dot Matrix LED עם מרשם Arduino ו- Shift
שימוש ב- Dot Matrix LED עם מרשם Arduino ו- Shift
שימוש ב- Dot Matrix LED עם מרשם Arduino ו- Shift
שימוש ב- Dot Matrix LED עם מרשם Arduino ו- Shift
שימוש ב- Dot Matrix LED עם מרשם Arduino ו- Shift

ה- Siemens DLO7135 Dot matrix LED הוא חלק מדהים של אופטואלקטרוניקה. היא מחויבת כתצוגה חכמה (D) Matrix 5x7 עם זיכרון/מפענח/דרייבר. יחד עם הזיכרון הזה, יש לו תצוגת ASCII בת 96 תווים הכוללת אותיות גדולות וקטנות, גנרטור תווים ומכפיל מובנה, ארבע רמות עוצמת אור, והכול פועל על 5V. יש הרבה מה לעמוד בו. ובמחיר של 16 דולר פופ, זה בהחלט צריך. בזמן שביליתי חצי יום בחנות האלקטרוניקה המקומית האהובה עלי מצאתי פח מלא כזה במחיר של 1.50 דולר ליחידה. יצאתי מהחנות עם כמה. מדריך זה יראה לך כיצד להתחבר ללדים אלה ולדמויות התצוגה של מטריצת הנקודות באמצעות Arduino מבוסס AVR. אם קראת את כל המדריכים הקודמים שלי, יתכן שתקבל את הרעיון שלעתים קרובות אני בעד הפתרון הזעיר ביותר, ולא תטעה, גם אם אני נופל מדי פעם מהמטרה. לכן, אני גם אלך לשלב נוסף בהוראה זו ואראה לך כיצד תוכל לצמצם את מספר יציאות הקלט/פלט הדרושות בכדי להניע את נוריות ה- LED הגדולות של מטריצת הנקודות.

שלב 1: קבל את הסחורה …

קבלו את הסחורה…
קבלו את הסחורה…

לפרויקט הקטן הקצר הזה תזדקק ל:

  • מיקרו-בקר מבוסס AVR כמו Arduino או כל דבר דומה לו. סביר להניח שניתן יהיה להתאים את ההוראות הללו למרכז ה MCU שבחרת.
  • LED מטריצת DLO7135 נקודה או אחר באותה משפחה
  • מאגר שינויים של 8 סיביות כמו 74LS164, 74C299 או 74HC594
  • לוח לחם
  • חוט חיבור, חותכי חוטים וכו '.

אין צורך במלחם, למרות שאשתמש בו מאוחר יותר; אתה יכול להסתדר בלעדיו.

שלב 2: התחבר ישירות לתצוגת LED

התחבר ישירות לתצוגת LED
התחבר ישירות לתצוגת LED
התחבר ישירות לתצוגת LED
התחבר ישירות לתצוגת LED
התחבר ישירות לתצוגת LED
התחבר ישירות לתצוגת LED

פרש את רשימת החלקים הקטנה שלך ותפס את הנורית. מניחים אותו על לוח הלחם שבמרכזו מעט, על חריץ קו האמצע. החלק הראשון של החיבור מתרחש כולו בצד שמאל של ה- LED. סיכה מס '1 ממוקמת בפינה השמאלית העליונה כפי שמציין המשולש/החץ. שמתי את פונקציות הסיכה בתמונה לעיונך בזמן שאתה קורא או מחבר את ה- LED שלך.

הצד השמאלי

חיובי ושלילי החל משמאל למעלה, חבר את Vcc ל- 5V. זה אולי רעיון טוב לא להפעיל את הלוח שלך עד שתשלים את כל הצד השמאלי; הנורית יכולה להיות בהירה אם אתה מנסה לראות חורים קטנים לתקוע בחוטים. חבר את ה- GND השמאלי התחתון לקרקע. בדיקת מנורה, הפעלת שבב וכתיבה השנייה והשלישית מלמעלה משמאל הם בדיקת מנורה ושבב הפעלה. שניהם היגיון שלילי, כלומר הם מופעלים כשהם נמצאים ב 0 לוגי במקום 1. בתמונה שלי למטה אמורים להיות מוטלים מעליהם, אך לא רשמתי זאת עבור אף אחד מהם. סיכת LT כשהיא מופעלת מאירה כל נקודה במטריצת הנקודות בבהירות 1/7. זה יותר מבחן פיקסל, אבל הדבר המעניין בסיכת LT הוא שהוא לא מחליף שום תו שנמצא בזיכרון, כך שאם יש לך כמה כאלה מחוברים זה לזה (יש להם מרחק צפייה של 20 רגל), מלטפים את LT יכול לגרום לזה להיראות כמו סמן. כדי לוודא שהוא מושבת, חבר אותו ל- 5V. סיכות ה- CE וה- WR הם גם היגיון שלילי ונדרשים להפעיל אותם כדי לכתוב את המכשיר החכם הזה. אתה יכול לנהל את הסיכות האלה במיקרו עם יציאות קלט/פלט רזרביות בבקר המיקרו שלך, אבל לא נתעסק כאן. פשוט חבר אותם לקרקע כדי להשאיר אותם מופעלים. רמות בהירות קיימות ארבע רמות בהירות הניתנות לתכנות במשפחת נוריות ה- DLO:

  • רֵיק
  • 1/7 בהירות
  • 1/2 בהירות
  • בהירות מלאה

BL1 HIGH ו- BL0 LOW הוא 1/2 בהירות. שניהם HIGH הם בהירות מלאה. הגדר אותו למה שאתה אוהב. שוב, אם יש לך יציאות קלט/פלט וזה מספיק חשוב לך, זה יכול להיות נשלט גם על ידי ה- Arduino שלך. זה עוטף את הצד השמאלי. אם אתה מביא כוח ללוח שלך אתה אמור לראות את נורית ה- LED דולקת. שחק עם פקדי הבהירות ובדיקת המנורה כדי להכיר את זה, אם אתה סקרן.

הצד הנכון

הצד הימני מורכב מיציאות נתונים לחלוטין. הימנית התחתונה, סיכה 8 או D0 ליתר דיוק, מייצגת את הסיביות הפחות משמעותית בתו של 7 סיביות. הפינה הימנית העליונה, סיכה 14 או D6 מייצגת את הסיביה המשמעותית ביותר. זה מאפשר לך לדעת איזה סדר לערבב את החלקים שלך בעת כתיבה לנורית. כאשר יציאות קלט הנתונים מחוברות, מצא שבע יציאות קלט/פלט דיגיטליות ריקות ב- Arduino או ב- AVR שלך וחבר אותן. סביר להניח שתרצה לזכור איזו יציאת פלט נתונים במכשיר ה- AVR שלך עוברת לאיזו יציאת קלט נתונים בנורית. עכשיו אתה מוכן לדחוף כמה נתונים אל הנורית החכמה הזו. האם אתה עדיין רועד מהתרגשות? אני יודע שאני…

שלב 3: ציון תו שיוצג

ציון תו שיוצג
ציון תו שיוצג

מערך התווים המשמש במנורת CMOS זו הוא ASCII ההפעלה שלך החל מ- 0x20 (עשרוני 32; רווח) ומסתיים ב- 0x7F (עשרוני 127; מחיקה, אם כי מיוצגת על הנורית כגרפיקת סמן). לכן, לאחר צג ה- LED תו אינו כרוך בדחיפת ה- 1 או 0 ההיגיון על סיכות פלט הנתונים שלך, בדרך כלל ואחריו דופק WR, אך אני מוותר על כך לתרגיל זה. אז רשמת או זוכר אילו סיכות עוברות לאיזה יציאות, נכון? בחרתי PD [2..7] ו- PB0 (פינים דיגיטליים 2 עד 8 ב- Arduino-speak). אני בדרך כלל לא מציע להשתמש ב- PD [0..1] מכיוון שאני מקדיש אותו לתקשורת הטורית שלי בחזרה לתיבת FreeBSD, ו- Arduino et al. למפות את הסיכות האלה לערוץ התקשורת FTDI USB שלהן, ולמרות ש"הן "אומרות שסיכות 0 ו -1 יעבדו אם לא תאתחל תקשורת טורית, מעולם לא הצלחתי להשתמש בסיכות כקלט/פלט דיגיטלי רגיל. למעשה, ביליתי יומיים בניסיון לאתר בעיה כאשר ניסיתי להשתמש ב- PD0 ו- PD1 ומצאתי שהם תמיד גבוהים. * מושך בכתפיים* סביר להניח שיהיה טוב לקבל קלט חיצוני כלשהו, כמו למשל לוח מקשים, גלגל דחיפה או גלגל אגודל, או אולי אפילו קלט ממסוף (ArduinoTerm שלי עדיין לא מוכן לפריים טיים …). הבחירה בידיים שלך. לעת עתה, אני רק הולך להמחיש כיצד לגרום לקוד להעלות את הדמות הרצויה אל הנורית. יש zipfile להורדה כולל קוד המקור ו- Makefile ויש גם סרט קצר המציג את הלדים מדפיסים את מערך התווים שלו. סליחה על האיכות המחורבנת של הסרטון. הקוד למטה מדפיס את המחרוזת "ברוכים הבאים להוראה שלי!" ואז עובר בין כל ערכת התווים שבה נורית LED תומכת.

DDRD = 0xFF; // OutputDDRB = (1 << DDB0); char msg = "ברוך הבא להוראה שלי!"; uint8_t i; for (;;) {for (i = 0; i <27; i ++) {Print2LED (msg ); _ delay_ms (150); } עבור (i = 0x20; i <0x80; i ++) {Print2LED (i); _ delay_ms (150); } Print2LED (& apos*& apos);}פלט היציאה מטופל בפונקציה Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); אם (i & 0b01000000) PORTB = (1 <

הקוד ו- Makefile כלולים בקובץ zip למטה.

שלב 4: שמור על יציאות קלט/פלט עם רישום משמרות

שמור על יציאות קלט/פלט עם רישום משמרות
שמור על יציאות קלט/פלט עם רישום משמרות
שמור על יציאות קלט/פלט עם רישום משמרות
שמור על יציאות קלט/פלט עם רישום משמרות
שמור על יציאות קלט/פלט עם רישום משמרות
שמור על יציאות קלט/פלט עם רישום משמרות

אז עכשיו המיקרו -בקר שלנו יכול לשלוח נתונים למנורת ה- LED של מטריצות הנקודות אך הוא משתמש בשמונה יציאות קלט/פלט. זה לא כולל שימוש ב- ATtiny בחבילת DIP של 8 פינים, ואפילו עם Arduino חדש יותר עם ATmega328p, זה הרבה יציאות קלט/פלט עבור LED אחד. עם זאת, אנו יכולים לעקוף זאת על ידי שימוש ב- IC הנקרא רישום משמרות. רגע "להעביר" הילוכים … ניתן להבין את רשימת המשמרות בצורה הטובה ביותר על ידי מחשבה על שתי המילים המרכיבות את שמו: "העברת" ו"רישום ". המילה shift מתייחסת לאופן בו הנתונים עוברים דרך המרשם. כאן (כמו בארדואינו ובבקרי המיקרו שלנו, באופן כללי) רישום הוא מיקום המחזיק נתונים. היא עושה זאת על ידי יישום שרשרת לינארית של מעגלי לוגיקה דיגיטליים המכונים "כפכפים", שיש לה שני מצבים יציבים שניתן לייצג על ידי 1 או 0. לכן, על ידי חיבור שמונה כפכפים יחד יש לך מכשיר המסוגל להחזיק ומייצג בתים של 8 סיביות. כפי שישנם מספר סוגים של כפכפים, וכמה וריאציות על נושא של רשמי משמרות (דלפקים למעלה/מטה ומונים של ג'ונסון), ישנם גם מספר סוגים של רישומי משמרות המבוססים על אופן הנתונים ננעל לרשומה וכיצד פלט הנתונים האלה. בהתבסס על זה, שקול את הסוגים הבאים של רשמי משמרות:

  • סידורי כניסה / יציאה מקבילה (SIPO)
  • Serial In / Serial Out (SISO)
  • In/ Serial Out במקביל (PISO)
  • מקביל נכנס / מקביל החוצה (PIPO)

שתיים מההערות הן SIPO ו- PISO. רישומי SIPO לוקחים נתונים באופן סדרתי, כלומר, אחד אחרי השני, מעבירים את סיביות הקלט הקודמות לכפכף הבא ושולחים את הנתונים על כל הכניסות בבת אחת. זה הופך ממיר סדרתי למקבילי נחמד. לרשמי משמרות PISO, להיפך, יש כניסות מקבילות, כך שכל הביטים נכנסים בבת אחת, אך הם מופקים אחד בכל פעם. וניחשתם נכון, זה גורם למקביל נחמד לממיר סדרתי. רשימת המשמרות שבה אנו רוצים להשתמש כדי להפחית את מספר סיכות הקלט/פלט תאפשר לנו לקחת את 8 סיכות ה- IO בהן השתמשנו קודם ולצמצם אותן לאחת, או אולי רק לזוג, בהתחשב בעובדה שנצטרך לשלוט על אופן הקלטנו את הביטים. לכן, רישום המשמרות בו נשתמש הוא יציאה סידורית / מקבילה. העבר את רשימת המשמרות בין הלד לבין ארדואינו שימוש קל במרשם משמרות. החלק הקשה ביותר הוא רק להמחיש את סיכות פלט הנתונים וכיצד הספרות הבינאריות יגיעו ל- IC, וכיצד הן יופיעו בסופו של דבר על ה- LED. קח רגע לתכנן את זה. 1. חבר את 5V לסיכה 14 (למעלה מימין) והוריד את סיכה 7 (למטה משמאל) למטה לקרקע. לרשומת המשמרות יש שתי כניסות טוריות אך אנו נשתמש רק באחת, אז חבר את סיכה שתיים ל- 5V3. אנחנו לא נשתמש בסיכה הברורה (רגילה לאפס את כל הפלט) אז השאר את זה צף או תקף אותו ל- 5V4. חבר יציאת IO דיגיטלית אחת להצמדת אחת מרשם המשמרות. זהו פין הכניסה הטורי. חבר יציאת IO דיגיטלית אחת לפין 8 (מימין למטה). זהו סיכת השעון.6. חבר את קווי הנתונים שלך בין Q0 ל- Q6. אנו משתמשים רק ב 7 סיביות מכיוון שמערכת התווים ASCII משתמשת רק בשבעה סיביות. השתמשתי ב- PD2 להוצאת הנתונים הטוריים שלי ו- PD3 לאות השעון. עבור סיכות הנתונים, חיברתי את Q0 ל- D6 על הלד והמשכתי כך (Q1 עד D5, Q2 עד D4 וכו '). מכיוון שאנו שולחים נתונים באופן סדרתי נצטרך לבחון את הייצוג הבינארי של כל תו שברצוננו לשלוח, להסתכל על 1 ו 0, ולהוציא כל ביט על הקו הסדרתי. צירפתי גרסה שנייה של מקור dotmatrixled.c יחד עם קובץ Makel למטה. הוא עובר במערך התווים ומציג את כל התווים השווים (אם זה מוזר לחשוב שמכתב יכול להיות מוזר או שווה, חשוב רגע על הייצוג הבינארי). נסה להבין כיצד לגרום לו לעבור את כל התווים המוזרים. תוכל להתנסות עוד יותר בחיבורים בין רשימת המשמרות, נורית מטריצת הנקודות ובין הארדואינו שלך. ישנן מספר תכונות שליטה בין הנורית לרשומות שיכולות לאפשר לך לכוונן את השליטה שלך בזמן הצגת הנתונים. אז … עברנו מהצורך להשתמש בשמונה יציאות קלט/פלט לשימוש בשניים בלבד!

שלב 5: סיכום

סיכום
סיכום
סיכום
סיכום

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

מוּמלָץ: