Zaloguje się
or
Tel +48 698 615 740

Podłączenie i obsługa modułu matrycy 8×8 WS2812B 5050 RGB do arduino

10 lutego, 2022

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.

Działanie w praktyce

Pliki do pobrania

Sticky
Możliwość komentowania Podłączenie i obsługa modułu matrycy 8×8 WS2812B 5050 RGB do arduino została wyłączona
Adrian Wojtala

Adrian Wojtala

Ma 21 lat. Studiuje informatykę na Uniwersytecie DSW, ukończył technikum o profilu technik-informatyk. Interesuje się programowaniem i w przyszłości ma plan zostać back-end developerem. Swoją przygodę z Arduino rozpoczął podczas praktyk od września 2021 r.

Comments are closed.

Strona korzysta z plików cookies w celu realizacji usługi i zgodnie z Polityką Plików Cookies. Możesz określić warunki przechowywania lub dostępu do plików cookies w Twojej przeglądarce.