Šajā apmācībā mēs izstrādāsim 8x8 LED matricas ritināšanas displeju, izmantojot Arduino Uno, kurā tiks parādīti ritināmie alfabēti.
8x8 LED matricā ir 64 gaismas diodes (gaismas diodes), kuras ir sakārtotas matricas formā, tāpēc nosaukums ir LED matrica. Mēs gatavosim šo Matrix, pielodējot šos 64 gaismas diodes uz perfboard vai DOT PCB. Gaismas diodes var būt jebkuras krāsas, izvēlieties tās, kuras ir pieejamas ar jums. Tad mēs uzrakstīsim programmu Arduino, lai kontrolētu šo 64 LED matricu. ANO saskaņā ar programmu nodrošina atbilstošas gaismas diodes, lai parādītu rakstzīmes ritināšanas veidā.
Nepieciešamās sastāvdaļas:
- Arduino Uno
- 64 gaismas diodes
- Perfboard ar citiem lodēšanas instrumentiem
- 1KΩ rezistors (8 gab.)
- Barošanas avots (5v)
Ķēdes un darba skaidrojums:
Ir 64 gaismas diodes, kas sakārtotas matricas formā. Tātad mums ir 8 kolonnas un 8 rindas. Šajās rindās un kolonnās visi pozitīvie spailes pēc kārtas tiek apvienoti. Katrai rindai ir viens kopīgais pozitīvais terminālis visiem 8 šajā rindā esošajiem LED. Tas parādīts zemāk redzamajā attēlā,
Tātad 8 rindās mums ir 8 kopīgi pozitīvi termināļi. Apsveriet pirmo rindu, kā redzams attēlā, 8 gaismas diodēm no D57 līdz D64 ir kopīgs pozitīvs spaile, un tās apzīmē ar “POSITIVE0”. Ja mēs vēlamies, lai viena vai visas gaismas diodes mirdz matricas pirmajā rindā, mums vajadzētu darbināt LED matricas PIN0. Tāpat, ja mēs vēlamies kvēlot jebkuru LED (vai visu) jebkurā ROW, mums ir jāiedarbina attiecīgās attiecīgās rindas attiecīgā kopējā pozitīvā termināla tapa.
Tas vēl nav beidzies, un tikai MATRIX ROWS atstāšana ar pozitīvu piedāvājumu neko nedos. Mums jāsamazina gaismas diodes negatīvie, lai tos spīdētu. Tātad 8x8 LED matricā visi jebkurā kolonnā esošo gaismas diožu negatīvie spailes tiek apvienoti, veidojot astoņus kopējos negatīvos terminālus, tāpat kā visi negatīvie spailes pirmajā kolonnā ir savienoti kopā ar PIN-A1 (NEGATIVE7). Tas parādīts zemāk redzamajā attēlā:
Lodējot LED uz Perfboard, vajadzētu pievērst uzmanību šīm tapām.
Ja mums pirmajā kolonnā ir nepieciešams iezemēt jebkuru gaismas diodi, tad mēs iezemēsim MATRIX PIN-A1 (NEGATIVE7), un tas iezemēs visus gaismas diodes pirmajā kolonnā. Tas pats process notiek ar visām pārējām septiņām kopīgajām negatīvajām slejām.
Kopš tagad jūs zināt, kā darbojas kopīgais pozitīvais un kopīgais negatīvais. Saliksim tos kopā, lai redzētu, kā viņi strādā kopā, un pēdējā ķēde 8x8 LED matricas displeja ritināšanai izskatīsies šādi:
8x8 LED matricas vadīšana, izmantojot multipleksēšanu:
Pieņemsim, ka mēs vēlamies ieslēgt LED57, tad mums jāieslēdz UNO PIN0 un jānoslogo UNO PIN-8. Tagad, lai ieslēgtu gan LED57, gan LED50, mums jāieslēdz PIN0, PIN1 un jāmaina PIN8, PIN9. Bet šādi rīkojoties, tiks ieslēgti ne tikai D57, D50, bet arī D49, D58. Lai izvairītos no tā, mēs izmantojam tehniku, ko sauc par multipleksēšanu. Mēs jau detalizēti apspriedām šo Multiplex tehniku 8x8 LED matricā; izlasiet šo rakstu, lai saņemtu detalizētu skaidrojumu. Šeit mēs īsi izskaidrojam multipleksēšanu.
Cilvēka acs nevar uztvert frekvenci, kas lielāka par 30 HZ. Tas ir, ja gaismas diode nepārtraukti ieslēdzas un izslēdzas ar ātrumu 30 Hz vai vairāk. Acs redz gaismas diode kā nepārtraukti ieslēgta. Tomēr tas tā nav, un LED faktiski pastāvīgi ieslēdzas un izslēdzas. Šo tehniku sauc par multipleksēšanu.
Teiksim, piemēram, mēs vēlamies ieslēgt tikai LED57 un LED50, neieslēdzot D49 un D58. Triks ir tāds, ka vispirms mēs nodrošināsim enerģiju pirmajai rindai, lai ieslēgtu LED57 un gaidītu 1mSEC, un pēc tam to izslēgsim. Tad mēs nodrošināsim enerģiju otrajai rindai, lai ieslēgtu LED50, un gaidīsim 1mSEC, pēc tam to izslēgsim. Cikls notiek nepārtraukti ar augstu frekvenci, un LED57 un LED50 ātri ieslēgsies un izslēgsies, un abas gaismas diodes, šķiet, pastāvīgi ieslēdzas mūsu acīs. Nozīmē, ka mēs vienlaikus piegādājam strāvu tikai vienai rindai, novēršot iespēju ieslēgt citas gaismas diodes citās rindās. Mēs izmantosim šo tehniku, lai parādītu visas rakstzīmes.
Ir arī bibliotēka ar nosaukumu LedControlMS.h, lai rūpētos par visu šo multipleksēšanas sarežģītību, kur jums jāievada tikai raksturs vai numurs, kuru vēlaties drukāt uz LED matricas, lai iegūtu sīkāku informāciju, pārbaudiet šo Arduino LED matricu ar projektu MAX7219.
Programmēšanas skaidrojums:
Mūsu kodeksā mēs esam rakstījuši decimālo vērtību katram rakstzīmei un ieprogrammējuši šīs vērtības Arduino. Programma ir uzrakstījusi šīs vērtības novirzīt uz nākamo rindu ik pēc 0,2 sekundēm, tas tiks uzskatīts par rakstzīmju ritināšanu uz augšu, tas ir ļoti vienkārši.
Lai mainītu parādāmās rakstzīmes, vienkārši aizstājiet masīva char ALPHA vērtību atbilstoši tālāk norādītajām rakstzīmju vērtībām, 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,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 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,1122,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 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,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
Tāpat kā, ja vēlaties LED matricā parādīt DAD, tad vispirms aizstājiet rakstzīmju vērtības char ALPHA masīvā, ievietojot vērtības rakstzīmēm D, A un D no iepriekš minētā saraksta:
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};
Kopējās vērtības tagad ir 5 * 10 = 50 vērtības, tātad
Aizstāt, aiz (int x = 0; x <142; x ++) // 150-8 (lai apturētu pārplūdi) {…….. Ar, for (int x = 0; x <42; x ++) // 50-8 (lai apturētu pārplūdi) {……..
Tāpēc jums vienkārši jāmaina numurs.
Ar šo jūs esat veicis programmēšanu un tagad jūs varat ritināt jebkuru tekstu 8x8 LED matricā, pārbaudiet pilnu kodu zemāk ar demonstrācijas video.