W artykule zostanie omówione połączenie i wykorzystanie modułu matrycy. Przedstawione zostanie połączenie jak i wykorzystanie odpowiednich bibliotek, aby zaprogramować moduł. Zostaną również pokazane możliwości tego wyświetlacza na praktycznym przykładzie.
Spis treści
- Krótki opis
- Specyfikacja
- Połączenie
- Przetestowanie działania
Krótki opis
Moduł matrycy Led 8×8 diody WS2812B 5050 posiadający możliwość świecenia w kolorach palety RGB. Diody są adresowane a moduł pozwala łączyć się z kolejnymi matrycami mogąc tworzyć dużo większe wyświetlacze.
Moduł jest kompatybilny z biblioteką NeoPixel.
Specyfikacja
- napięcie zasilania 5V
- każdy piksel posiada 256 poziomów jasności świecenia
- 16777216 wyświetlanych kolorów
- szybkość transmisji do 800Kbps
- wymiary: 65 mm x 65mm
Połączenie
Na początku potrzebujemy przylutować piny do modułu, tam gdzie jest V- IN V+. Podłączenie matrycy do arduino jest bardzo proste, wystarczy podłączyć V- do GND, V+ do 5V i IN do pinu 6. Całe połączenie przedstawione jest na schemacie niżej.
Przetestowanie działania
Aby przetestować działanie matrycy pobierzemy potrzebne biblioteki (znajdują się one na samym dole artykułu), przy pomocy których sprawdzimy działanie, a następnie wykorzystamy je do wyświetlania godziny na matrycy.
Wybieramy przykład z biblioteki NeoMatrix
Wgrywamy przykład do naszego arduino i obserwujemy działanie matrycy, jeżeli świeci wszystko jest w porządku. W przeciwnym wypadku należy sprawdzić połączenie.
Wyświetlanie godziny
Skoro wiemy już, że nasza matryca działa, możemy wykorzystać ją do wyświetlania na niej obecnego czasu. Do stworzenia działającego zegara wykorzystałem przykład z biblioteki NeoMatrix oraz Time-master.
Na początku wgrywamy poniższy kod (można go również pobrać na dole artykułu swiecenie_led).
#include <Adafruit_GFX.h> #include <Adafruit_NeoMatrix.h> #include <Adafruit_NeoPixel.h> #include <TimeLib.h> #ifndef PSTR #define PSTR // Make Arduino Due happy #endif #define TIME_HEADER "T" // Header tag for serial time sync message #define TIME_REQUEST 7 // ASCII bell character requests a time sync message #define PIN 6 Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(8, 8, PIN, NEO_MATRIX_TOP + NEO_MATRIX_RIGHT + NEO_MATRIX_COLUMNS + NEO_MATRIX_PROGRESSIVE, NEO_GRB + NEO_KHZ800); const uint16_t colors[] = { matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255) }; void setup() { matrix.begin(); matrix.setTextWrap(false); matrix.setBrightness(40); matrix.setTextColor(colors[0]); Serial.begin(9600); while (!Serial) ; // Needed for Leonardo only pinMode(13, OUTPUT); setSyncProvider( requestSync); //set function to call when sync required Serial.println("Waiting for sync message"); } int x = matrix.width(); int pass = 0; void loop() { if (Serial.available()) { processSyncMessage(); } matrix.fillScreen(0); matrix.setCursor(x, 0); int godz = hour(); int min = minute(); int sek = second(); matrix.print(hour()); matrix.print(":"); matrix.print(minute()); matrix.print(":"); matrix.print(second()); if(--x < -(8+8*5)) { x = matrix.width(); if(++pass >= 3) pass = 0; matrix.setTextColor(colors[pass]); } matrix.show(); delay(100); } void processSyncMessage() { unsigned long pctime; const unsigned long DEFAULT_TIME = 1357041600; // Jan 1 2013 if(Serial.find(TIME_HEADER)) { pctime = Serial.parseInt(); if( pctime >= DEFAULT_TIME) { // check the integer is a valid time (greater than Jan 1 2013) setTime(pctime); // Sync Arduino clock to the time received on the serial port } } } time_t requestSync() { Serial.write(TIME_REQUEST); return 0; // the time will be sent later in response to serial mesg }
Po wklejeniu możemy od razu wgrać go do naszego arduino. Na matrycy powinny się wyświetlać liczby, będzie to nasz zegar, lecz na razie nie jest on ustawiony.
Ustawianie zegara
Aby ustawić zegar na początku musimy wejść na stronę https://www.epochconverter.com/
Na niej zmieniamy godzinę o jedną do przodu, a następnie klikamy Human date to Timestamp. Powinniśmy otrzymać następujące dane.
Kopiujemy teraz podkreślone liczby i otwieramy monitor portu szeregowego. Przed wklejeniem ich dajemy literkę T, tak jak na poniższym przykładzie.
Wysyłamy i nasz czas powinien być teraz prawidłowy.