pe, marras 4, 2011
Led-matriisit ovat hauskoja leluja. Kukapa ei rakastaisi vilkkuvaloja? Elektroniikka on vaikeaa. Elektroniikka on paljon vaikeampaa kuin ohjelmointi. Minulla oli vaikea ajantaju ymmärtää, miten led-matriisit toimivat. Mikä on paras tapa oppia jotain? Rakenna sellainen itse.
LED-matriisin rakenne
matriisimuodossa LEDit on järjestetty riveihin ja sarakkeisiin. Niitä voi myös pitää y-ja x-koordinaatteina. Oletetaan, että meillä on 4×4 matriisi.Rivit merkittäisiin A: sta D: hen ja sarakkeet 1: stä 4: ään. Nyt voimme käsitelläjokainen johti rivi ja sarake. Ylhäällä vasemmalla led olisi (A, 1). Bottomdown led olisi (D,4).
Led-matriiseja on kahta eri makua. Yleisrivianodi (vasemmalla) ja yleisrivianodi (oikealla).
yllä olevassa kuvassa on esitetty eri kokoonpanot. Ero näiden kahden kokoonpanon välillä on se, miten sytytit ledin. Yhteisen rivin anodivirta lähteet (positiivinen jännite) on kiinnitetty riveihin A..D andcurrents uppoaa (negatiivinen jännite, maa) sarakkeisiin 1..4. Withcommon-rivi katodi nykyinen nielut on kiinnitetty riveille A..D ja nykyiset resurssit sarakkeisiin 1..4.Esimerkiksi
. Valoa alhaalta alas led (D, 4) yhteinen katodi matriisi voit syöttää positiivinen jännite sarake 4 ja liittää rivin D maahan. Forsake of clarity aion käyttää common-rivi katodi esimerkeissä loput tästä artikkelista.
LED-matriisin rakentaminen
4×4-rivikatodimatriisin rakentamiseen tarvitaan 16 lediä, neljä resistoria, joitakin otsikoita ja prototyyppilevy. Aloitin liimaamalla levyt prototyyppilevyyn epoksiliimalla. Näin on helpompi ollatelineet kauniisti linjassa. Kun liimaat LEDit varmista, että pitkät ja lyhytjalat ovat samassa linjassa.
liiman kuivuessa on aika taipua ja juottaa. Taivuta ensin kaikki katodit vasemmalle niin lähelle prototyyppilautaa kuin mahdollista. Juottaa kaikki katodit kunkin rivin yhteen. Kun katodit ovat valmiita, taivuta kaikki anodit. Anodit eivät saa koskea katodeihin. Käytin muoviputkea, joka auttoi anodien taivuttamisessa sillan muodostamiseksi katodien yläpuolelle.
juottaa nyt yhteen kaikki anodit kullakin rivillä. Juota otsikot ja liitä katodirivit suoraan otsikkoon.
Anodirivit on liitetty otsakkeeseen virtarajoitusvastuksilla.Vastuksen arvo riippuu käytetystä ledistä. Tarkista LED Datasheet for eteenpäin jännite ja virta. LEDcalculator auttaa sinua löytämään outcorrect vastus. Matrix on nyt valmis testattavaksi.
yhden LED: n osoittaminen
maanpinnan liittäminen riviin A ja positiivinen jännite sarakkeeseen 1 valaisevat oikean ylävalon (A,1).
maanpinnan liittäminen riviin D ja positiivinen jännite sarakkeeseen 4 valaisevat alhaalta alaspäin suuntautuvan ledin (D,4).
Intuition mukaan molempien (a,1) ja (D,4) valaiseminen samaan aikaan vain yhdistää kaikki neljä johtoa. Näin ei ole. On neljä LEDiä, jotka syttyvät. Tämä johtuu siitä, että virta kulkee myös(A,4) ja (D,1).
Multiplexing ja pysyvyys visio
Multiplexing voidaan käyttää näyttämään mielivaltaisia kuvioita ledmatrices. Multiplexing kutsutaan joskus myös skannaus. Se skannaa rivit (yleensä ylös alas) ja valot tarvitaan LED vain yhdellä rivillä kerralla. Jotain seuraamista:
- Aloita ottamalla kaikki irti.
- kytke positiivinen jännite kaikkiin tarvittaviin sarakkeisiin.
- Yhdistä rivi maahan. Tämä sytyttää tarvittavat LEDit riviin.
- irrota rivi ja kaikki sarakkeet.
- tee samat vaiheet yksitellen kaikille riveille ja aloita sitten alkutaipaleelta.
Tee tämä hitaasti ja näkisit vilkkuvia LED-rivejä. Tee se todella nopeasti ja ihmissilmä näkee koko kuvion. Ilmiötä kutsutaan vision pysyvyydeksi.
piirrä kuvio
Let write some simple code for drawing a pattern on the matrix. Huom!Vaikka käytän Arduino board en käytä Arduino kirjastoja norIDE kehittämiseen. Pidän kuitenkin Arduinon pin-numerointijärjestelmästä.Funktiot pin_mode()
ja digital_write()
toimivat täsmälleen samalla tavalla kuin niiden Arduino-vastineet.
aloitamme asettamalla PIN-koodit ja oletustilan niille.
uint8_t column_pins = { 2, 3, 4, 5 };uint8_t row_pins = { 11, 10, 9, 8 };static void init(void) { /* Turn all columns off by setting then low. */ for (uint8_t x=0; x<4; x++) { pin_mode(column_pins, OUTPUT); digital_write(column_pins, LOW); } /* Turn all rows off by setting then high. */ for (uint8_t y=0; y<4; y++) { pin_mode(row_pins, OUTPUT); digital_write(row_pins, HIGH); }}
näyttääksemme kuvion matriisissa käytämme draw()
funktiota.Bittikartta välitetään kaksiulotteisena matriisina. Viivettä käytetään vain osoittamaanäön pysyvyyttä.
uint8_t pattern = {{1,0,0,1}, {0,1,0,0}, {0,0,1,0}, {1,0,0,1}};void draw(uint8_t buffer, uint8_t delay) { for (uint8_t row=0; row<4; ++row) { /* Connect or disconnect columns as needed. */ for (uint8_t column=0; column<4; ++column) { digital_write(column_pins, buffer); } /* Turn on whole row. */ digital_write(row_pins, LOW); _delay_ms(delay); /* Turn off whole row. */ digital_write(row_pins, HIGH); }}
tarkastella pysyvyys visio vaikutus piirrämme kuvio eri viiveitä.
uint8_t main(void) { init(); /* With 100ms delay eye can see updating row by row. */ for (uint8_t i=0; i<10; i++) { draw(pattern, 100); } /* With 10ms delay pattern appears but flickers. */ for (uint16_t i=0; i<100; i++) { draw(pattern, 10); } /* Withoud delay solid pattern appears. */ while (1) { draw(pattern, 1); } return 0;}
koko koodi löytyy osoitteesta github.Katso lähtö alla olevalta videolta.
Lisää lukemista
Piiritaidot: Make-lehden LED-matriisi. Ajo LED kanssa tai ilman vastus Alexander Weber. Johdatus ajo LED matriisit (PDF) technote by Avago Technologies. Elektroniikkakerhon valodiodeja (LED).
Posted in
AVR Electronics