Ebben az oktatóanyagban egy 8x8 LED-es mátrix görgető kijelzőt tervezünk meg az Arduino Uno segítségével, amely gördülő ábécéket mutat.
A 8x8 LED-mátrix 64 LED-et (fénykibocsátó diódát) tartalmaz, amelyek mátrix formájában vannak elrendezve, ezért a neve LED-mátrix. Ezt a Mátrixot úgy fogjuk elkészíteni, hogy ezt a 64 LED-et forrasztjuk az előlapra vagy a DOT NYÁK-ra. A LED-ek bármilyen színűek lehetnek, válassza ki azokat, amelyek elérhetők Önnek. Ezután írunk egy programot az Arduino számára, hogy vezérelje ezt a 64 LED-es mátrixot. Az UNO a program szerint megfelelő LED-ekkel látja el a karaktereket gördülő módon.
Szükséges alkatrészek:
- Arduino Uno
- 64 LED
- Perfboard egyéb forrasztó szerszámokkal
- 1KΩ ellenállás (8 db)
- Tápegység (5v)
Áramkör és működési magyarázat:
64 LED van elrendezve mátrix formában. Tehát 8 oszlopunk és 8 sorunk van. Ezen sorok és oszlopok alatt a sorban lévő összes pozitív terminál összegyűlik. Minden sorhoz tartozik egy közös pozitív terminál az adott sor mind a 8 LED-jéhez. Az alábbi ábra mutatja,
Tehát 8 sorban 8 közös pozitív terminálunk van. Tekintsük az első sort, amint az az ábrán látható: 8 D57-től D64-ig terjedő LED-nek közös pozitív kapcsa van, és ezeket 'POSITIVE0' jelöli. Most, ha azt akarjuk, hogy az egyik vagy az összes LED világítson a mátrix első sorában, akkor be kell kapcsolnunk a LED mátrix PIN0-ját. Hasonlóképpen, ha bármely LED-et (vagy az összeset) meg akarjuk világítani bármelyik sorban, akkor be kell táplálnunk az adott sor megfelelő közös pozitív kapocscsapját.
Ennek még nincs vége, és ha a MATRIX ROWS-ot pozitív kínálattal hagyja, akkor nem lesz semmi. Földelni kell a LED-ek negatívumait, hogy ragyogjanak. Tehát a 8x8 LED-es mátrixban az oszlopokban található LED-ek összes negatív kapcsát nyolc közös negatív terminál alkotja , mint az első oszlop összes negatív kapcsa a PIN-A1-hez (NEGATIVE7) csatlakozik. Ez látható az alábbi ábrán:
Figyelni kell ezekre a csapokra, miközben forrasztjuk a LED-eket az Perfboardon.
Ha az első oszlopban bármelyik LED-et földelni kell, akkor a MATRIX PIN-A1 (NEGATIVE7) jelét földeljük, és ez az első oszlop összes LEDjét földelni fogja. Ugyanez a folyamat megy mind a hét hét közös negatív oszlopra.
Azóta tudja, hogyan működik a közös pozitív és a negatív. Állítsuk össze őket, hogy lássuk, hogyan működnek együtt, és a 8x8 LED-es mátrix görgetésének utolsó áramköre így fog kinézni:
8x8 LED-mátrix vezetése multiplexeléssel:
Tegyük fel, hogy be akarjuk kapcsolni a LED57-et, majd be kell kapcsolnunk az UNO PIN0-ját, és földelnünk kell az UNO PIN-8-át. A LED57 és a LED50 bekapcsolásához be kell kapcsolnunk a PIN0, PIN1 jeleket, és földelni kell a PIN8, PIN9 jeleket. De ezzel nem csak a D57, D50, hanem a D49, D58 is bekapcsol. Ennek elkerülése érdekében a Multiplexing nevű technikát alkalmazzuk. Ezt a Multiplex technikát már részletesen megvitattuk a 8x8 LED-es mátrixban; részletes magyarázatért olvassa el a cikket. Itt röviden elmagyarázzuk a multiplexelést.
Az emberi szem nem képes megragadni 30 HZ-nél nagyobb frekvenciát. Ez akkor van, ha egy LED folyamatosan be- és kikapcsol, 30 Hz vagy annál nagyobb sebességgel. A szem látja, hogy a LED folyamatosan BE van kapcsolva. Ez azonban nem így van, és a LED valóban folyamatosan be- és kikapcsol. Ezt a technikát Multiplexelésnek hívják.
Tegyük fel például, hogy csak a LED57-et és a LED50-et akarjuk bekapcsolni a D49 és a D58 bekapcsolása nélkül. A trükk az, hogy először az első sorban biztosítjuk az áramellátást, hogy bekapcsoljuk a LED57-et, és várjunk 1mSEC-re, majd kikapcsoljuk. Ezután energiát kapunk a második sorból, hogy bekapcsoljuk a LED50-t, és várjunk 1mSEC-re, majd kikapcsoljuk. A ciklus folyamatosan zajlik nagy frekvenciával, és a LED57 és a LED50 gyorsan be- és kikapcsol, és úgy tűnik, hogy mindkét LED folyamatosan be van kapcsolva a szemünk számára. Azt jelenti, hogy egyszerre csak egy sort látunk el energiával, kiküszöbölve annak esélyét, hogy más sorokban más LED-eket kapcsoljunk be. Ezt a technikát fogjuk használni az összes karakter megjelenítésére.
Van egy LedControlMS.h nevű könyvtár is, amely gondoskodik a multiplexelés ezen összetettségének gondozásáról, ahol csak azt a karaktert vagy számot kell megadnia, amelyet LED-mátrixra szeretne nyomtatni. További részletekért ellenőrizze ezt az Arduino LED-mátrixot a MAX7219 projekttel.
Programozási magyarázat:
Kódkönyvünkben minden karakterhez tizedesértéket írtunk, és ezeket az értékeket beprogramoztuk az Arduino-ba. A program azt írta, hogy ezeket az értékeket 0,2 másodpercenként a következő sorra helyezi át, ezt a karakterek felfelé görgetésével fogják látni, ez nagyon egyszerű.
A megjelenítendő karakterek megváltoztatásához egyszerűen cserélje ki a char ALPHA tömb értékét az alább megadott karakterértékeknek megfelelően, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,96,96,96,102,60,0, 0,0, // C 120,108,102,102,102,108,120,0, 0,0, D 126,96,96,120,96,96,126,0, 0,0, E E 126,96,96,120,96,96,96,0, 0,0, F 60,102,96,110,102,102,60, 0, 0,0, // G 102,102,102,126,102,102,102,0, 0,0, // H 60,24,24,24,24,24,60,0, 0,0, // I 30,12,12,12, 12,108,56,0, 0,0, // J 102,108,120,112,120,108,102,0, 0,0, // K 96,96,96,96,96,96,126,0, 0,0, // L 99,119,127,107,99, 99,99,0, 0,0, // M 102,118,126,126,110,102,102,0, 0,0, N: 60,102,102,102,102,102,60,0, 0,0, // O 124,102,102,124,96,96,96,0, 0,0, P 60,102,102,102,102,60,14,0, 0,0, Q Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,96,60,6,102,60,0, 0,0, S 126, 24,24,24,24,24,24,0, 0,0, // T 102,102,102,102,102,102,60,0, 0,0, // U 102,102,102,102,102,60,24,0, 0,0, // V 99,99,99 109 107 127 119,99,0, 0,0, // W 102,102,60,24,60,102,102,0, 0,0, // X 102,102,102,60,24,24,24,0, 0,0, // Y 126,6,12, 24,48,96,126,0, 0,0, // Z
Például, ha a DAD-t meg szeretné jeleníteni a LED-mátrixon, akkor először cserélje ki a Characters értékeket a char ALPHA tömbben úgy, hogy a fenti listából a D, A és D karaktereket írja be:
char ALPHA = {0,0,0,0,0,0,0,0,0,0,0,0, 120,108,102,102,102,108,120,0,0,0, 24,60,102,126,102,102,102,0,0,0, 120,108,102,102,102,108,120,0,0, 0, 0,0,0,0,0,0,0,0,0,0,0,0};
Az összes érték most 5 * 10 = 50 érték, tehát
Cserélje be, (int x = 0; x <142; x ++) // 150-8 (a túlcsordulás leállításához) {…….. With, for (int x = 0; x <42; x ++) // 50-8 (a túlcsordulás leállításához) {……..
Tehát csak meg kell változtatnia a számot.
Ezzel elvégezte a programozást, és most görgethet bármilyen szöveget a 8x8 LED-es mátrixon, ellenőrizheti az alábbi Teljes kódot egy bemutató videóval.