במדריך זה אנו מתכננים תצוגת גלילה מטריקס 8x8 LED באמצעות Arduino Uno, שתציג אלפבית גלילה.
מטריקס LED 8x8 מכיל 64 נוריות (דיודות פולטות אור) המסודרות בצורה של מטריצה, ומכאן השם הוא מטריצת LED. אנחנו הולכים להכין את המטריצה הזו על ידי הלחמה של 64 נוריות אלה על לוח ה- perfot או ה- DOT PCB. נוריות ה- LED יכולות להיות בכל צבע, בחרו את אלו שזמינות אצלכם. אז נכתוב תוכנית לארדואינו לשליטה במטריצת 64 נוריות הנוריות הללו. ה- UNO, על פי התוכנית, מפעיל נוריות LED מתאימות להצגת דמויות בצורה גלילה.
רכיבים נדרשים:
- ארדואינו אונו
- 64 נוריות
- לוח עם כלי הלחמה אחרים
- נגד 1KΩ (8 חתיכות)
- ספק כוח (5 וולט)
הסבר על מעגל ועבודה:
ישנם 64 נוריות מסודרות בצורה מטריציונית. אז יש לנו 8 עמודות ושמונה שורות. מעל השורות והעמודות האלה, כל המסופים החיוביים בשורה מאוגדים. עבור כל שורה, יש מסוף חיובי משותף אחד עבור כל 8 נוריות בשורה זו. זה מוצג באיור למטה,
אז במשך 8 שורות יש לנו 8 מסופים חיוביים משותפים. שקול את השורה הראשונה, כפי שנראה באיור, ל- 8 נוריות D57 ל- D64 יש מסוף חיובי משותף ומסומנות על ידי 'POSITIVE0'. כעת, אם אנו רוצים להבהיר נורית אחת או כל אחת בשורה הראשונה של המטריצה, עלינו להפעיל את ה- PIN0 של מטריקס LED. כמו כן, אם ברצוננו להדליק כל נורית LED (או כל) בשורה כלשהי, עלינו להפעיל את סיכת המסוף החיובית המשותפת של אותה שורה בהתאמה.
זה עדיין לא נגמר ורק להשאיר את שורות ה- MATRIX עם היצע חיובי לא יניב דבר. עלינו לקרקע את שלילי ה- LED כדי להאיר אותם. כך שבמטריצת LED 8x8, כל המסופים השליליים של נוריות הנורה בכל עמודה מאוגדים ויוצרים שמונה מסופים שליליים משותפים, כמו כל המסופים השליליים בעמודה הראשונה מחוברים יחדיו ל- PIN-A1 (NEGATIVE7). זה מוצג באיור להלן:
צריך לשים לב לסיכות הללו בזמן הלחמת הנוריות על גבי Perfboard.
כעת אם נצטרך להאריק נורית כלשהי בעמודה הראשונה, אנו נקרקע את ה- PIN-A1 (NEGATIVE7) של ה- MATRIX, והיא תקרקע את כל נוריות ה- LED בעמודה הראשונה. אותו תהליך חל על כל שבעת העמודות השליליות הנפוצות האחרות.
מאז אתה יודע כיצד פועל חיובי ונפוץ שלילי נפוץ. בואו נרכיב אותם כדי לראות כיצד הם עובדים יחד והמעגל הסופי לגלילה של תצוגת מטריקס 8x8 LED ייראה כך:
נהיגה 8x8 LED מטריקס באמצעות ריבוב:
בואו נגיד שאנחנו רוצים להדליק את הנורית 57 ואז עלינו להפעיל את ה- PIN0 של UNO ולהאריק את ה- PIN-8 של ה- UNO. כעת להפעלת LED57 ו- LED50 עלינו להפעיל את PIN0, PIN1 ולהאריק את ה- PIN8, PIN9. אך פעולה זו לא רק תפעיל את D57, D50 אלא גם D49, D58. כדי להימנע מכך אנו משתמשים בטכניקה הנקראת Multiplexing. כבר דנו בפירוט בטכניקת מולטיפלקס זו במטריקס 8x8 LED; עברו על מאמר זה להסבר מפורט. כאן אנו מסבירים בקצרה את הריבוב.
העין האנושית אינה יכולה לתפוס תדר העולה על 30 הרץ. כלומר אם נורית LED דולקת ונכבה ברציפות בקצב של 30Hz או יותר. העין רואה את ה- LED כמופעל באופן רציף. עם זאת זה לא המקרה והנורית תידלק ונדלק כל הזמן. טכניקה זו נקראת Multiplexing.
בואו נגיד למשל, אנחנו רוצים להדליק רק את LED57 ואת LED50 מבלי להפעיל את D49 ו- D58. הטריק הוא, ראשית נספק כוח לשורה הראשונה להדליק את LED57 ונחכה ל- 1mSEC, ואז נכבה אותה. אז נספק כוח לשורה השנייה להפעלת LED50 ונחכה ל- 1mSEC ואז יכבה אותה. המחזור עובר ברציפות בתדירות גבוהה וה- LED57 וה- LED50 יופעלו ונכבו במהירות ושני הנוריות ייראו דולקות ברציפות לעינינו. פירושו שאנחנו מספקים כוח רק לשורה אחת בכל פעם, ומבטלים את הסיכוי להדליק נוריות אחרות בשורות אחרות. נשתמש בטכניקה זו כדי להציג את כל הדמויות.
יש גם ספרייה בשם LedControlMS.h כדי לטפל בכל המורכבות הזו של ריבוב, שם אתה רק צריך להזין את התו או המספר שברצונך להדפיס על מטריצת LED, בדוק את מטריצת LED Arduino זו עם פרויקט MAX7219 לקבלת פרטים נוספים.
הסבר על תכנות:
בקוד שלנו כתבנו ערך עשרוני עבור כל תו ותכנתנו את הערכים הללו בארדואינו. התוכנית כתבה בכדי להעביר ערכים אלה לשורה הבאה לכל 0.2 שניות, הדבר נראה כגלילה של תווים כלפי מעלה, זה פשוט מאוד.
כדי לשנות את התווים שיוצגו, פשוט החלף את הערך במערך ALPHA char בהתאם לערכי התווים המפורטים להלן, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, // D 126,96,96,120,96,96,126,0, 0,0, // E 126,96,96,120,96,96,96,0, 0,0, // F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, // N 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, // P 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, // S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99,107,127,119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
כמו אם ברצונך להציג DAD על מטריקס ה- LED, אז החלף תחילה את ערכי התווים במערך ALPHA על ידי הצבת ערכים עבור התווים D, A ו- D מהרשימה שלמעלה:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0};
הערכים הכוללים הם כעת 5 * 10 = 50 ערכים, כך
החלף, עבור (int x = 0; x <142; x ++) // 150-8 (כדי לעצור הצפה) {…….. עם, עבור (int x = 0; x <42; x ++) // 50-8 (כדי לעצור הצפה) {……..
אז אתה רק צריך לשנות את המספר.
בעזרת זה ביצעת את התכנות ועכשיו אתה יכול לגלול כל טקסט על מטריקס LED 8x8, לבדוק את הקוד המלא למטה עם סרטון הדגמה.