Fri, Nov 4, 2011
matryce Led to zabawne zabawki. Kto by nie kochał blinkenlights? Elektronika jest trudna. Elektronika jest znacznie trudniejsza niż programowanie. Trudno mi było zrozumieć, jak działają matryce led. Jak najlepiej się czegoś nauczyć? Sam sobie zbuduj.
struktura matrycy Led
w formacie matrycowym Diody LED są rozmieszczone w wierszach i kolumnach. Można je również traktować jako współrzędne y i X. Załóżmy, że mamy macierz 4×4.Wiersze będą oznaczone od A do D, A kolumny od 1 do 4. Teraz możemyadresować każdą diodę za pomocą wiersza i kolumny. Górna lewa dioda LED byłaby (a, 1). Dioda LED do dołu byłaby (D, 4).
matryce Led występują w dwóch smakach. Common-row anode (z lewej) i common-rowcathode (z prawej).
powyższy rysunek pokazuje różne konfiguracje. Różnica między tymi dwiema konfiguracjami polega na tym, jak zapaliłeś diodę led. Ze źródłami anodowymi wspólnego rzędu (dodatnie napięcie) są dołączone do rzędów A..D andcurrents tonie (napięcie ujemne, masa) do kolumn 1..4. Do rzędów a dołączone są wspólne katodowe zlewy prądowe..D i currentssources do kolumn 1..4.
na przykład. Aby oświetlić dolną diodę led (D,4) wspólnej matrycy katodowej, należy podać dodatnie napięcie do kolumny 4 i połączyć rząd D z uziemieniem. Forsake of clarity użyję katody common-row w przykładach do reszty tego artykułu.
Budowa matrycy LED
do zbudowania matrycy katodowej 4×4 będziesz potrzebował 16 diod LED, czterech rezystorów, kilku nagłówków i płyty do prototypowania. Zacząłem od przyklejenia desek do prototypowania klejem epoksydowym. W ten sposób łatwiej jest miećpośrednice pięknie wyrównane. Podczas klejenia diod LED upewnij się, że długie i krótkie są wyrównane w ten sam sposób.
gdy klej jest suchy, nadszedł czas na zginanie i lutowanie. Najpierw zginać wszystkie katodesto lewo jak najbliżej do prototypowania pokładzie, jak to możliwe. Przylutuj wszystkie katody w każdym rzędzie razem. Gdy katody są gotowe, zgiąć wszystkie anody. Anody nie muszą dotykać katod. Użyłem kawałka plastikowej rurki, aby pomóc zginać anody, tworząc most nad katodami.
teraz lutuj wszystkie anody w każdym rzędzie. Przylutuj nagłówki i podłącz rzędy katod bezpośrednio do nagłówka.
wiersze anod są połączone z nagłówkiem z rezystorami ograniczającymi prąd.Wartość rezystora zależy od zastosowanej diody LED. Sprawdź kartę danych LED dla napięcia i prądu. LEDcalculator pomoże Ci znaleźć opornik wyjściowy. Matrix jest teraz gotowy do testów.
adresowanie pojedynczej diody LED
podłączenie uziemienia do wiersza A i dodatniego napięcia do kolumny 1 zapali prawą górną diodę LED (a,1).
podłączenie masy do rzędu D i dodatniego napięcia do kolumny 4 zapali dolną diodę LED (D,4).
intuicja powiedziałaby,że oświetlenie zarówno (a,1), Jak I (D, 4) w tym samym czasie jest po prostu podłączeniem wszystkich czterech przewodów. Tak nie jest. Świecą cztery diody LED. Dzieje się tak, ponieważ prąd przepływa również przez(a, 4) i (D,1).
multipleksowanie i trwałość widzenia
multipleksowanie może być używane do wyświetlania dowolnych wzorów za pomocą matryc LED. Multipleksowanie jest czasami nazywane również skanowaniem. Skanuje wiersze (zwykle od góry do dołu) i jednocześnie świeci diody LED tylko w jednym rzędzie. Coś jak podążanie za:
- zacznij od odłączenia wszystkiego.
- podłącz napięcie dodatnie wszystkie potrzebne kolumny.
- podłącz rząd do ziemi. To świeci potrzebne diody LED w rzędzie.
- odłącz wiersz i wszystkie kolumny.
- wykonaj te same kroki jeden po drugim do wszystkich wierszy, a następnie zacznij od początku.
zrób to powoli, a zobaczysz migające wiersze LED. Zrób to bardzo szybko, a ludzkie oko zobaczy cały wzór. Zjawisko nazywa sięosobistość widzenia.
narysuj wzór
napiszmy prosty kod do rysowania wzoru na macierzy. Uwaga!Mimo, że używam Arduino pokładzie nie używam Arduino biblioteki norIDE dla rozwoju. Podoba mi się jednak schemat numeracji pinów Arduino.Funkcje pin_mode()
i digital_write()
działają dokładnie tak samo jak ich odpowiedniki Arduino.
zaczynamy od ustawienia pinów i stanu domyślnego dla nich.
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); }}
do wyświetlenia wzorca na macierzy używamy funkcji draw()
.Bitmapa jest przekazywana jako tablica dwuwymiarowa. Opóźnienie jest używane tylko dlamonstrować trwałość widzenia.
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); }}
aby zbadać trwałość efektu widzenia, rysujemy wzór zróżnymi opóźnieniami.
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;}
Pełny kod można znaleźć na stronie github.Sprawdź wyjście z wideo poniżej.
więcej czytania
umiejętności obwodu: Matryca LED przez magazyn Make. Prowadzenie diody LED z rezystorem lub Bez przez Alexandra Webera. Wprowadzenie do prowadzenia matryc LED (PDF) technote firmy Avago Technologies. Diody elektroluminescencyjne (LED) firmy Electronics Club.
Posted in
AVR Electronics