שתף קטע נבחר

צילום: shutterstock

עשו זאת בעצמכם: דגל מנורות

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

זוכרים את פרויקט הדגל המתנפנף בשליטת בלוטות' מיום העצמאות הקודם? השנה החלטתי ללכת רחוק עוד יותר וליצור דגל וירטואלי לחלוטין, שמבוסס על תצוגת POV (ראשי תיבות של Persistence Of Vision) מסתמכות על ה"הישארות" הקצרצרה של התמונה בעין גם אחרי שמקור האור הממשי נעלם.

 

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

 

 

אילוצי חומרה

מטעמי תקציב ומורכבות בניה, השאלה הראשונה ששאלתי את עצמי היא מהו המינימום שבמינימום הדרוש, מבחינת נוריות LED, כדי "לצייר" את דגל ישראל בתצוגת POV. ראשית, אפשר לוותר על הרקע הלבן: הדגל יזוהה בקלות גם אם נראה רק את האזורים הכחולים שלו. שנית, נדרש גובה תמונה של תשעה פיקסלים לכל הפחות: שניים לפסים הכחולים, שניים לרווח שבין הפסים למגן הדוד, ועוד חמישה כדי ליצור את מגן הדוד הגס ביותר שעדיין יזכיר את הדבר האמתי. עם זאת, הפיקסלים שברווח בין הפסים למגן הדוד הרי כבויים תמיד, אז אפשר לוותר עליהם ולהסתפק בשבעה בלבד, בריווח נכון. התפשרתי על שמונה, גם כי זה נוח מבחינת הרכיבים האלקטרוניים וגם כי כך יהיה לפחות רצף של 7 פיקסלים, בעזרתו אפשר לצייר גם אותיות בעת הצורך.

 

 

 

ציור הדגל על תצוגת POV בעלת שמונה "פיקסלים"  (צילום: עידו גנדל) (צילום: עידו גנדל)
ציור הדגל על תצוגת POV בעלת שמונה "פיקסלים" (צילום: עידו גנדל)

 

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

 

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

 

 

 (צילום: עידו גנדל) (צילום: עידו גנדל)
(צילום: עידו גנדל)

 

 

הבניה ואופן הפעולה

המערכת כולה נבנתה על בסיס שיפוד במבוק רחב ("ג'מבו"). בית סוללה לסוללת AA אחת, מפסק זעיר להפעלה/כיבוי וממיר מתח קנוי ל-5V דואגים לאספקת החשמל. ה"מוח" של המערכת הוא מיקרו-בקר מדגם ATtiny85 (מאותה משפחה של הדגם שנמצא בלוחות ארדואינו, רק קטן, פשוט וזול יותר), והוא שולט בג'וק שנקרא Shift Register. ג'וק זה מקבל ביטים באופן סדרתי מהמיקרו-בקר, דרך כניסה אחת, ושולח את שמונת הביטים האחרונים שהתקבלו דרך שמונה יציאות נפרדות. את היציאות הללו חיברתי כמקורות מתח לנוריות ה-LED הכחולות.

 


 (צילום: עידו גנדל) (צילום: עידו גנדל)
(צילום: עידו גנדל)

 

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

 

אופס! 

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

 

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

 

 

 (צילום: עידו גנדל) (צילום: עידו גנדל)
(צילום: עידו גנדל)

 

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

 

באתר makers.co.il יש סדרת פוסטים מרתקת על תצוגות POV, וסדרת "הלו טייני " בבלוג שלי עוסקת בעבודה עם המיקרו-בקר ATtiny85. יום עצמאות שמח!

 

 תגובה חדשה
הצג:
אזהרה:
פעולה זו תמחק את התגובה שהתחלת להקליד
מומלצים