Charlieplexing היא טכניקה לשליטה על נוריות LED רבות באמצעות מספר סיכות קלט / פלט. Charlieplexing זהה לריבוב, אך הוא משתמש בהיגיון התלת-ממדי (קלט גבוה ונמוך) כדי להפחית את מספר הפינים באופן דרמטי ולהשיג יעילות על פני ריבוב. טכניקת Charlieplexing נקראת על שם הממציא שלה, Charlie Allen, שהמציא את הטכניקה בשנת 1995. בעבר השתמשנו בטכניקת ריבוב ב- Arduino כדי לממשק תצוגה בת 4 ספרות בת 7 קטעים והנעת מטריצת LED 8x8.
Charlieplexing מאפשר לשלוט על נוריות N * (N - 1), כאשר N הוא מספר הפינים. לדוגמא, ניתן לשלוט על 12 נוריות באמצעות 4 פינים של ארדואינו 4 * (4-1) = 12. נוריות LED הן דיודות, ובדיודות הזרם זורם בכיוון אחד בלבד. אז בצ'רליפקסינג, אנו מחברים שתי נוריות במקביל זו לזו אך בקוטביות הפוכה כך שרק נורית אחת נדלקת בכל פעם. כשמדובר בארדואינו או בלוחות מיקרו-בקר אחרים, לעולם אין לך מספיק סיכות קלט / פלט. אם אתה עובד על פרויקט שבו אתה צריך לממשק תצוגת LCD, חבורה של נוריות וכמה חיישנים, אז כבר חסר לך הפינים. במצב זה, אתה יכול charlieplex נוריות כדי להפחית את מספר הפינים.
במדריך זה אנו נשתמש בטכניקת Charlieplexing כדי לשלוט על 12 נוריות ה- LED באמצעות 4 פינים של Arduino.
רכיבים נדרשים
- ארדואינו UNO
- נורית LED (12)
- 4 נגדים (330 אוהם)
- חוטי מגשר
- קרש לחם
תרשים מעגל
בעיקרון, בתרשים מעגל זה, 12 נוריות LED מחוברות עם 4 פינים של ארדואינו דרך נגדים. כל סיכה של ארדואינו מחוברת לשלושה נוריות נוריות. ישנן שש קבוצות של נוריות נוריות, ובכל קבוצה מחוברות 2 נוריות, ושתי הנוריות מקבילות זו לזו אך עם קוטביות הפוכה כך שרק נורית אחת נדלקת בכל פעם. אז על פי דיאגרמת המעגל להפעלת led 1, צריך להיות אות HIGH על סיכה A וסיכון LOW על סיכה B, ויש לנתק את סיכה C ו- D. אותו נוהל יבוצע גם עבור נוריות LED האחרות. הטבלה המלאה של הגדרות הסיכה עבור כל נורית LED מובאת להלן:
לד | סיכה 8 | סיכה 9 | סיכה 10 | סיכה 11 |
1 | גָבוֹהַ | נָמוּך | קֶלֶט | קֶלֶט |
2 | נָמוּך | גָבוֹהַ | קֶלֶט | קֶלֶט |
3 | קֶלֶט | גָבוֹהַ | נָמוּך | קֶלֶט |
4 | קֶלֶט | נָמוּך | גָבוֹהַ | קֶלֶט |
5 | קֶלֶט | קֶלֶט | גָבוֹהַ | נָמוּך |
6 | קֶלֶט | קֶלֶט | נָמוּך | גָבוֹהַ |
7 | גָבוֹהַ | קֶלֶט | נָמוּך | קֶלֶט |
8 | נָמוּך | קֶלֶט | גָבוֹהַ | קֶלֶט |
9 | קֶלֶט | גָבוֹהַ | קֶלֶט | נָמוּך |
10 | קֶלֶט | נָמוּך | קֶלֶט | גָבוֹהַ |
11 | גָבוֹהַ | קֶלֶט | קֶלֶט | נָמוּך |
12 | נָמוּך | קֶלֶט | קֶלֶט | גָבוֹהַ |
לאחר החיבורים החומרה שלי נראית כמו התמונה למטה. כפי שניתן לראות מהתמונה יש שש קבוצות של נוריות LED ובכל קבוצה 2 נוריות מחוברות זו לזו. מודול ה- Arduino UNO מופעל על ידי יציאת USB.
הסבר קוד
קוד מלא עם סרטון עבודה ניתן בסוף הדרכה זו, כאן אנו מסבירים את התוכנית המלאה להבנת עבודתו של הפרויקט.
בתחילת קוד הארדואינו הגדירו את כל הפינים אליהם מחוברים נוריות. לאחר מכן, הגדירו את המספר הכולל של נוריות LED ומצב LED.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
כעת צור מטריצה להפעלה וכיבוי של נוריות ברצף, באפשרותך לשנות את הרצף על ידי שינוי מצב הסיכה ותצורת הסיכה. על פי מטריצה זו, LED1 יופעל תחילה לאחר מכן LED2 וכן הלאה.
מטריצה int = { // PIN_CONFIG PIN_STATE // ABCDABCD {{OUTPUT, OUTPUT, INPUT, INPUT}, {HIGH, LOW, LOW, LOW}}, {{OUTPUT, OUTPUT, INPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, {{INPUT, OUTPUT, OUTPUT, INPUT}, {LOW, HIGH, LOW, LOW}}, …………………………………. ……………………………..
כעת בתוך לולאת הריק , התוכנית תבצע את מטריצת LED_COUNT בכדי להדליק ולכבות נוריות ברצף הנתון.
לולאה בטלה () { עבור (int l = 0; l <LED_Num; l ++) { lightOn (l); עיכוב (1000 / LED_Num); }
כעת חבר את הארדואינו למחשב הנייד ובחר את הלוח והיציאה כהלכה ואז לחץ על כפתור ההעלאה. לאחר העלאת הקוד, נוריות ה- LED שלך צריכות להתחיל להבהב.
אז ככה ניתן להשתמש בטכניקת Charlieplexing כדי לשלוט על נוריות רבות באמצעות פחות סיכות Arduino. אתה יכול להשתמש בשיטה זו כדי לשלוט במספר רב יותר של נוריות. לדוגמא, אם ברצונך לשלוט על 20 נוריות נוריות, פשוט ערוך את המטריצה והוסף את התנאים לנותרות נוריות.
מצא את הקוד המלא וסרטון העבודה למטה.