הנה חידה. יש לכם לוח עם מיקרו-בקר, נניח ארדואינו, ונורית LED אחת מרוחקת שאתם צריכים לשלוט בה. לכמה חוטי חשמל תזדקקו כדי לחבר ביניהם? התשובה היא, כמובן, שניים: אחד לאספקת (או אי-אספקת) מתח, והשני ל-Ground. לא, זו לא היתה החידה, רק ההקדמה. החידה היא: לכמה חוטים תזדקקו אם במקום נורית אחת תצטרכו לשלוט בשתיים?
התשובה האינטואיטיבית היא שלושה: שניים למתח ואחד משותף ל-Ground (או להיפך). אבל אם היישום הספציפי אינו מצריך הפעלה של שתי הנוריות בו-זמנית, אפשר להסתפק בשניים! בואו ונראה איך…
נורית LED, כפי שמרמזים ראשי התיבות שלה Light Emitting Diode, היא קודם כל דיודה. כלומר, אם נחבר אותה "הפוך" (הרגל הקצרה לפלוס והארוכה ל-Ground), לא יקרה לה כלום – פשוט לא יעבור זרם במעגל והיא לא תאיר. כל זה בהנחה, כמובן, שאנחנו עובדים במתחים וזרמים נמוכים.
פתרון החידה מנצל את העובדה הזו, והוא מבוסס על חיבור במקביל של שתי נוריות LED למקור המתח, כשאחת מהן הפוכה. כשהמתח הוא בכיוון אחד, אחת הנוריות תדלוק כרגיל, ואילו השניה תתפקד כדיודה פשוטה ותישאר כבויה. אם נהפוך את כיוון המתח, הנוריות יתחלפו בתפקידים – ואם לא נפעיל כל מתח, שתי הנוריות יהיו כבויות! הנה החיווט ואחריו קוד ההדגמה התואם עבור ארדואינו:
// 2-Wire 2-LED control void setup() { pinMode(7, OUTPUT); pinMode(8, OUTPUT); } void setPins(int v1, int v2) { digitalWrite(7, v1); digitalWrite(8, v2); } void loop() { setPins(HIGH, LOW); delay(300); setPins(LOW, HIGH); delay(300); setPins(LOW, LOW); delay(300); }
אפרופו, אפשר לדמות הדלקה בו-זמנית של שתי הנורות באמצעות החלפה מהירה של כיוון המתח, אלא שיש לכך מחיר בעוצמת ההארה.
ועכשיו, המשך החידה (למתקדמים): אם אנחנו יכולים לשלוט בשתי נוריות LED באמצעות שני חוטים בלבד, בכמה נוריות נוכל לשלוט באמצעות 3, 4 או N חוטים? את התשובה המפורטת והמעניינת אציג בפוסט ההמשך. מי שלא יכול לחכות עד אז מוזמן לעיין בספר החינמי Compiled Tips 'N Tricks Guide של חברת Microchip (אם כי רובו טכני ולא רלוונטי למתחילים – ראו הוזהרתם).
הערה אדמיניסטרטיבית: הוספתי לפוסטים, למטה, אופציה לתיוג ברשתות חברתיות. אם זה מעצבן אתכם, או מוצא חן בעיניכם, או לא עובד לכם כמו שצריך – הגיבו בכיף.
אהלן עידו !
אבל איך בכל זאת אתה לא חיברת את המעגל הזה לאף פין של Ground ?
בארדואינו, פין פלט במצב LOW מתפקד באופן דומה ל-GND.
לפי בדיקה שלי ( על הנייר ) 3 חוטים ישלטו ב6 לדים , 4 ישלטו ב8 ו5 ישלטו ב16 לדים .
לפני שאגיד אם זה נכון או לא… איך חישבת?
עם דף ועט – פשוט ציירתי את החוטים ומשכתי בינהם לדים .
ד"א – ב5 חוטים טעיתי וזה לא 16 .
אני מפחד לחשוב איך הדף נראה 🙂
תרווח קצת את הציור כדי שתוכל לצייר ולספור בשיטתיות. צדקת לגבי 3 חוטים, המספרים האחרים נמוכים מדי!
או שתנסה לחשוב על זה קצת יותר מתמטית – זה לא לגמרי טריוויאלי למי שלא בתחום, אבל גם לא בשמיים.
טוב … עקב הבעייתיות בלחשוב בשעות אלו הצצתי בספר – ולכן לא אכתוב את הפיתרון עד לטור הבא שלך ( אני בטוח שתסביר יותר טוב ) .
מה שכן , הנוסחא מחייבת לסדר את הנגדים באופן מדוייק (בלי להשאיר להם שביל לברוח ) .
אם לדוגמא בתרשים בספר הנגד שמחובר לgp0 וללד1,2 היה מחובר לgp1 ולאותם לדים אז כשgp2=1 וgp0=0 במקום שלד 5 יידלק אז לדים 3ו2 ידלקו
זה נכון או שאני טועה ?
והדף נראה רע (:
אם הבנתי נכון, הנגדים נמצאים שם רק בשביל שהנוריות לא יישרפו, והמיקום שלהם נקבע רק כדי להבטיח שהמעגל הספציפי עבור כל נורית שהיא יכלול בדיוק נגד אחד. במילים אחרות: אני חושב שאתה טועה, ותסתכל שוב מה ההגדרה של Z שם.
מצד שני, מה אני יודע? קח מטריצה ותתחיל לחבר 🙂
אדיר !
הנגדים חייבים להיות שם כדי שזה יעבוד , קח את הדוגמא בספר אבל תוריד את הנגדים – אם נרצה להדליק את לד5 אז המתח שנשלח יהיה gp2=1 וgp0=0 אבל אז גם לדים 3ו2 ידלקו כי הם גם במעגל ( בהנחה והחשמל מספיק ל3 לדים, אבל בכל מקרה לא יהיה מצב שבו רק לד5 ידלק ).
השאלה היא מה קורה אם הנגדים יהיו כמו בדוגמא שנתתי בתגובה מעל . הייתי רוצה לבדוק אבל הערכה שלי עוד לא הגיעה מסין .
אם כבר, אז לדים 3 ו-1, לא 3 ו-2. הם באותו כיוון כמו 5. מצב "Z" של GP1 הוא זה שאמור למנוע את ההידלקות שלהם – אני אבדוק את הנושא לקראת הפוסט הבא.
מקסים!
תודה – כתבה מעניינת וסגנון כתיבה קל וחביב.