יום שלישי, 18 במרץ 2025

עבודה עם מטריצת הלדים ב Pico:ed - שיעור רביעי

 

הקדמה

אחד היתרונות הבולטים של לוח ה-PICO:ED הוא מטריצת הלדים המרשימה בגודל 17x7. מטריצה זו מאפשרת להציג טקסט, מספרים, אנימציות ואפילו תמונות פשוטות. בשיעור זה נלמד כיצד להשתמש במטריצת הלדים כדי ליצור תצוגות ואנימציות שונות.

מטריצת הלדים ב-PICO:ED נשלטת באמצעות שבב IS31FL3731 שמאפשר לנו לשלוט ברמת הבהירות של כל לד בנפרד, וכך ליצור תמונות עם עומק ופרטים. 



עבודה בסיסית עם מטריצת הלדים

הצגת טקסט

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



שליטה בבהירות

מטריצת הלדים של ה-PICO:ED מאפשרת לנו לשלוט ברמת הבהירות של התצוגה, מה שמעניק גמישות רבה. בהירות גבוהה תהיה בולטת יותר אך תצרוך יותר סוללה, בעוד שבהירות נמוכה תחסוך באנרגיה ותהיה עדינה יותר לעיניים.

ניתן לשלוט בבהירות הטקסט באמצעות הפרמטר brightness שערכו יכול לנוע בין 0 (כבוי) ל-255 (בהירות מקסימלית):



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

ציור פיקסלים בודדים

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

מטריצת הלדים של ה-PICO:ED כוללת 17 עמודות (x=0 עד x=16) ו-7 שורות (y=0 עד y=6), כאשר הפינה השמאלית העליונה היא (0,0).

ניתן לשלוט בכל פיקסל (לד) במטריצה בנפרד באמצעות הפונקציה pixel():



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

ציור מסגרת (מלבן ריק)

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

המסגרת תהיה מורכבת מארבעה קווים ישרים: שני קווים אופקיים (למעלה ולמטה) ושני קווים אנכיים (משמאל ומימין).



שימו לב איך אנחנו משתמשים ב - display.width ו- display.height כדי לדעת את הגודל המדויק של המסך. זה עוזר לנו לגשת בדיוק לשורה ולעמודה האחרונות. שיטה זו מבטיחה שהקוד שלנו יעבוד גם אם בעתיד יהיו גרסאות של ה-PICO:ED עם מסכים בגדלים שונים.

עבודה עם תמונות מוכנות

עד עכשיו עבדנו ברמת הפיקסל הבודד, אבל זה יכול להיות מייגע לצייר תמונות מורכבות פיקסל אחר פיקסל. למזלנו, ה-PICO:ED מגיע עם מחלקה מיוחדת בשם Image שמכילה מספר תמונות מוכנות מראש.

השימוש בתמונות המוכנות הוא פשוט מאוד - פשוט מייבאים את מחלקת ה-Image ומשתמשים ב - display.show() להצגת התמונה הרצויה. זה מאפשר לנו להציג איקונים ואימוג'ים פופולריים בקלות ובמהירות.



ה - Pico:ed כולל מגוון רחב של תמונות מוכנות כמו: NO, SQUARE, RECTANGLE, RHOMBUS, TARGET, CHESSBOARD, HAPPY, SAD, YES, HEART, TRIANGLE, ועוד רבים. נסו לשחק עם האפשרויות השונות כדי לגלות את כל התמונות המובנות.

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

יצירת תמונות מותאמות אישית

התמונות המוכנות נהדרות, אבל החלק הכיפי באמת מתחיל כשיוצרים תמונות משלנו! ה - Pico:ed מאפשר לנו ליצור תמונות מותאמות אישית באמצעות הגדרת רמת הבהירות לכל פיקסל במטריצה.

הדרך ליצור תמונה מותאמת אישית היא באמצעות שימוש במחלקת Image עם מחרוזת המתארת את רמת הבהירות של כל פיקסל. המספרים 0-9 מייצגים רמות בהירות שונות, כאשר 0 הוא כבוי ו-9 הוא הבהיר ביותר. התבנית היא 17 ספרות לכל שורה (כי יש 17 עמודות), עם ':' בסוף כל שורה.



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

טיפ שימושי: לפני שכותבים את הקוד, אפשר לצייר את התמונה הרצויה על נייר משבצות 17x7 ואז לתרגם כל משבצת למספר המייצג את רמת הבהירות הרצויה.

יצירת אנימציות פשוטות

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

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



האנימציה הזו תרוץ ללא הפסקה (בגלל while True), כאשר הכוכב גדל וקטן. 

ניתן לשנות את מהירות האנימציה על ידי שינוי ערכי ה-time.sleep(). ערכים קטנים יותר יגרמו לאנימציה לרוץ מהר יותר, וערכים גדולים יותר יאטו אותה.

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

בהצלחה!! 


אין תגובות:

הוסף רשומת תגובה

הערות? הארות? יש לך משהו חשוב לספר לכולם? שאלות?

נשמח לשמוע!

(התגובה תפורסם בהקדם בכפוף לאישור מערכת מייקינג)