מכיוון שהנסיבות (ודואר ישראל?) מעכבות מעט את ההתקדמות המעשית בפרויקט, אנצל את הפוסט הזה להסבר תיאורטי-למחצה של אופן פעולת המקלדת של ה-TI99/4A העתיק.
אנחנו מוקפים בלוחות מקשים. חלקם אמנם וירטואליים, מצוירים על מסכי מגע, אך רבים אחרים עדיין פיזיים לגמרי: מקלדת המחשב, שלט רחוק, אינטרקום של בית משותף, כספומט ועוד. כולם עובדים על אותו עיקרון, פחות או יותר: הלחיצה הפיזית על כפתור מסוים גורמת לסגירה של מעגל חשמלי ספציפי, והמעבד שבהתקן או המחשב מזהה את הסגירה הזו ויודע לפענח אותה. אבל מה בדיוק נסגר, ואיך?
בתמונה למעלה מופיע לוח מקשים בסיסי ביותר, בעל תריסר מקשים. שימו לב שבפס החיבורים שלו שמונה חוטים בלבד, ואגלה לכם כבר עכשיו שאחד מהם אינו בשימוש כלל. כלומר, כל חוט מייצג איכשהו יותר ממקש אחד. דרך אחת לעשות זאת היא בעזרת קוד בינארי: אם נניח ששניים מהחוטים משמשים לאספקת חשמל, החמישה הנותרים יכולים לייצג שתיים בחזקת חמש אפשרויות שונות – 32 מקשים נפרדים. אבל לשם כך דרוש מעבד פנימי מתוחכם יחסית, והמון חיווטים פנימיים.
מה שקורה בפועל פשוט הרבה יותר. כל חוט מתוך השבעה מחובר לשורה אחת או לטור אחד של מקשים. דמיינו ארבעה חוטים אופקיים, קצת מעליהם שלושה אנכיים, וכל ההצטלבויות ביניהם הן בדיוק מתחת למרכזי המקשים: זה בערך מה שיש שם בפנים. הלחיצה בסך הכל יוצרת מגע זמני בין חוט אופקי מסוים לחוט אנכי מסוים, ו"מקצרת" אותם חשמלית. אם אני יודע איזו קבוצת חוטים היא השורות ואיזו היא הטורים, אני יכול לעבור על כל שילוב אפשרי של שני חוטים (אחד מכל קבוצה), לבדוק אם יש הולכה ולהסיק איזה מקש לחוץ, אם בכלל. למעשה, בשיטה הזו אפשר לקרוא לחיצות על יותר ממקש אחד בו זמנית!
הנה סרטון שמדגים את אופן הפעולה הבסיסי של לוח המקשים. הנוריות מחוברות לארבעת חוטי השורות, ובמהלך הסרטון אני מחבר את מקור החשמל לשלושת חוטי הטורים:
עוד עובדה שמקלה עלינו מאד את החיים היא שלחיצה פיזית של אדם על מקש היא פעולה ממושכת, במונחים של מיקרו-קונטרולרים. לכן, אני לא צריך לבדוק את כל צמדי החוטים בו-זמנית, ומספיק לעבור עליהם אחד-אחד לפי הסדר. אם נניח שהלחיצה הזריזה ביותר יוצרת מגע למשך חמישים אלפיות השניה, ויש לי 12 מקשים, זה מעניק לי 4.17 אלפיות השניה לכל בדיקה – וזה המון.
בפס שחיבר בין מקלדת ה-TI99/4A ללוח האם היו 15 חיבורים, ואילו במקלדת עצמה יש 48 מקשים. את השרטוט הסכמטי של החיבורים מצאתי באתר הזה, אם כי לא לגמרי ברור מה קורה שם – יש "מטריצה" מרכזית של 6×8 מקשים, שניים "חסרים" בשורה התחתונה למטה ורק אחד נוסף מבחוץ. בכל אופן, זה בהחלט מספיק מידע כדי להתחיל לעשות ניסויים ולמפות את המקלדת כמו שצריך בשביל הפרויקט.
בדיקת זוגות החוטים תיעשה, כמובן, באמצעות הארדואינו, אבל ממש לא מתחשק לי לתפוס 15 חיבורים רק בשביל העניין הזה. אם נחלק את חוטי המקלדת לשתי קבוצות – שמונת הטורים ושבע השורות (אני מתייחס למקש החיצוני בשרטוט בתור שורה נפרדת) – אפשר לחסוך חיבורים ולשלוח זרם (או לקרוא אותו) מכל החוטים בקבוצה מסוימת דרך רכיב שנקרא Multiplexer. אבל על כך בפעם הבאה…
היי עידו, אחלה כתבות! אני התחלתי לקרוא אתמול ושמח לראות כתבות חדשות עולות! תודה
תוספת קטנה וחביבה בנושא הממשק הפנימי של מקלדות ומה אפשר לעשות איתו:
http://www.youtube.com/watch?v=a3NxQ60E72k