W tym samouczku zamierzamy zaprojektować przewijany wyświetlacz LED Matrix 8x8 za pomocą Arduino Uno, który będzie wyświetlał przewijane alfabety.
Matryca LED 8x8 zawiera 64 diody LED (diody elektroluminescencyjne) ułożone w formie matrycy, stąd nazwa matryca LED. Zamierzamy wykonać tę Matrycę, lutując te 64 diody LED do płytki drukowanej lub DOT PCB. Diody mogą mieć dowolny kolor, wybierz te, które są u Ciebie dostępne. Następnie napiszemy program dla Arduino do sterowania tą matrycą 64 diod LED. UNO, zgodnie z programem, zasila odpowiednie diody LED, aby wyświetlać znaki w sposób przewijany.
Wymagane składniki:
- Arduino Uno
- 64 diody LED
- Perfboard z innymi narzędziami do lutowania
- Rezystor 1KΩ (8 sztuk)
- Zasilanie (5 V)
Objaśnienie obwodu i pracy:
Istnieje 64 diody LED ułożone w formie matrycy. Mamy więc 8 kolumn i 8 rzędów. W tych wierszach i kolumnach wszystkie dodatnie zaciski w rzędzie są łączone. Dla każdego rzędu istnieje jeden wspólny zacisk dodatni dla wszystkich 8 diod LED w tym rzędzie. Pokazuje to poniższy rysunek,
Więc dla 8 rzędów mamy 8 wspólnych zacisków dodatnich. Rozważmy pierwszy rząd, jak widać na rysunku, 8 diod LED od D57 do D64 ma wspólny zacisk dodatni i jest oznaczonych jako „DODATNIE0”. Teraz, jeśli chcemy, aby jedna lub wszystkie diody LED świeciły się w pierwszym rzędzie matrycy, to powinniśmy zasilić PIN0 matrycy LED. Podobnie, jeśli chcemy zapalić dowolną diodę LED (lub wszystkie) w dowolnym rzędzie, musimy zasilić odpowiedni wspólny zacisk dodatni tego odpowiedniego rzędu.
To jeszcze nie koniec i samo pozostawienie MATRIX ROWS z dodatnią podażą nic nie da. Musimy uziemić negatywy diod LED, aby je zaświecić. Tak więc w matrycy diod 8x8 wszystkie ujemne zaciski diod LED w dowolnej kolumnie są zebrane razem, tworząc osiem wspólnych zacisków ujemnych, tak jak wszystkie ujemne zaciski w pierwszej kolumnie są połączone razem ze stykiem PIN-A1 (NEGATYWNY7). Pokazuje to poniższy rysunek:
Na te piny należy zwrócić uwagę podczas lutowania diod LED na Perfboard.
Teraz, jeśli musimy uziemić dowolną diodę LED w pierwszej kolumnie, uziemimy PIN-A1 (NEGATYWNY7) MATRIXU i uziemimy wszystkie diody w pierwszej kolumnie. Ten sam proces dotyczy wszystkich pozostałych siedmiu wspólnych kolumn ujemnych.
Od teraz wiesz, jak działa Common Positive i Common Negative. Połączmy je razem, aby zobaczyć, jak współpracują, a ostateczny obwód do przewijania matrycy LED 8x8 będzie wyglądał następująco:
Sterowanie matrycą LED 8x8 za pomocą multipleksowania:
Teraz powiedzmy, że chcemy WŁĄCZYĆ LED57, a następnie musimy zasilić PIN0 UNO i uziemić PIN-8 UNO. Teraz, aby włączyć zarówno LED57, jak i LED50, musimy zasilić PIN0, PIN1 i uziemić PIN8, PIN9. Ale spowoduje to nie tylko włączenie D57, D50, ale także D49, D58. Aby tego uniknąć, używamy techniki zwanej multipleksowaniem. Omówiliśmy już szczegółowo tę technikę multipleksowania w matrycy LED 8x8; przejrzyj ten artykuł, aby uzyskać szczegółowe wyjaśnienia. Tutaj krótko wyjaśnimy multipleksowanie.
Oko ludzkie nie może wychwycić częstotliwości większej niż 30 Hz. To znaczy, jeśli dioda LED włącza się i wyłącza w sposób ciągły z częstotliwością 30 Hz lub więcej. Oko widzi, że dioda LED jest stale włączona. Jednak tak nie jest i dioda LED będzie się stale włączać i wyłączać. Ta technika nazywa się multipleksowaniem.
Powiedzmy na przykład, że chcemy włączyć tylko LED57 i LED50 bez włączania D49 i D58. Sztuczka jest taka, że najpierw dostarczymy zasilanie do pierwszego rzędu, aby włączyć diodę LED57 i poczekać 1 msek, a następnie wyłączymy. Następnie dostarczymy zasilanie do drugiego rzędu, aby włączyć LED50 i poczekać 1 msek, a następnie go wyłączymy. Cykl przebiega w sposób ciągły z wysoką częstotliwością, a diody LED57 i LED50 będą się szybko włączać i wyłączać, a obie diody LED będą wydawać się stale WŁĄCZONE dla naszych oczu. Oznacza to, że w danym momencie dostarczamy zasilanie tylko do jednego rzędu, eliminując ryzyko włączenia innych diod LED w innych rzędach. Użyjemy tej techniki, aby pokazać wszystkie postacie.
Istnieje również biblioteka o nazwie LedControlMS.h, która zajmie się całą złożonością multipleksowania, w której wystarczy wpisać znak lub numer, który chcesz wydrukować na matrycy LED, sprawdź tę matrycę Arduino LED z projektem MAX7219, aby uzyskać więcej szczegółów.
Objaśnienie programowania:
W naszym kodzie zapisaliśmy wartość dziesiętną dla każdego znaku i zaprogramowaliśmy te wartości w Arduino. Program napisał, że przesuwa te wartości do następnego wiersza co 0,2 sekundy, będzie to postrzegane jako przewijanie znaków w górę, jest to bardzo proste.
Aby zmienić wyświetlane znaki, wystarczy zamienić wartość w tablicy char ALPHA zgodnie z wartościami znaków podanymi poniżej, 24,60,102,126,102,102,102,0,0,0, // A 124,102,102,124,102,102,124,0,0,0, // B 60,102,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 60,102,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,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 60,102,102,102,102,60,14,0, 0,0, // Q 124,102,102,124,120,108,102,0, 0,0, // R 60,102,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, // W 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
Podobnie jak jeśli chcesz wyświetlić DAD na matrycy LED, najpierw zamień wartości znaków w tablicy char ALPHA , wprowadzając wartości dla znaków D, A i D z powyższej listy:
char ALPHA = {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};
Łączne wartości to teraz 5 * 10 = 50 wartości, więc
Zastąp, for (int x = 0; x <142; x ++) // 150-8 (aby zatrzymać przepełnienie) {…….. With, for (int x = 0; x <42; x ++) // 50-8 (aby zatrzymać przepełnienie) {……..
Musisz więc tylko zmienić numer.
Dzięki temu wykonałeś programowanie i teraz możesz przewijać dowolny tekst na matrycy LED 8x8, sprawdzić poniższy pełny kod z demonstracyjnym wideo.