Mika Tuupola

fre, Nov 4, 2011

Led-matriser är roliga leksaker. Vem skulle inte älska blinkenlights? Elektronikär svårt. Elektronik är mycket svårare än programmering. Jag hade svårt tidförsöker förstå hur led-matriserna fungerar. Vad är det bästa sättet attlära sig något? Bygg en själv.

struktur av Led-matris

i ett matrisformat lysdioder är ordnade i rader och kolumner. Du kan ocksåtänk på dem som Y-och x-koordinater. Låt oss anta att vi har 4×4 matris.Rader skulle markeras från A till D och kolumner från 1 till 4. Nu kan viadress varje ledd av rad och kolumn. Övre vänstra led skulle vara (A, 1). Bottomdown led skulle vara (D, 4).

Led-matriser finns i två smaker. Common-row anod (vänster) och common-rowcathode (höger).

Led-matriser

figuren ovan visar de olika konfigurationerna. Skillnaden mellandessa två konfigurationer är hur du tände en led. Med gemensam rad anodeströmkällor (positiv spänning) är fästa vid rader A..D ochströmmar sjunker (negativ spänning, jord) till kolumner 1..4. Medvanlig rad katodströmsänkor är fästa vid rader A..D och currentssources till kolumner 1..4.

till exempel. För att tända botten ner led (D, 4) av gemensam katodmatris skulle du mata positiv spänning till kolumn 4 och ansluta rad D till jord. Forsake of clarity jag kommer att använda gemensam rad katod i exempel för restof denna artikel.

bygga en LED-matris

för att bygga en 4×4 gemensam rad katodmatris behöver du 16 lysdioder, fourresistors, några rubriker och prototypkort. Jag började med att limma theleds till prototypkort med epoxilim. På så sätt är det lättare att hasängar vackert inriktade. Vid limning av lysdioderna, se till att långa och kortabenen är inriktade på samma sätt.

limning av led-matris

när limet är torrt är det dags att böja och löda. Böj först alla katoderatt lämna så nära prototypkort som möjligt. Löd alla katodesi varje rad tillsammans. När katoder är klara, böj alla anoder. Anodesmåste inte röra katoder. Jag använde en bit plaströr för att hjälpa till att böja anoderna för att bilda en bro ovanför katoder.

böjande ben

löd nu alla anoder i varje rad. Löd rubrikerna ochAnslut katodrader direkt till rubriken.

botten

Anodrader är anslutna till huvudet med strömbegränsande motstånd.Motståndets värde beror på vilken LED som används. Kontrollera LED-databladetför framspänning och ström. LEDcalculator hjälper dig att ta reda på detkorrekt motstånd. Matrix är nu redo för testning.

topp

adressering av enstaka LED

anslutning av jord till rad A och positiv spänning till kolumn 1 tänds den övre högra lysdioden (a,1).

enkel led tänd

anslutning av jord till rad D och positiv spänning till kolumn 4 tänds botten ner LED (D,4).

enkel led tänd

Intuition skulle säga att tända båda (A,1) och (D,4) samtidigt är bara att ansluta alla fyra ledningarna. Så är inte fallet. Det finns fyra lysdioder som lyser. Detta beror på att strömmen också strömmar genom (A,4) och (D, 1).

fyra lysdioder lyser

multiplexering och persistens av syn

multiplexering kan användas för att visa godtyckliga mönster med ledmatrices. Multiplexering kallas ibland också skanning. Den skannar rader (vanligtvis från upp till ner) och lampor behövs lysdioder endast i en rad på tiden. Något som att följa:

  1. börja med att ha allt frånkopplat.
  2. Anslut positiv spänning alla nödvändiga kolumner.
  3. Anslut rad till jord. Detta lyser de nödvändiga lysdioderna i raden.
  4. koppla bort raden och alla kolumner.
  5. gör samma steg en efter en till alla rader och börja sedan frånbörjan.

gör detta långsamt och du skulle se Blinkande LED-rader. Gör det riktigt snabbtoch mänskliga ögat kan se hela mönstret. Fenomenet kallaspersistens av syn.

rita ett mönster

Låt oss skriva en enkel kod för att rita ett mönster på matrisen. Obs!Även om jag använder Arduino board använder jag inte Arduino libraries norIDE för att utveckla. Jag gillar dock Arduino pin numreringsschema.Funktioner pin_mode() och digital_write()fungerar exakt på samma sätt som deras Arduino-ekvivalenter.

vi börjar med att ställa in stiften och standardtillståndet för dem.

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); }}

för att visa ett mönster på matris använder vi draw() funktion.Bitmapp skickas som tvådimensionell array. Fördröjning används endast tillvisa uthållighet av syn.

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); }}

för att undersöka persistensen av visionseffekten ritar vi mönstret medolika förseningar.

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;}

fullständig kod kan hittas frångithub.Kontrollera utgången från videon nedan.

mer läsning

Circuit Skills: LED Matrix av Make Magazine. Kör en LED med eller utan motstånd av Alexander Weber. Introduktion till Driving LED Matrices (PDF) technote av Avago Technologies. Lysdioder (lysdioder) av Electronics Club.

inlagd i

AVR Elektronik

Lämna ett svar

Din e-postadress kommer inte publiceras.