Šioje pamokoje, naudodami „Arduino Uno“, suprojektuosime 8x8 LED matricos slinkties ekraną, kuriame bus rodomos slenkančios abėcėlės.
8x8 LED matricoje yra 64 šviesos diodai (šviesos diodai), kurie yra išdėstyti matricos pavidalu, taigi pavadinimas yra LED matrica. Mes sukursime šią „Matrix“, prilydydami šiuos 64 šviesos diodus ant plokštės arba DOT PCB. Šviesos diodai gali būti bet kokios spalvos, pasirinkite tuos, kuriuos galite įsigyti su savimi. Tada mes parašysime programą, skirtą „Arduino“ valdyti šias 64 šviesos diodų matricas. Pagal programą UNO įjungia atitinkamus šviesos diodus, kad būtų galima rodyti simbolius slenkančiai.
Būtini komponentai:
- Arduino Uno
- 64 šviesos diodai
- Perfboardas su kitais litavimo įrankiais
- 1KΩ rezistorius (8 vnt.)
- Maitinimo šaltinis (5v)
Grandinės ir darbo paaiškinimas:
Yra 64 šviesos diodai, išdėstyti matricos forma. Taigi turime 8 stulpelius ir 8 eilutes. Per tas eilutes ir stulpelius visi teigiami terminalai iš eilės yra sujungti. Kiekvienoje eilutėje yra vienas bendras teigiamas terminalas visiems 8 tos eilutės šviesos diodams. Tai parodyta žemiau esančiame paveiksle,
Taigi 8 eilutėse turime 8 bendrus teigiamus terminalus. Apsvarstykite pirmąją eilutę, kaip parodyta paveikslėlyje, 8 šviesos diodai nuo D57 iki D64 turi bendrą teigiamą terminalą ir yra pažymėti "POSITIVE0". Dabar, jei norime, kad vienas ar visi šviesos diodai švytėtų pirmoje matricos eilutėje, turėtume įjungti LED matricos PIN0. Panašiai, jei mes norime švyti bet kurį šviesos diodą (arba visus) bet kurioje eilutėje, turime maitinti atitinkamą bendrosios teigiamos terminalo kaištį toje eilutėje.
Tai dar nesibaigė ir vien tik palikę MATRIX EILES su teigiama pasiūla nieko neduos. Turime įžeminti šviesos diodų neigiamus elementus, kad jie spindėtų. Taigi 8x8 LED matricoje visi neigiami šviesos diodų gnybtai bet kuriame stulpelyje yra sujungti į aštuonis bendrus neigiamus gnybtus, kaip ir visi neigiami pirmojo stulpelio gnybtai yra prijungti prie PIN-A1 (NEGATIVE7). Tai parodyta žemiau esančiame paveikslėlyje:
Turėtumėte atkreipti dėmesį į šiuos kaiščius, lituodami šviesos diodus ant „Perfboard“.
Dabar, jei mums reikia įžeminti bet kurį šviesos diodą pirmame stulpelyje, tada mes įžeminsime MATRIX PIN-A1 (NEGATIVE7) ir jis įžemins visus šviesos diodus pirmame stulpelyje. Tas pats procesas vyksta ir su visais septyniais įprastais neigiamais stulpeliais.
Nuo šiol jūs žinote, kaip veikia bendras teigiamas ir neigiamas dalykas. Sudėkime juos kartu, kad pamatytume, kaip jie veikia kartu, ir paskutinė 8x8 LED matricos ekrano slinkimo grandinė atrodys taip:
8x8 LED matricos valdymas naudojant multipleksavimą:
Tarkime, kad norime įjungti LED57, tada turime įjungti UNO PIN0 ir įžeminti UNO PIN-8. Dabar, norėdami įjungti LED57 ir LED50, turime įjungti PIN0, PIN1 ir įžeminti PIN8, PIN9. Tai darydami įjungsite ne tik D57, D50, bet ir D49, D58. Kad to išvengtume, mes naudojame „ Multiplexing“ vadinamą techniką. Mes jau išsamiai aptarėme šią „Multiplex“ techniką 8x8 LED matricoje; peržiūrėkite tą straipsnį, kad gautumėte išsamų paaiškinimą. Čia mes trumpai paaiškiname multipleksavimą.
Žmogaus akis negali užfiksuoti didesnio nei 30 HZ dažnio. Tai yra, jei šviesos diodas nuolat įsijungia ir išsijungia 30 Hz ar didesniu greičiu. Akis mato šviesos diodą nuolat įjungtą. Tačiau taip nėra, o šviesos diodai bus nuolat įjungiami ir išjungiami. Ši technika vadinama multipleksavimu.
Tarkime, mes norime įjungti tik LED57 ir LED50 neįjungdami D49 ir D58. Apgaulė yra ta, kad pirmiausia suteiksime maitinimą pirmajai eilutei, kad įjungtume LED57 ir palauktume 1mSEC, tada mes jį išjungsime. Tada maitinsime antrą eilę, kad įjungtume LED50, ir palaukite 1mSEC, tada ją išjungsime. Ciklas eina nuolat su aukštu dažniu, o „LED57“ ir „LED50“ greitai įsijungia ir išsijungia, o abu šviesos diodai mūsų akiai nuolat įsijungia. Tai reiškia, kad mes maitiname tik vieną eilutę vienu metu, pašalindami galimybę įjungti kitus šviesos diodus kitose eilėse. Šią techniką naudosime visiems simboliams parodyti.
Taip pat yra biblioteka, vadinama „ LedControlMS.h“, kad galėtumėte pasirūpinti visu šiuo multipleksavimo kompleksiškumu, kur jums reikia įvesti tik simbolį ar skaičių, kurį norite spausdinti ant LED matricos, jei norite sužinoti daugiau, patikrinkite šią „Arduino“ LED matricą su MAX7219 projektu.
Programavimo paaiškinimas:
Savo kode mes parašėme dešimtainę kiekvieno simbolio vertę ir užprogramavome šias reikšmes „Arduino“. Programa parašė šias reikšmes perkelti į kitą eilutę kas 0,2 sek. Tai bus labai paprasta.
Norėdami pakeisti rodomus simbolius, tiesiog pakeiskite masyvo char ALPHA reikšmę pagal toliau pateiktas simbolių vertes, 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, // 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 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
Pvz., Jei norite rodyti DAD LED matricoje, tada pirmiausia pakeiskite simbolių reikšmes char ALPHA masyve, pateikdami D, A ir D simbolių reikšmes iš aukščiau pateikto sąrašo:
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};
Dabar visos vertės yra 5 * 10 = 50 reikšmių, taigi
Pakeiskite, (int x = 0; x <142; x ++) // 150-8 (sustabdyti perpildymą) {…….. Su, už (int x = 0; x <42; x ++) // 50-8 (sustabdyti perpildymą) {……..
Taigi jums tiesiog reikia pakeisti numerį.
Tai atlikę programavote ir dabar galite slinkti bet kokį 8x8 LED matricos tekstą, patikrinkite visą kodą žemiau su demonstraciniu vaizdo įrašu.