תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
MCP23008 הוא מרחיב קלט/פלט של 8 סיביות עם ממשק סידורי ופועל בין 1.8 ל -5.5 וולט, כך שהוא אידיאלי עבור ESP8266, Arduino, Raspberry Pi, שבבי PIC ועוד.
אם ראית את ההוראה האחרת שלי ב- MCP23017, ייתכן שאתה תוהה מדוע אני עושה אחת גם עבור MCP23008, מכיוון שהיא באמת גרסה קטנה יותר של אותו דבר.
הסיבות הן שהרשמים שלו שונים הן בשם והן במספר ואני רוצה להראות כיצד להשתמש במודול ספרייה מוכן. לא כולם מיומנים בעת שימוש ב- NodeMCU lua, לכן ברצוני להציג היבט זה של התכנות וכן כיצד להשתמש ב- MCP23008.
הספרייה והתוכניות זמינות באתר github.com.
גליון הנתונים של MCP23008 זמין מ- Microchip.
שלב 1: חיווט ה- MCP23008
ה- MCP23008 IC הוא בעל פריסה פשוטה ובניית לוח ממש קלה עבורו. אתה יכול גם להגדיר את המעגל על לוח לחם.
הצמד חיבורים בלוח שלי
- פין 18 (VDD) עד 3v3
- פין 9 (VSS) ל- GND
- פין 7 (NC) ל- GND (אין צורך)
- פין 1 (SCL) ל- ESP GPIO2
- פין 2 (SDA) ל- ESP GPIO0
- פין 5 (A0) ל- GND
- פין 4 (A1) ל- GND
- פין 3 (A2) ל- GND
- פין 6 (איפוס) ל- 3v3
חבר סיכות לקריאה ל- Gnd ביציאה A (סיכות 10 - 17)
הערה: כאן כל סיכות הכתובת מחוברות ל- Gnd כדי להשתמש ב- MCP23008 בכתובת 0x20 באוטובוס כתובת I2C.
אם היית משתמש בכתובת 0x21 אז A0 היה מחובר ל 3.3V, כאשר A1 ו- A2 מחוברים ל- Gnd.
באופן דומה, אם אתה משתמש בכתובת 0x22, יהיה עליך לחבר את A1 ל- 3.3V כאשר A0 ו- A2 מחוברים ל- Gnd.
וכו…
שלב 2: בניית לוח
השתמשתי בלוח רצועות Vero בגודל 25 מ"מ על 64 מ"מ (9 שורות x 25 חורים) לבניית הלוח שלי. הוא מעט הדוק, אך מכיוון שרוב הפינים הדרושים לך נמצאים משני צדי ה- IC, הוא מתאים למה שהוא צריך לעשות.
השתמשתי בשמונה סיכות ו -8 שקעי כותרת ליציאה A, כך שאוכל לחבר את המודולים השונים שלי וכן חיווט אחר לפרויקטים שונים. הוספתי סיכות Gnd ו- 3.3V נוספות שכן אני מוצא שתמיד יש מחסור כאלו בעת חיבור מודולים יחדיו.
שלב 3: שימוש במודול ספרייה
מודולי הספרייה מכילים בדרך כלל מבחר של שגרות משנה, פונקציות ומשתנים שאפשר לגשת אליהם באמצעות תוכנית אחרת. התוכנית עצמה אינה פועלת, אך ניתן לגשת לפונקציות שלה על ידי התוכנית המתקשרת. המשמעות היא שתוכל לקבל את שגרת המשנה שלך בתוך הספרייה ולהתקשר אליהם בכל פעם שתזדקק להם, ותעשה תוכנית שיחות קטנה. זה הופך להיות בעל ערך רב יותר אם יש לך הרבה תוכניות שונות המשתמשות באותן שגרות משנה, אינך צריך לכלול את שגרת המשנה בכל תוכנית.
הערה: יש לטעון את התוכנית mcp23008.lua לזיכרון ESP8266 כמו שאר התוכניות.
צירפתי כאן את התוכניות github.com וכן תוכנית פשוטה (test.lua) להראות שהספרייה פועלת.
ישנן לפחות 2 דרכים לכלול את הספרייה בתוכנית שלך.
לדרוש ("mcp23008")
mcp23008.begin (0x0, gpio2, gpio0, i2c. SLOW)
אוֹ
mcp = require ("mcp23008")
mcp.begin (0x0, gpio2, gpio0, i2c. SLOW)
שני הדברים הנ ל עושים את אותו הדבר, אך השיטה השנייה מאפשרת לך להשתמש במשתנה משלך במקום בשם התוכנית.
שלב 4: תוכנית מכונית קיט
כללתי את התוכנית KittCar23008.lua ו- KittLib.lua המשתמשת בספרייה כדי להראות את ההבדלים בכתיבת תוכניות בדרך זו. שתי התוכניות עושות את אותו הדבר.
תקע ה- 8 LED זמין ב- Ebay כערכה והוא ידוע כערכת DIY DIY LED LED זורמת 8 ערוצים, 99p מסין. אתה צריך להלחם אותו בעצמך.
הערה: אם נתקלת בבעיה בניסיון להריץ את תוכנית KittLib.lua, נסה לחבר לרגע את סיכת MCP23008 RESET ל- Gnd. אני יודע שזה ייתן קצר חשמלי ישיר (מכיוון שהוא מחובר ל- 3.3V) ואתה צריך לאפס את כל השאר. הוא פועל גם על ידי חיבור ל- Gnd באמצעות נגד של 10 אוהם, כנראה דרך טובה יותר לעשות זאת.
גיליתי גם ש- KittLib.lua ירוץ ללא בעיות לאחר הפעלת test.lua (אל תשאל אותי למה?)
ניסיתי דרכים שונות לפתור את בעיית התוכנית KittLib.lua, אך עד כה לא מצאתי סיבה הגיונית מדוע היא קורסת. למישהו יש רעיונות?
לא כתבתי את כל התוכניות האלה בעצמי, ולכן אינני יכול לומר מדוע יש בעיה, אם כי לאחר עיון בקידוד לא נראה שמשהו לא תקין.
שלב 5: 7 פלח LED
בדומה לתוכנית KittCar.lua לעיל, כללתי תוכנית עצמאית ותלויה בספרייה להנעת תצוגת LED של 7 קטעים.
שוב, שתי התוכניות עושות את אותו הדבר, אך מדגימות כיצד להשתמש במודול ספרייה שנכתב על ידי עצמך או על ידי מישהו אחר.
שלב 6: מסקנה
ניסיתי להדגים כיצד להשתמש במודולי קוד בתוך סביבת ה- Lua, ולהחיל אותו על IC ספציפי בו זמנית.
למרות שיש לי בעיה לעשות זאת, אני חושב שיש מספיק כדי להראות כיצד המודולים האלה עובדים כמו גם הדגמת יישום בחיים האמיתיים.