כולנו מכירים קוביות ולעתים קרובות שיחקנו במשחק LUDO או SANP SIDI (נחש & סולמות) באמצעות קוביות. קוביות היא תיבה מוצקה מסוג סקווירא המכילה 6 מספרים שונים על כל צדיה. אנחנו זורקים קוביות על משטח כדי לקבל מספר אקראי בזמן המשחק. בפרויקט זה ניסינו לשכפל אותו בקוביות דיגיטליות באמצעות לוח undu של arduino. במקום זריקת הקוביות, כאן עלינו ללחוץ על כפתור כדי לקבל מספר אקראי בין 0 ל -6.
רכיבים נדרשים
- ארדואינו UNO
- תצוגת שבעה קטעים (אנודה משותפת)
- ללחוץ על כפתורים
- חוטי חיבור
- לוח לחם
- נגד 1 k
- ספק כוח
תרשים מעגל והסבר
כפי שמוצג במעגל הקוביות הדיגיטאלי לעיל, ארדואינו משמש לשליטה בתהליך כולו. במעגל משתמשים בשני כפתורי לחיצה - אחד להפעלת הקוביות והשני לאיפוס הקוביות. ארדואינו קורא את שני הכפתורים הללו ומבצע את הפעולה. תצוגת שבעה קטעים משמשת להצגת תוצאת הקוביות.
ארדואינו מבצע ברציפות את פונקציית ה- rand () ואחסן את ערכו במשתנה זמני. כאשר לחצן הקוביות נלחץ מחושב הערך המאוחסן ומוצג בשבעה קטעים בשיטה המתאימה (ראה חלק בתכנות במאמר).
כאן במעגל קוביות זה, תצוגת שבעה קטעי אנודה משותפת משמשת להצגת מספרי קוביות, המחוברים ישירות למספרי סיכה דיגיטליים ארדואינו 6, 5, 4, 3, 2, 1, 0. וסיכת אנודה נפוצה של שבעה קטעים היא מחובר לנגד +5 וולט 220 אוהם. שני כפתורי לחיצה מחוברים גם הם כלומר כפתור קוביות וכפתור איפוס המחוברים לסיכה הדיגיטלית 14 (A0) ו- 15 (A1) ביחס לקרקע.
הסבר קוד
חלק מתכנות של פרויקט זה ממלא תפקיד חשוב מאוד להצגת מספר קוביות דיגיטלי אקראי בתצוגת שבעה קטעים. ארדואינו אינו מכיל שום ספריה לתצוגת שבעה קטעים. אז יצרנו קוד שלם בלי להשתמש באף ספרייה.
קודם כל אנו בוחרים סיכה דיגיטלית לתצוגת שבעה קטעים.
סיכה int = {6,5,4,3,2,1,0};
אחריה אנו יוצרים מערך של 6 ספרות של קוביות כלומר 1, 2, 3, 4, 5 ו -6.
ספרת תו = {0x02, 0x79, 0x24, 0x30, 0x19, 0x12};
עכשיו נתנו הוראות להשתמש בסיכת ארדואינו כפלט.
הגדרת חלל () {עבור (int i = 0; i <7; i ++) pinMode (pin, OUTPUT); pinMode (קוביות, INPUT); pinMode (resett, INPUT); digitalWrite (קוביות, HIGH); digitalWrite (resett, HIGH);
אנו שולחים קוד להצגת אפס בתצוגת שבעה קטעים כברירת מחדל.
temp temp = 0x40; עבור (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (סיכה, temp1); temp = temp >> 1; }
כעת אנו מריצים את הפונקציה rand () כדי לקבל מספר אקראי.
int temp = ראנד ();
וכשאנחנו לוחצים על תוכנית כפתורי הקוביות ממפים תחילה את המספר האקראי הזה ואז שולחים את המספר לתצוגת שבעה קטעים באמצעות אופרטור קצת חכם.
אם (digitalRead (קוביות) == 0) {int k = temp% 6; temp = ספרה; לַחֲכוֹת(); עבור (int i = 0; i <7; i ++) {int temp1 = temp & 0x01; digitalWrite (סיכה, temp1); temp = temp >> 1; } עיכוב (200); }
ואותו כפתור איפוס.
בתוכנית זו אנו שולחים ביט אחד בכל פעם. כאן אנו מיישמים לולאה עבור אשר פועלת 7 זמן לשליחת נתונים לכל קטע אחד אחד.