Suunnittelemme tässä opetusohjelmassa 8x8 LED-matriisirullanäytön Arduino Unon avulla, joka näyttää vierittävät aakkoset.
8x8 LED-matriisi sisältää 64 LEDiä (valoa emittoivat diodit), jotka on järjestetty matriisin muotoon, joten nimi on LED-matriisi. Aiomme tehdä tämän matriisin juottamalla nämä 64 LEDiä perfboardille tai DOT-piirilevylle. LEDit voivat olla mitä tahansa väriä, valitse ne, jotka ovat saatavana kanssasi. Sitten kirjoitamme ohjelman Arduinolle näiden 64 LED-matriisin ohjaamiseksi. UNO, ohjelman mukaan, antaa asianmukaiset LED-valot näyttämään merkkejä vierittävällä tavalla.
Vaaditut komponentit:
- Arduino Uno
- 64 LEDiä
- Perfboard yhdessä muiden juotostyökalujen kanssa
- 1KΩ vastus (8 kpl)
- Virtalähde (5v)
Piiri ja työskentely Selitys:
Matriisimuodossa on 64 LEDiä. Joten meillä on 8 saraketta ja 8 riviä. Näiden rivien ja sarakkeiden yli kaikki rivin positiiviset liittimet kootaan yhteen. Jokaiselle riville on yksi yhteinen positiivinen pääte kaikille 8 rivin LEDille. Se on esitetty alla olevassa kuvassa,
Joten 8 rivillä meillä on 8 yhteistä positiivista päätettä. Tarkastellaan ensimmäistä riviä, kuten kuvassa näkyy, kahdeksalla LEDillä D57 - D64 on yhteinen positiivinen pääte ja ne on merkitty 'POSITIVE0'. Jos nyt haluamme hehkuttaa yhden tai kaikki LEDit matriisin ensimmäiselle riville, meidän pitäisi kytkeä virta LED-matriisin PIN0: een. Samoin jos haluamme hehkua mitä tahansa LEDiä (tai kaikkia) missä tahansa rivissä, meidän on kytkettävä virta vastaavan rivin vastaavaan yhteiseen positiiviseen päätelaitteeseen.
Tämä ei ole vielä ohi, ja pelkkä MATRIX-RIVIEN jättäminen positiiviseen tarjontaan ei tuota mitään. Meidän on maadoitettava LED-negatiivien hehku. Joten 8x8 LED-matriisissa kaikki minkä tahansa sarakkeen LEDien negatiiviset liittimet kootaan yhteen muodostaen kahdeksan yhteistä negatiivista päätettä, kuten kaikki ensimmäisen sarakkeen negatiiviset liittimet on kytketty yhteen PIN-A1: ään (NEGATIIVI7). Tämä näkyy alla olevassa kuvassa:
Näihin nastoihin tulisi kiinnittää huomiota juotettaessa Perfboardin LEDejä.
Jos nyt meidän on maadoitettava mikä tahansa LED ensimmäisessä sarakkeessa, maadoitetaan MATRIXin PIN-A1 (NEGATIVE7), ja se maadoittaa kaikki ensimmäisen sarakkeen LEDit. Sama prosessi koskee kaikkia muita seitsemää yleistä negatiivista saraketta.
Nyt tiedät, kuinka yhteinen positiivinen ja yhteinen negatiivinen toimii. Laaditaan ne yhteen nähdäksesi, miten ne toimivat yhdessä, ja viimeinen 8x8 LED -matriisinäytön vierityspiiri näyttää tältä:
8x8 LED-matriisin ajaminen multipleksoinnilla:
Oletetaan, että haluamme käynnistää LED57: n, sitten meidän on kytkettävä virta UNO: n PIN0: een ja maadoitettava UNO: n PIN-8. Sekä LED57: n että LED50: n kytkemiseksi päälle meidän on käynnistettävä PIN0, PIN1 ja maadoitettava PIN8, PIN9. Mutta näin tekemällä D57, D50: n lisäksi myös D49, D58 kytketään päälle. Tämän välttämiseksi käytämme tekniikkaa nimeltä multipleksointi. Olemme jo keskustelleet tästä Multiplex-tekniikasta 8x8 LED-matriisissa yksityiskohtaisesti; käy läpi artikkeli tarkempien selitysten saamiseksi. Tässä kerromme multipleksointia lyhyesti.
Ihmissilmä ei voi kaapata yli 30 Hz: n taajuutta. Eli jos LED palaa ja sammuu jatkuvasti nopeudella 30 Hz tai enemmän. Silmä näkee LEDin jatkuvasti päällä. Näin ei kuitenkaan ole, ja LED palaa ja sammuu jatkuvasti. Tätä tekniikkaa kutsutaan multipleksoinniksi.
Oletetaan esimerkiksi, että haluamme kytkeä päälle vain LED57: n ja LED50: n kytkemättä päälle D49: tä ja D58: ta. Temppu on, annamme ensin virran ensimmäiselle riville, jotta LED57 kytketään päälle ja odotetaan 1 mSEC, ja sitten sammutamme sen. Sitten annamme virtaa toiselle riville LED50: n sytyttämiseksi ja odotamme 1 mSEC, sitten sammutamme sen. Sykli kulkee jatkuvasti suurilla taajuuksilla, ja LED57 ja LED50 palaavat ja sammuvat nopeasti, ja molemmat LEDit näyttävät olevan jatkuvasti päällä silmässämme. Tarkoitamme, että tarjoamme virtaa vain yhdelle riville kerrallaan, mikä eliminoi mahdollisuudet kytkeä muut LEDit muihin riveihin. Käytämme tätä tekniikkaa kaikkien merkkien näyttämiseen.
Kaiken tämän multipleksoinnin monimutkaisuuden hoitamiseksi on myös kirjasto nimeltä LedControlMS.h , jossa sinun tarvitsee syöttää vain merkki tai numero, jonka haluat tulostaa LED-matriisiin, tarkista tämä Arduino-LED-matriisi MAX7219-projektilla tarkemmin.
Ohjelmoinnin selitys:
Koodissamme olemme kirjoittaneet desimaaliarvon jokaiselle merkille ja ohjelmoineet nämä arvot Arduinoon. Ohjelma on kirjoittanut siirtämään nämä arvot seuraavalle riville 0,2 sekunnin välein, tämä nähdään merkkien vierityksenä ylöspäin, se on hyvin yksinkertaista.
Vaihda näytettävät merkit korvaamalla char ALPHA -taulukon arvo alla annettujen merkkien arvojen mukaisesti, 24,60,102,126,102,102,02,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60102,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 60102,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,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 60102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60102,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, // L 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
Kuten jos haluat näyttää DAD-LED-matriisissa, korvaa ensin Characters-arvot char ALPHA -ryhmässä asettamalla arvot merkkeille D, A ja D yllä olevasta luettelosta:
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};
Kokonaisarvot ovat nyt 5 * 10 = 50 arvoa, joten
Korvaa, for (int x = 0; x <142; x ++) // 150-8 (ylivuoton lopettamiseksi) {…….. Kanssa, for (int x = 0; x <42; x ++) // 50-8 (ylivuoton lopettamiseksi) {……..
Joten sinun tarvitsee vain muuttaa numero.
Tällä olet tehnyt ohjelmoinnin ja nyt voit Siirry tahansa tekstiä 8x8 LED Matrix, tarkista Täysi koodin alla mielenosoituksen Video.