קוד עבודה עם מסך 7 מקטעים
אחת משיטות התצוגה הנפוצות היא תצוגת 7 מקטעים.
בתצוגה זו, כל תו מורכב מ-7 מקטעים/נורות, שבעזרתן ניתן ליצור מספרים וגם אותיות.
כדי להציג את המידע, יש לתת לכל מקטע ערך דולק/כבוי.
כשנרצה 4 תווים, זה יוצא הרבה פינים, ולכן יש רכיב המשתמש באוגר הזזה (shift register).
לרכיב זה יש ספריה מוכנה (NX7Seg), אשר משתמשת בספריית עזר להצגת אותיות (ASCIIDic) ואנו מתבססים עליהן בקוד זה.
את הספריות ניתן להוריד ישירות מכאן: NX7Seg , ASCIIDic
או מהכתובות
https://github.com/AlexisTM/ASCIIDic
https://github.com/AlexisTM/NX7Seg
בתחילת הקוד נכלול את הספריות הללו
כאמור, המסך משתמש באוגר הזזה כך שבעזרת 3 פינים בלבד מצליחים לשלוט על כל המקטעים של המסך.
השורות הבאות מגדירות את הפינים שאיתם נעבוד עבור המסך
אתחול של אובייקט המסך (נדרש לשימוש בספריות המוכנות עבור עבודה עם המסך)
עם תחילת הריצה יש לאתחל את הפינים לאופן העבודה. נגדיר זאת בפונקציה שאליה נקרא מתוך פונקציית setup ה"רגילה"
פונקציה להצגת רמת המשחק
הרמה מוגדרת במשתנה גלובלי בשם gameLevel, ומציגים אותו עם האות L כדי להבהיר שמדובר על רמת המשחק.
הפונקציה משתמשת בפקודה my4x7seg.write של הספריה, שמקבלת מערך של אותיות ומציגה אותו.
לכל תו יש ייצוג מספרי (ASCII). כשאנחנו רוצים להציג מספר כאות, נוסיף לו '0', כלומר את הערך המספרי של 0, וכך יהיה לנו את הערך המספרי של אותה ספרה, כלומר הפכנו מספר אל "אות" שאותה ניתן להדפיס עם פונקציית הדפסת האותיות.
(אנו משתמשים בפונקציית הדפסת אותיות כדי שנוכללשלב אותיות עם המספרים)
בסיום הפונקציה נשתמש בפקודה my4x7seg.refresh שמרעננת את המסך עם הערך החדש שטענו אליה.
פונקציה זו מקבלת כפרמטר את משך ההצגה, ובמהלך זמן זה לא מתבצעת כל פעילות אחרת בארדואינו. לכן נעדיף להקטין את הזמן הזה ככל הניתן.
פונקציה להצגת תוצאות המשחק
יש כאן התייחסות גם למקרה של תוצאה דו ספרתית. במקרה כזה מפרקים את המספר לספרות השונות וכל אחת מהן מוצגות במקומה על המסך.
אופן הפירוק- משתמשים בפקודת % שזה חישוב שארית. כאשר נעשה x%10 נקבל את ספרת האחדות של x לאחר מכן נחלק את x ב-10 וכך נקבל את ספרת העשרות שלו (שגם אותה נעביר דרך % כדי לנטרל את הספרות שאחרי הנקודה)
הצגת תוצאה סופית של המשחק.
התוצאה מוצגת עם קווים סביבה, כדי להדגיש שזה סוף המשחק
הצגה של התוצאה הטובה ביותר עד כה, עם האות b ליד המספר
פונקציה זו לא משתמשת ב-refresh כדי להימנע מהשהיות מיותרות