pojedyncza dioda LED może być przydatna w testowaniu projektów Arduino. Ale kiedy dodasz matrycę LED, możesz stać się naprawdę kreatywny, literując litery, cyfry i symbole. Jest to również przydatny sposób, aby dowiedzieć się, jak działają bardziej złożone wyświetlacze – takie jak ten, który czytasz na tej stronie. W tym przewodniku pokażemy, jak skonfigurować podstawową matrycę LED 8×8.
jak działają matryce LED
podstawowa matryca LED, taka jak ta, której użyjemy, zawiera siatkę Diod Led 8×8, która może być używana do rysowania znaków, podstawowych obrazów i innych. W poprzednich przewodnikach pokazaliśmy, jak Arduino może sterować pojedynczą DIODĄ LED. Ten komponent rozciąga tę koncepcję na tablicy Diod Led 64, które można kontrolować za pomocą jednego Arduino.
Matryca LED
w matrycy LED prąd przepływa przez rzędy diod LED. Aby zakończyć Obwód i aktywować pojedyncze światło, kolumna jest podłączona do masy. Tam, gdzie przecinają się linie zasilania i uziemienia, aktywowane są diody LED. Możesz myśleć o tym trochę jak o grze planszowej Battleship. Na przykład, jeśli zasilanie jest uruchamiane w wierszach A, B i C, ale tylko kolumna 1 jest podłączona do masy, zapalą się światła w A1, B1 i C1. Reszta pozostanie ciemna.
jest to poręczny sposób włączania wielu diod LED naraz, ale stwarza problem, jeśli chcesz włączyć tylko niektóre diody LED w kolumnie. Powiedzmy, że zamiast tego chciałeś, aby Światła A1, B2 i C3 zapalały się, tworząc ukośną linię. Aktywacja wszystkich trzech wierszy i kolumn włączy całą siatkę, co nie jest tym, czego chcemy.
aby rozwiązać ten problem, Arduino może przebiegać przez pętlę, aktywując jednocześnie tylko jeden rząd Diod Led. W ten sposób możesz aktywować dowolną liczbę kolumn bez wpływu na następny wiersz. Bez długiego opóźnienia (), wiersze będą aktywowane tak szybko, że ludzkie oko nie będzie w stanie stwierdzić. Ale pokażemy, jak dodać opóźnienie, abyś mógł zobaczyć, jak to działa.
czego potrzebujesz
używamy bardziej skomplikowanej metody sterowania matrycą LED do celów edukacyjnych-inne komponenty mogą zmniejszyć liczbę wymaganych pinów – a więc zajmie to sporo więcej pinów i przewodów niż większość naszych innych przewodników. Z tego powodu będziemy używać Arduino Mega 2560, zamiast zwykłego Arduino Uno, do sterowania tą matrycą. Potrzebne będą również następujące elementy:
Arduino Mega 2560 | |
8×8 Matryca LED | |
8 Rezystor x 220ohm
Większość diod LED wypali się, jeśli podłączysz je bezpośrednio do wyjścia 5V Arduino. Umieść rezystor z zestawu między pinem wyjściowym a DIODĄ LED. |
|
para desek chlebowych | |
Arduino IDE |
będziesz również potrzebował kabla USB i sporo przewodów-co najmniej 32!
istnieje wiele sposobów na zorganizowanie okablowania dla tego projektu, ale ponieważ może on być złożony, zalecamy użycie pary płyt chlebowych zatrzaskanych razem, jednej do obsługi matrycy LED, a drugiej do okablowania w rezystorach. To samo można osiągnąć za pomocą przewodów z żeńskimi końcówkami biegnącymi do matrycy LED, choć będzie ona siedzieć z boku zamiast stacjonarnie, co może być nieco bardziej uciążliwe.
Kod
kod dla tego projektu wykorzysta pętle i tablice do zapisu każdej diody LED indywidualnie. Rezultatem będzie tablica u góry skryptu, którą można łatwo modyfikować, aby zmienić obraz wyświetlany przez matrycę LED. Najpierw wklej Pełny kod do Arduino IDE i prześlij go do swojego Arduino Mega.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
int toDisplay = {
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,1,0},
{1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0}
};
void setup () {
for (int i=2; i<=9; i++) {
pinMode (i, OUTPUT);
pinMode (i+44, wyjście);
digitalWrite (i, LOW);
digitalWrite (i+44, HIGH);
}
pinMode (A0, wejście);
}
void loop () {
for (int i=0; i<8; i++) {
if (i==0) {
digitalWrite (9, LOW);
}
else {
digitalWrite (i+1, LOW);
}
for (int j = 0; j& lt; 8; j++) {
if (toDisplay == 1) {
digitalWrite (j + 46, LOW);
}
else {
digitalWrite (j + 46, HIGH);
}
}
digitalWrite (i+2, HIGH);
(1);
}
}
|
następnie przejdźmy przez to, jak działa każda z tych sekcji.
1
2
3
4
5
6
7
8
9
10
|
int do wyświetlania = {
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,0,0},
{1,0,0,0,0,0,1,0},
{1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0},
{1,0,0,1,0,0,1,0}
};
|
przed którąkolwiek z głównych pętli w szkicu, ta wielowymiarowa tablica określi, które Diody Led powinny być zapalone, a które powinny pozostać ciemne. Istnieje osiem rzędów po osiem wartości każdy, które odpowiadają ośmiu rzędom Diod Led na macierzy. Układając je w siatce w szkicu, ułatwia wizualizację kształtu diod LED.
1
2
3
4
5
6
7
8
9
|
void setup() {
for (int i=2; i<=9; i++) {
pinMode(i, wyjście);
pinMode(i+44, wyjście);
digitalWrite(i, niskie);
digitalWrite(i+44, wysoka);
}
pinMode (A0, INPUT);
}
|
w sekcji setup () zainicjalizujemy piny potrzebne do macierzy. Ponieważ istnieje szesnaście różnych pinów, możemy to zrobić wydajniej niż pojedynczo. Kołki biegnące do ziemi zostaną podłączone do kołków od 2 do 9. Piny wysyłające moc do matrycy będą biegły do pin 46 do 53. Ta sekcja używa pętli do inicjalizacji obu zestawów pinów.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
void loop () {
for (int i=0; i<8; i++) {
if (i==0) {
digitalWrite (9, LOW);
}
else {
digitalWrite (i+1, LOW);
}
for (int j = 0; j& lt; 8; j++) {
if (toDisplay == 1) {
digitalWrite (j + 46, LOW);
}
else {
digitalWrite (j + 46, HIGH);
}
}
digitalWrite (i+2, HIGH);
(1);
}
}
|
w sekcji main loop () szkicu znajduje się jedna pętla wieloetapowa. Pierwsza instrukcja if zresetuje ostatni używany wiersz na niski, co zatrzyma przepływ mocy do niego.
Następna zagnieżdżona pętla for sprawdzi dane w tablicy. Jeśli komórka jest wymieniona jako 1, ustawi przewód uziemiający dla tej kolumny na niski, umożliwiając wypływ prądu. W przeciwnym razie ustawi pin na wysoki, co uniemożliwi Ukończenie obwodu wzdłuż tej kolumny. Zrobi to dla wszystkich ośmiu komórek w danym wierszu.
wreszcie ostatnia Instrukcja digitalWrite () włączy cały wiersz. Wszystkie kolumny ustawione na niskie będą się świecić. Reszta pozostanie ciemna. Gdy szkic ponownie zapętli się, natychmiast rozpocznie się od wyłączenia tego wiersza.
ostatnie polecenie jest instrukcją delay (), która ustawia opóźnienie między każdym wierszem. W naszym przykładzie jest ustawiona na 1 milisekundę, ponieważ gdy instrukcji nie ma, Diody LED stają się nieco za słabe. Możesz jednak zwiększyć opóźnienie, aby zobaczyć, co robi szkic wolniej. Każdy wiersz powinien świecić pojedynczo, przed wyłączeniem, gdy włącza się następny wiersz.
okablowanie
w przypadku tego projektu okablowanie jest stosunkowo proste, jest go po prostu dużo. Ponieważ istnieje wiele pinów, opiszemy, co chcesz zrobić dla każdego kompletnego obwodu, zamiast wymieniać każdy pojedynczy przewód, jak zwykle.
piny od 2 do 9 powinny być pinami zasilania, a piny od 46 do 53 powinny być pinami uziemienia. Uruchom przewód z pinu zasilania, do matrycy LED (sprawdź więcej szczegółów na temat pinów poniżej – to ważne), z matrycy LED do rezystora 220 ohm, a następnie uruchom przewód z powrotem do pinu na Arduino. Pin 2 powinien ostatecznie doprowadzić do pin 46, pin 3 powinien prowadzić do pin 47 i tak dalej.
główną komplikacją jest sama matryca LED. W przeciwnym razie, piny po obu stronach matrycy nie są w spójnej kolejności w ogóle. Na przykład, chcemy, aby pin 2 zasilał to, co nazwiemy wierszem A. Jednak pin dla tego jest czwartym pinem od lewej na górze matrycy LED. Drugi koniec tego obwodu-który powinien prowadzić do Kolumny 1-to pierwszy pin po prawej stronie na dole matrycy.
ponieważ ta kolejność jest dość skomplikowana, określimy, do których pinów na matrycy każdy pin Arduino powinien być podłączony bezpośrednio.
u góry matrycy (strony z nadrukowanym numerem) znajduje się osiem pinów. Od lewej do prawej, powinny one być podłączone do następujących pinów na Arduino:
- Pin 7
- Pin 4
- Pin 49
- Pin 2
- Pin 51
- Pin 52
- Pin 3
- Pin 5
następnie dolny rząd ośmiu pinów na matrycy (strona bez numerów) powinien być podłączony do następujących pinów (od lewej do prawej, z numerami nadal skierowanymi do góry):
- Pin 9
- Pin 50
- Pin 48
- Pin 6
- Pin 53
- Pin 8
- Pin 47
- Pin 46
po podłączeniu wszystkich przewodów możesz włączyć swój projekt, a zobaczysz, że matryca LED świeci się. Spróbuj zmienić układ 1s w początkowej tablicy i prześlij ponownie skrypt, aby utworzyć różne kształty. Można również dostosować długość polecenia delay (), aby każdy wiersz świecił się pojedynczo.