עצמאות 2019: פרויקט כחול-לבן

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

הפרויקט בפעולה

לפני די הרבה זמן התחלתי לכתוב ספריה למיקרו-בקר PIC12F1840 לשליטה בפסי לדים Addressable מדגם WS2812. יש ספריות לארדואינו שעושות את זה, ואפילו די טובות, אך אי אפשר "להתאים" אותן בקלות ל-PIC הנ"ל. הוא לא רק פלטפורמה שונה, הוא גם חלש יותר מהשבבים שבארדואינו מבחינת מהירות שעון ונפח זיכרון. לכן הוספתי לטכניקה הבסיסית של כתיבה ללדים כמה טריקים, שיאפשרו להוציא מהג'וק הצנוע ביצועים שהם
– לפחות למראית עין – מעבר לכוחותיו.

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

את התוכנה אפשר להתחיל לכתוב לפני שהטבעות הגדולות מגיעות, ולבדוק אותה על פס לדים ישר. שילוב בין האילוצים הטכניים לשאיפות האמנותיות הביא אותי להחלטה לממש רק ארבעה מקטעים (שניים לבנים ושניים כחולים, אולי בעוצמות הארה קצת שונות זה מזה): ראשית, מפני שזה מספר סביר של אלמנטים נעים על טבעת שיש בה עשרות בודדות של "פיקסלים", ושנית, כי יש רק 16 קומבינציות אפשריות של מקטעים לכל פיקסל בטבעת. המשמעות היא שאפשר להגדיר "טבלת חיפוש" לערכי פיקסלים שיש בה 16 ערכים (כפול 3 בייטים לכל ערך, סה"כ 48 בייטים) ולהשתמש בה כדי לצבוע את הטבעת כולה בכל תסריט אפשרי. ב-PIC הקטן זה יחסוך די הרבה זיכרון SRAM שהוא משאב נדיר.

ומה יהיה בקוד? בגדול, (1) מבנה struct שמכיל מיקום, אורך ומהירות של כל מקטע, (2) פונקציה ש"מזיזה" את המקטע בהתאם למהירותו ומשנה קצת, מדי פעם, את האורך או המהירות באופן אקראי, (3) פונקציה ש"מאכלסת" את מערך הפיקסלים בזיכרון בהתאם לערכי המיקום והאורך של המקטעים ברגע נתון, וכמובן (4) הפונקציה ששולחת את המידע לטבעת הלדים. כדי לחסוך בחישובים חשבתי לשמור ב-FLASH טבלה גדולה של מספרים אקראיים שהוגרלו מראש, מספיק גדולה כדי שצופה סביר לא יבחין בדפוס החוזר, ויש עוד כמה טריקים קטנים שיהפכו את התוצאה למעניינת יותר ויזואלית.

בשלב הראשון, כדי להקל על הדיבוג והניסויים ברמה ה"גבוהה", כתבתי את הקוד בארדואינו, כשאני מסתמך על ספריית NeoPixel של Adafruit לטיפול בחומרה של הלדים. כך בחרתי בניסוי וטעייה עוצמות תאורה שנראו לי אופטימליות, ופרמטרים כמו מהירויות תנועה סבירות של המקטעים (אמנם מהירות השעון של ה-PIC ושל הארדואינו שונה, אך השפעה זו קלה לשליטה). בשלב זה גיליתי ששמירה של טבלת ערכים רנדומליים קבועה לא תמיד נותנת את התוצאה המיוחלת – עניין של מזל, אפילו שהקפדתי לשמור מספר ראשוני של ערכים כדי למנוע מחזוריות טריוויאלית. ממצא נוסף היה שבגלל אפקט persistence of vision הידוע, כדאי לשמור על אורכי מקטעים קצרים מאוד – עד כדי ויתור על העניין של שינוי אורך תוך כדי ריצה.

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

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

לדים כאלה צורכים הרבה חשמל, יחסית (הפעילות בסרטון צרכה כ-130mA), אז כדי לשדרג את פקטור המגניבות של הגאדג'ט שלי תכננתי ליצור אותו כתליון, ולדאוג שהסוללות יהיו סמויות כך שמי שמבין טיפה באלקטרוניקה ויראה את זה יתהה איך זה עובד. לשם כך הצטיידתי בשרוך שיפצור לדיסקית, בצבע שחור, שדרכו השחלתי את כבלי החשמל. מאחור, באמצע העורף, השרוך "מתפצל" לשרוך נוסף שעובר מתחת לחולצה, אל כיס המכנסיים שבו מסתתר בית הסוללות. שרינק שחור ודבק חם שחור השלימו לא רע את הפן האסתטי של החלק הזה במערכת (אפרופו, ידעתם שאקדח אוויר חם יעיל בהתכת השיפצור ממש כמו מצית?) והתוצאה הסופית, כשרואים אותה בלילה ובעין, לא דרך טשטוש וסינוור של מצלמה, מוצלחת מאוד לדעתי. נראה אילו פידבקים נקבל עליה מחרתיים. יום עצמאות שמח!

להרשמה
הודע לי על
0 Comments
Inline Feedbacks
הראה את כל התגובות