לפני זמן-מה הצגתי כאן את הג'וק CD4017BE, הידוע בכינויו "מונה עשרוני" ("Decade Counter"), וציינתי שבימינו די קשה למצוא לו שימושים מעשיים. בתגובות לפוסט הנ"ל הוצעו אפשרויות ספורות, ומשני ג'וקים כאלה יצרתי גם קישוט אורות לסוכה, אך רוב הג'וקים שקניתי במבצע באיביי עדיין נותרו ללא שימוש. ובכן, מסתבר שיש עוד משהו שאפשר לעשות איתם – לפחות כתרגיל מחשבתי…
ברוח ההתחדשות הכללית של כל מיני אתרים, וכדי שהמערכת תפסיק להציק לי עם השדרוג של ערכת הנושא הקודמת, החלטתי לעבור לעיצוב חדש, מודרני ותקני יותר. ניסוי ראשוני הראה שערכת הנושא הזו מסתדרת לא רע עם העברית, ואפילו יש סיכוי שהיא תתאים קצת לתצוגה בסמארטפונים, טאבלטים ושאר צעצועים.
אם יש לכם משהו לומר בעד או נגד העיצוב החדש, אם נתקלתם בתקלות ובאגים מכל סוג שהוא, אנא דווחו בתגובות ונראה אם ומה אפשר לעשות בנדון 🙂
המיקרו-בקר של הארדואינו Uno הוא של 8 ביטים. זה של ה-MSP430 Launchpad עובד עם 16 ביטים, וללוחות מתקדמים כמו Arduino Due, Tiva-C Launchpad ואפילו Rapsberry Pi יש מיקרו-בקרים/מעבדים של 32 ביט. מה זה בעצם אומר? מה נותן המספר הזה? למה אין מיקרו-בקר של, נניח, 19 ביטים, ואיזה כדאי לבחור בשביל הפרויקט הבא שלכם?
הטרנזיסטור (Transistor) הוא רכיב פשוט יחסית, אך הוא מלווה בטרמינולוגיה שכאילו נועדה להקשות על החובב המתחיל. בפוסט זה אסתפק במינימום ההכרחי, כולל דוגמה קטנה, ואת ההבנה המעמיקה יותר נשמור לעתיד. זה לא אומר שזה יהיה קצר… 🙂
פוסט קצר וקל זה עוסק בפורט (Port) של ה-ATtiny85 – אמצעי הגישה שלנו לקריאה וכתיבה של ערכים דיגיטליים בפיני הקלט/פלט. לטייני יש אמנם פורט אחד בלבד, שמסומן באות B, אך גם מיקרו-בקרים אחרים ממשפחת AVR עובדים באותה שיטה, כך שמה שאציג כאן מתאים – עם התאמות מינימליות – גם לעבודה בארדואינו.
אחרי שהדגמנו את הפעולה התקינה של בקר המנועים, הגיע הזמן לתת לרובוט הניסיוני קצת אישיות ולהכין אותו לקראת פעולות מורכבות יותר. הדבר בוצע בשתי דרכים שיוצגו בפוסט זה: 1) הכנת מערכת תאורה, ו-2) מעבר ללוח קומפקטי עם ארדואינו Pro Mini. כרגיל, נפתח בהדגמה של הרובוט המשופצר בשטח:
כשאומרים "אופטימיזציה של קוד", הכוונה בדרך כלל לשינויים שיגרמו לו לרוץ מהר יותר, אבל לפעמים המטרה היא דווקא לעשותו חסכוני יותר בזיכרון – ופה ושם משיגים את שתי המטרות גם יחד. זהו המקרה של מפענח קוד המורס שבניתי. אז קודם כל, הנה המערכת בפעולה:
ברוכים הבאים לסדרת פוסטים חדשה: 4Probot, רובוט מבוסס ארדואינו שהוא ניסוי מתגלגל – תרתי משמע! המטרה כאן אינה להציג בניה של רובוט לפי תוכנית קבועה מראש, אלא לחקור ולהתנסות בטכניקות ובטכנולוגיות שונות שקשורות לעולם הרובוטים (ובמיוחד אלה הקטנים שנוסעים עצמאית על רצפת הבית…)
נסיעת המבחן הראשונה של 4Probot: בדיקת בקר המנועים
גילוי נאות: סדרת הפוסטים 4Probot הינה שיתוף פעולה עם אתר 4project.co.il – חנות אינטרנטית ישראלית לרכיבים, חלקים ומוצרים לתחומי המייקינג השונים. חלק מרכיבי הרובוט ניתנים לי על ידי אתר 4Project תמורת סקירה הוגנת וקישורים בבלוג, ובזה מסתכמת ההתקשרות המסחרית ביני לבין האתר.
מזה זמן רב אני מנהל מלחמת חורמה עקרונית נגד האיטיות של מסך TFT-LCD קטן ושל הספריות שנכתבו עבורו על ידי Adafruit. כבר הצגתי בעבר את אופטימיזציית ציור הקווים הקצרים, אך כידוע, עם האוכל בא התיאבון: גם האתגר עצמו מרתק, וגם יש לעיסוק הזה משמעות אמתית עבור פרויקט ספציפי שאני עובד עליו (וכנראה גם עבור פרויקטים עתידיים). אז אחרי הפסקה ממושכת אני חוזר אל המסך, והפעם אציג אופטימיזציה של הפעולה הבסיסית ביותר – ציור פיקסל יחיד.
כל מה שקורה בתוך המיקרו-בקר תלוי בשעון. פעימה של השעון היא עבורו היחידה האטומית, המינימלית, של זמן: זהו הרגע שבו משהו קורה, ובין שתי פעימות עוקבות לא קורה בעצם שום דבר – בין אם הרווח ביניהן הוא ששים ושתיים מיליארדיות השניה או שנה שלמה.
מיקרו-בקרים מדגם ATtiny85 עם שעון כיס
כמובן, הפעולות שמתבצעות במיקרו-בקר תלויות בתנועה של אלקטרונים בתוך החומרה, והתנועה הזו לוקחת זמן "ממשי" וגם יוצרת חום – שני אלמנטים שמציבים גבול עליון למהירות הפעולה. אף על פי כן, השעון במיקרו-בקרים רבים הוא אלמנט גמיש להפליא, הרבה יותר ממה שניתן לחשוב בעקבות עבודה בסיסית עם ארדואינו למשל. בפוסט זה אציג אפשרויות שעון שונות של ה-ATtiny85, מה הן נותנות לנו ואיך ניגשים אליהן. כמעט כל המידע, אגב, רלוונטי גם למיקרו-בקרים אחרים בארכיטקטורת AVR.