Tartalomjegyzék:
- 1. lépés: Az MCP23008 bekötése
- 2. lépés: Tábla felépítése
- 3. lépés: Könyvtári modul használata
- 4. lépés: Kitt Car program
- 5. lépés: 7 szegmens LED
- 6. lépés: Következtetés
Videó: NODEMCU LUA ESP8266 MCP23008 8 bites portbővítő IC -vel: 6 lépés
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
Az MCP23008 egy 8 bites I/O bővítő soros interfésszel, és 1,8 és 5,5 volt között működik, így ideális az ESP8266, Arduino, Raspberry Pi, PIC chipekhez.
Ha látta a másik Instructable -t az MCP23017 -en, akkor elgondolkodhat azon, miért teszek én is egyet az MCP23008 -hoz, mivel valójában ugyanannak a verziónak a kisebb változata.
Ennek az az oka, hogy a regiszterei névben és számban különböznek, és szeretném bemutatni, hogyan kell használni a kész könyvtári modult. Nem mindenki ügyes a NodeMCU lua használatakor, ezért szeretném bemutatni ezt a programozási szempontot, valamint az MCP23008 használatát.
A könyvtár és a programok elérhetők a github.com webhelyen.
Az MCP23008 adatlapja elérhető a Microchip -től.
1. lépés: Az MCP23008 bekötése
Az MCP23008 IC egyszerű elrendezésű, és a tábla felépítése viszonylag egyszerű. Az áramkört kenyértáblán is beállíthatja.
Pin Connections a fórumon
- Tű (18) (VDD) - 3v3
- 9. csap (VSS) a GND -hez
- 7. pin (NC) - GND (nem szükséges)
- 1. tű (SCL) az ESP GPIO2 -hez
- 2. tű (SDA) az ESP GPIO0 -hoz
- 5. tű (A0) a GND -hez
- 4. csap (A1) a GND -hez
- 3. csap (A2) a GND -hez
- 6. tű (RESET) 3v3 -ra
Csatlakoztassa a kiolvasandó csapokat az A port Gnd -jéhez (10–17. Érintkezők)
Megjegyzés: itt minden címcsap a Gnd -hez van csatlakoztatva, hogy az MCP23008 -at használja az I2C címbusz 0x20 -as címén.
Ha a 0x21 címet használná, akkor az A0 a 3.3V -hoz lenne csatlakoztatva, az A1 és A2 pedig a Gnd -hez.
Hasonlóképpen, ha a 0x22 címet használja, akkor az A1 -t a 3.3V -hoz kell csatlakoztatni, az A0 és az A2 pedig a Gnd -hez.
stb…
2. lépés: Tábla felépítése
25 mm x 64 mm -es (9 sor x 25 lyuk) Vero szalaglemezt használtam a tábla építéséhez. Kicsit szűk, de mivel a legtöbb csap, amire szüksége van, az IC mindkét oldalán található, ez megfelel annak, amit tennie kell.
8 tűt és 8 fejlécet használtam az A porthoz, hogy csatlakoztathassam a különböző moduljaimat, valamint más vezetékeket különböző projektekhez. Hozzáadtam extra Gnd és 3,3 V -os csapokat, mivel úgy látom, hogy ezekből mindig hiány van a modulok összekapcsolásakor.
3. lépés: Könyvtári modul használata
A könyvtári modulok általában olyan alrutinokat, funkciókat és változókat tartalmaznak, amelyeket egy másik program is elérhet. Maga a program nem fut, de a funkcióit a hívó program érheti el. Ez azt jelenti, hogy az alrutinokat a könyvtárban tárolhatja, és bármikor felhívhatja őket, amikor szüksége van rájuk, egy kis hívóprogramot létrehozva. Értékesebbé válik, ha sok különböző programja van, amelyek ugyanazokat az alrutinokat használják, akkor nem kell minden programba belefoglalni az alrutinokat.
Megjegyzés: az mcp23008.lua programot a többi programhoz hasonlóan be kell tölteni az ESP8266 memóriába.
A github.com programokat ide, valamint egy egyszerű programot (test.lua) is bemutattam, hogy a könyvtár működjön.
A könyvtárnak legalább két módja van a programba való bevonására.
igényel ("mcp23008")
mcp23008.begin (0x0, gpio2, gpio0, i2c. SLOW)
vagy
mcp = szükséges ("mcp23008")
mcp.begin (0x0, gpio2, gpio0, i2c. SLOW)
Mindkettő ugyanazt teszi, de a második módszer lehetővé teszi, hogy a saját változót használja a program neve helyett.
4. lépés: Kitt Car program
Felvettem a KittCar23008.lua programot és a KittLib.lua programot, amely a könyvtárat használja a programok ilyen módon történő írásbeli különbségeinek bemutatására. Mindkét program ugyanazt csinálja.
A 8 LED -es csatlakozó készlet az Ebay -től kapható, és 8 csatornás áramló víz LED -es DIY készletként ismert, 99p Kínából. Magának kell forrasztania.
Megjegyzés: Ha problémája van a KittLib.lua program futtatásával, próbálja meg pillanatok alatt csatlakoztatni az MCP23008 RESET pin -t a Gnd -hez. Tudom, hogy ez közvetlen rövidzárlatot eredményez (mivel 3.3V -ra van csatlakoztatva), és minden mást vissza kell állítania. Ez úgy is működik, hogy 10 ohmos ellenálláson keresztül csatlakozik a Gnd -hez, valószínűleg jobb módszer erre.
Azt is megállapítottam, hogy a KittLib.lua problémamentesen futna a test.lua futtatása után (Ne kérdezd, miért?)
Próbáltam különböző módszerekkel megoldani a KittLib.lua program problémáját, de eddig nem találtam logikus okot arra, hogy miért összeomlik. Van valakinek ötlete?
Nem magam írtam ezeket a programokat, így nem tudom megmondani, miért van probléma, bár a kódolás után nem látszik semmi nyilvánvaló hiba.
5. lépés: 7 szegmens LED
A fenti KittCar.lua programhoz hasonlóan egy önálló és egy könyvtárfüggő programot is beépítettem a 7 szegmenses LED kijelző vezérléséhez.
Ismétlem, mindkét program ugyanazt csinálja, de bemutatja, hogyan kell használni a saját vagy valaki más által írt könyvtári modult.
6. lépés: Következtetés
Megpróbáltam bemutatni, hogyan kell használni a kódmodulokat a Lua környezetben, és egyidejűleg alkalmazni egy adott IC -re.
Annak ellenére, hogy problémám akadt ezzel kapcsolatban, úgy gondolom, hogy elegendő ahhoz, hogy bemutassuk ezeknek a moduloknak a működését, valamint hogy egy valós alkalmazást is bemutathassunk.
Ajánlott:
64 bites RT rendszermag -összeállítás a Raspberry Pi 4B számára: 5 lépés
64 bites RT rendszermag -összeállítás Raspberry Pi 4B számára: Ez az oktatóanyag a 64 bites valós idejű kernel Raspberry Pi -re történő felépítésének és telepítésének folyamatát tárgyalja. Az RT Kernel kulcsfontosságú a ROS2 és más valós idejű IOT megoldások teljes funkcionalitása szempontjából. A kernelt x64 alapú Raspbianra telepítették, amely
Arduino Nano-MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő oktatóanyag: 4 lépés
Arduino Nano-MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő oktatóanyag: Az MMA8452Q egy intelligens, kis teljesítményű, három tengelyes, kapacitív, mikromágneses gyorsulásmérő, 12 bit felbontással. Rugalmas, felhasználó által programozható lehetőségek állnak rendelkezésre a gyorsulásmérő beépített funkciói segítségével, amelyek két megszakításra konfigurálhatók
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Python bemutató: 4 lépés
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Python bemutató: Az MMA8452Q egy intelligens, kis teljesítményű, három tengelyes, kapacitív, mikromágneses gyorsulásmérő, 12 bit felbontással. Rugalmas, felhasználó által programozható lehetőségek állnak rendelkezésre a gyorsulásmérő beépített funkciói segítségével, amelyek két megszakításra konfigurálhatók
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Java oktatóanyag: 4 lépés
Raspberry Pi MMA8452Q 3 tengelyes 12 bites/8 bites digitális gyorsulásmérő Java oktatóanyag: Az MMA8452Q egy intelligens, kis teljesítményű, három tengelyes, kapacitív, mikromágneses gyorsulásmérő, 12 bit felbontással. Rugalmas, felhasználó által programozható lehetőségek állnak rendelkezésre a gyorsulásmérő beépített funkciói segítségével, amelyek két megszakításra konfigurálhatók
DIY MusiLED, zenével szinkronizált LED-ek egy kattintásos Windows és Linux alkalmazással (32 bites és 64 bites). Könnyen újratelepíthető, könnyen használható, könnyen hordozható: 3 lépés
DIY MusiLED, zenével szinkronizált LED-ek egy kattintásos Windows és Linux alkalmazással (32 bites és 64 bites). Könnyen újratelepíthető, könnyen használható, könnyen hordozható: Ez a projekt segít 18 LED (6 piros + 6 kék + 6 sárga) LED-ek csatlakoztatásában az Arduino Boardhoz, és elemezni a számítógép hangkártyájának valós idejű jeleit, és továbbítani azokat a LED -ek, hogy felgyújtsák őket az ütéshatásoknak megfelelően (pergő, magas kalap, rúgás)