wtorek, 23 grudnia 2014

Zabawa z MAX7219

Ponieważ praca z radiem idzie mi jak po grudzie, to zacząłem się bawić z układem MAX7219. Można go kupić za około 1 $ na ebay (zarówno w obudowie DIP, jak i SOP - do montażu powierzchniowego).
Ja chcę się pobawić ze sterowaniem wyświetlaczem macierzowym LED 8x8. Takie zestawy na ebay kosztują niecałe 2 $, więc są bardzo tanie. Buduję go samemu, ale teraz myślę, że lepiej kupić sobie taki zestaw, niż budować go od zera.
układ z ebay.com



Podłączenie

Układ MAX7219 umożliwia sterowanie 7-segmentowymi wyświetlaczami LED o wspólnej katodzie przy pomocy mikrokontrolera i obsługuje aż do 8 cyfr, bądź umożliwia sterowanie 64 niezależnymi diodami LED. Nota katalogowa układu znajduje się tutaj.

Konfiguracja pinów
Schemat podłączeń
Jak widać na schemacie do działania układu potrzeba poza MAX7219 dodatkowo 2 kondensatorów C1,C2 oraz rezystora RSET. Kondensatory służą do wygładzenia napięcia zasilającego układ MAX7219 oraz wyświetlacz i powinny być umieszczone jak najbliżej nóżki V+. Rezystor RSET służy do ustawienia prądu płynącego przez wyświetlacz i jego wartość nie może być mniejsza niż 10k Ohm. Układ musi być zasilany napięciem +5V. W przypadku jednego wyświetlacza można go pobierać z arduino, a w przypadku większej ilości potrzebne może być zasilanie zewnętrzne. Jeśli chodzi o nóżki GND, to obie nóżki muszą być podłączone do masy.
Wyświetlacz, jaki używałem to wyświetlacz macierzowy LED, którego nota katalogowa znajduje się tutaj. Poniżej przedstawiam, jak należy podłączyć wyświetlacz do MAX7219 (oznaczenie nóżek jest z tyłu wyświetlacza). Podłączając inny wyświetlacz należy pamiętać o tym, że piny DIG0-DIG7 podłączamy do katod, a DP, SEG A- SEG G do anod wyświetlacza.

Konfiguracja pinów wyświetlacza wraz z podłączeniem do układu MAX7219


Oprogramowanie


Do wyświetlania tekstu na wyświetlaczu używałem biblioteki MAX72xxPanel, która wykorzystuje bibliotekę GFX z Adafruit. Biblioteki te umożliwiają wyświetlanie i operacje na tekście, a także wyświetlanie prostych obiektów graficznych. Po uruchomieniu biblioteki GFX zauważyłem, że litery wyświetlają się w odbiciu lustrzanym. Wydaje mi się, ze wynika to z różnicy w fizycznej konfiguracji wyświetlaczy sprzedawanych przez Adafruit. Poradziłem sobie z tym w ten sposób, że zmieniłem kolejność rotacji bitów przy operacjach na tekście w funkcji DrawChar, to znaczy w pliku Adafruit_GFX.cpp odszukujemy funkcję DrawChar i zamieniamy następujące wiersze:

    for (int8_t j = 0; j<8; j++) {
      if (line & 0x1) {

na

    for (int8_t j = 0; j<8; j++) {
      if (line & 0x80) {


oraz na dole funkcji

      line >>= 1;

na

      line <<= 1;


A oto efekt mojej pracy:


Tutaj jest link do strony angielskiej.
Powodzenia








3 komentarze:

  1. Witam,
    ja na aliexpress kupiłem 4 segmenty 8x8 - więcej radości - https://www.aliexpress.com/item/MAX7219-Dot-Matrix-Module-For-Arduino-Microcontroller-4-In-One-Display-with-5P-Line/32618155357.html?spm=2114.13010608.0.0.RIwWb4

    Ten układ 7219 jest rzeczywiście świetny bo fajnie się za jego pomocą steruje tym wyświetlaczem. Tylko jedno pytanie - piszesz, żeby nie zasilać z arduino większej ilości ale ja podłączyłem to normalnie do płytki arduino i ciągnie. Zarówno kiedy zasilam go przez USB jak i z baterii 9V. Jakie tu mamy ryzyko? Za duży będzie prąd i coś gdzieś upali?

    OdpowiedzUsuń
  2. No ale dzięki za cynk o bibliotece. Ja używałem LedControl ale ma mniejsze możliwości niż ta o której wspominałeś bo ona pozawala zapalić/zgasić pojedynczy punkt albo wysłać od razu całą linijkę naraz (bo to w sumie jest 8 bitów - 1 bajt). Nie ma tam wyswietlania tekstu, trzeba sobie samemu przygotować tablicę ze znakami.

    OdpowiedzUsuń
  3. Ten komentarz został usunięty przez administratora bloga.

    OdpowiedzUsuń