Serwisy partnerskie:
Close icon
Serwisy partnerskie

Kurs Arduino odcinek 19 - wyświetlacze od podstaw (matrycowe, 7-segmentowe, MAX7219)

W poprzednich dwóch odcinkach omawialiśmy wykorzystanie łącza RS-485 i standardu MODBUS na przykładzie czujnika wilgotności gleby. Według planów mieliśmy zająć się obsługą graficznego wyświetlacza OLED. Wasze listy na temat wyświetlaczy graficznych i matrycowych spowodowały, że tematem tym zajęliśmy się dokładniej, od podstaw.
Article Image
1. Kurs Arduino: wprowadzenie 2. Kurs Arduino odcinek 1 - co to jest i jak zacząć? (sprzęt, schematy, programowanie) 3. Kurs Arduino odcinek 2 - termometry: 'diodowy', pokojowy oraz 'scalony' analogowy 4. Kurs Arduino odcinek 3 - moduł wyświetlacza LCD (HD44780) 5. Kurs Arduino odcinek 4 - czujnik BME280 (pomiar ciśnienia, wilgotności i temperatury) 6. Kurs Arduino odcinek 5 - biblioteki do trzyfunkcyjnego czujnika BME280 7. Kurs Arduino odcinek 6 - wykorzystanie łącza I2C (TWI) 8. Kurs Arduino odcinek 7 - wykorzystanie łącza SPI (karty pamięci, MAX31865, MAX31855) 9. Kurs Arduino odcinek 8 - wykorzystanie czujnika dwutlenku węgla (MH-Z19) 10. Kurs Arduino odcinek 9 - wykorzystanie modułów do odmierzania czasu 11. Kurs Arduino odcinek 10 - wykorzystanie czujników temperatury (DS18B20) 12. Kurs Arduino odcinek 11 - budowa loggera (rejestratora danych) 13. Kurs Arduino odcinek 12 - rejestracja i prezentacja danych oraz obsługa karty SD 14. Kurs Arduino odcinek 13 - rejestracja danych (wykorzystanie modułu OpenLog) 15. Kurs Arduino odcinek 14 - czym zastąpić płytkę Arduino Uno? 16. Kurs Arduino odcinek 15 - budowa rejestratora (chiński klon Arduino Pro Mini) 17. Kurs Arduino odcinek 16 - problemy z kwadratowym modułem Strong 18. Kurs Arduino odcinek 17 - czujniki do pomiaru wilgotności gleby (instalacja, konfiguracja) 19. Kurs Arduino odcinek 18 - protokół MODBUS i łącze RS-485 20. Kurs Arduino odcinek 19 - wyświetlacze od podstaw (matrycowe, 7-segmentowe, MAX7219) 21. Kurs Arduino odcinek 20a - wyświetlacze matrycowe i biblioteki MD_MAX 22. Kurs Arduino odcinek 20b - przyciski i biblioteki do obsługi wyświetlaczy 23. Kurs Arduino odcinek 20c - biblioteki do obsługi wyświetlaczy graficznych 24. Kurs Arduino odcinek 21 - moduł wyświetlacza OLED 25. Kurs Arduino odcinek 22 - moduł wyświetlacza 1,3 cala 26. Kurs Arduino odcinek 23 - przygotowanie bitmap do wyświetlania 27. Kurs Arduino odcinek 24 - omówienie fontu podstawowego (Adafruit GFX) 28. Kurs Arduino odcinek 25 - font podstawowy biblioteki Adafruit GFX 29. Kurs Arduino odcinek 26 - wykorzystanie bitmapowych fontów GFX 30. Kurs Arduino odcinek 27 - polskie znaki w glcdfont.c 31. Kurs Arduino odcinek 28 - zmiana ulepszonych fontów GFX

Dlatego też w odcinku 19 wykorzystamy wyświetlacze, na razie matrycowe, potem także graficzne. I znów boleśnie zderzymy się ze specyfiką Arduino...

Przede wszystkim raz na zawsze trzeba pożegnać się z klasycznymi matrycami LED. Przypomnijmy tylko, że jak najbardziej możliwe jest dołączenie wprost do pinów Arduino zestawu wyświetlaczy 7-segmentowych jak pokazuje rysunek 1 ze strony.

Rys.1 Dołączenie zestawu wyświetlaczy 7-segmentowych wprost do pinów Arduino

Można też dołączyć wprost matrycę jednakowych punktów LED, jak na mocno nieestetycznym rysunku 2 ze strony.

Rys.2 Dołączenie matrycy jednakowych punktów LED wprost do pinów Arduino

Kto chce, może na podanych stronach sprawdzić, jak realizowana jest obsługa wyświetlaczy. Jednak takie sposoby są absolutnie przestarzałe i niegodne uwagi. Choćby tylko dlatego, że aby dołączyć matrycę 16×16 z rysunku 3, potrzebne byłyby 32 piny, a Arduino UNO ma ich tylko kilkanaście.

Rys.3 Matryca 16x16

Zapominamy więc o bezpośrednim dołączaniu matryc do pinów procesora. Innych, lepszych sposobów, jest wiele.

Wykorzystanie rejestrów przesuwających szeregowo-równoległych oraz dekoderów

Jeden z nich, bodaj najprostszy, to wykorzystanie rejestrów przesuwających szeregowo-równoległych oraz dekoderów. Przykładem wykorzystania rejestrów i dekoderów jest pokazany na fotografii 4 moduł matrycy 16×16, czyli zawierający 256 punktów świetlnych.

Fot.4 Moduł matrycy 16×16 - przykład wykorzystania rejestrów i dekoderów

Jak pokazuje schemat widoczny na rysunku 5, zawiera on dwa dekodery 74HC138 i dwa rejestry przesuwne 74HC595. Te moduły z kilku powodów są jednak mało popularne.

Rys.5 Schemat modułu matrycy 16×16 - przykład wykorzystania rejestrów i dekoderów

Do współpracy z Arduino UNO i płytkami pokrewnymi może być wykorzystany szyld z fotografii 6, nazywany Multi-function Shield (MSF).

Fot.6 Multi-function Shield (MSF)

Zawiera on szereg pożytecznych obwodów, a czterocyfrowy wyświetlacz jest sterowany za pośrednictwem dwóch rejestrów 74HC595 według rysunku 7. Zainteresowani bibliotekę dla MSF znajdą pod adresem, a inne szczegóły odszukają wpisując w wyszukiwarkę właśnie: multi-function shield.

Rys.7 Czterocyfrowy wyświetlacz sterowany za pośrednictwem dwóch rejestrów 74HC595

Pożyteczny może się też okazać moduł, zawierający układ scalony TM1638, produkcji Titan Micro Electronics. Procesor obsługuje ten układ za pomocą trzyżyłowego interfejsu (odmiana SPI). W wersji maksymalnej ta 28-nóżkowa kostka może wysterować 80 diod LED (np 10 wyświetlaczy 7-segmentowych) i kontrolować stan nawet 24 przycisków (rysunek 8).

Rys.8 TM1638 - w wersji maksymalnej kostka może wysterować 80 diod LED i kontrolować stan 24 przycisków

Na rynku dostępnych jest kilka rodzajów płytek z tą kostką, między innymi popularny i pożyteczny moduł, pokazany na fotografii 9. Najpopularniejsza biblioteka dla TM1638 dostępna jest pod adresem.

Fot.9 Płytka z kostką TM1638

Moduły wyświetlaczy LED z kostką MAX7219

Nas jednak najbardziej interesują moduły wyświetlaczy LED z kostką MAX7219. Ten układ scalony przewidziany jest zarówno do sterowania wyświetlaczami matrycowymi jak i 7-segmentowymi (rysunek 10) – wtedy można wykorzystać wbudowany obwód dekodowanie liczb dwójkowych 0...9 na kod wyświetlacza 7-segmentowego.

Rys.10 Moduł wyświetlacza LED z kostką MAX7219

W tej samej konfiguracji przeznaczony jest też do sterowania wyświetlaczami matrycowych 8×8 i wtedy bity poszczególnych bajtów zaświecają i gaszą poszczególne diody w matrycy.

Rys.11 MAX7219 - rejestry konfiguracyjne i pamięć 8×8 bitów 

Jak pokazuje rysunek 11 kostka ma też szereg rejestrów konfiguracyjnych i pamięć 8×8 bitów. Procesor przysyła szeregowo do rejestru wejściowego 16 bitów. Co ciekawe, bity D 1 2 . . . D 1 5 nie są wykorzystywane. Cztery bity D8...D11, czyli jedna liczba szesnastkowa określają (tabela 1) jak mają być interpretowane bity D0...D7. Czy jest to treść do wyświetlenia, czy też rozkaz konfiguracyjny.

Jasność diod po pierwsze wyznacza dołączony z zewnątrz rezystor, ale co bardzo ważne, możliwa jest też programowa zmiana jasności (Intensity – rozkaz 0xXA), a także wyłączenie kostki wszystkich diod i przejście do stanu LowPower (Shutdown, rozkaz 0xXC) oraz ich zaświecenie (Display Test, rozkaz 0xXF). Jeden z rozkazów i rejestrów (Scan Limit, rozkaz 0xXB) określa, ile wyświetlaczy 7-segmentowych (cyfr) ma być czynnych.

Tabela 1 Cztery bity D8...D11 określają jak mają być interpretowane bity D0...D7

 

Co ważne kostki te można łączyć kaskadowo, szeregowo, co umożliwia wyjście DOUT. Wtedy procesor szeregowo przesyła jeden długi ciąg danych dla kilku wyświetlaczy, a potem stan aktywny linii LOAD powoduje ich wykorzystanie. Zasady obsługi kostki MAX7219 nie są skomplikowane i w Internecie można znaleźć wiele przykładów wykorzystania bez użycia bibliotek. Oto trzy tego rodzaju przykłady:

Wyświetlacze do Arduino - biblioteki (MAX7219, HCMAX7219)

Ale oczywiście dostępne są też biblioteki. Nie wszystkie są jednakowo użyteczne. Zasłużony też dla społeczności Arduino Nick Gammon szereg lat temu zrealizował prosta bibliotekę: https://github.com/nickgammon/MAX7219

Rys.12 Przykładowe szkice dla wyświetlacza 7-segmentowego i matrycowego

Jednak najbardziej znana jest biblioteka LedControl, obsługująca MAX7219 zarówno do sterowania wyświetlaczy 7-segmentowych, jak i matryc. Wszystko byłoby dobrze, tylko przykładowe szkice i dla wyświetlacza 7-segmentowego i matrycowego (rysunek 12) ze strony pokazują, jak na takich wyświetlaczach wyświetlić napis „Arduino”, jak pokazuje fotografia 13 ze strony

Fot.13 Wyświetlone napisy z przykładowych szkiców

Dla elektronika wyświetlanie napisu na wyświetlaczu 7-segmentowym, najdelikatniej mówiąc, nie jest zachęcającym przykładem. A wyświetlanie liczb za pomocą tej skądinąd popularnej biblioteki wcale nie jest takie proste. Oto przykłady:

Warto wejść na te strony i przeanalizować zamieszczone tam szkice. Można też poszukać jeszcze innych rozwiązań, wpisując w wyszukiwarkę: MAX7219 Arduino 7 segment.

Proponowane w Sieci rozwiązania nie zachęcają do korzystania z biblioteki LedControl. Ale poszukiwania mogą doprowadzić do innych bibliotek.

Na razie pominiemy bibliotekę Max72xxPanel, która nie oferuje obsługi wyświetlaczy 7-segmentowych. Zaglądamy natomiast na stronę Hobby Components Ltd, brytyjskiego sprzedawcy modułów.

Oprócz modułów firma opracowała i udostępniła bibliotekę HCMAX7219.
Biblioteka ta obsługuje zarówno moduły z wyświetlaczami 7-segmentowymi, jak i matrycowymi. Dalsze informacje o modułach i objaśnienia można znaleźć na stronie

a o bibliotece HCMAX7219 na stronach:

Bardzo zachęcający jest fakt, że oprócz elementarnych funkcji „sprzętowych”, są też dostępne bardziej zaawansowane funkcje biblioteczne, między innymi wyświetlanie napisów oraz liczb. Wyświetlane mogą być liczby całkowite (także ujemne), opcjonalnie całkowite z dodanym punktem dziesiętnym (przecinkiem), a jak wskazują opisy na podanych stronach, na wyświetlaczu 7-segmentowym można też wyświetlić liczby zmiennoprzecinkowe (float).

Rys.14 Dołączenie stosownego modułu do sprzętowego łącza SPI płytki Arduino

Zachęceni takimi możliwościami za pomocą pięciu przewodów dołączyłem stosowny moduł do sprzętowego łącza SPI płytki Arduino według rysunku 14. Planowałem dodanie kondensatora elektrolitycznego w obwodzie zasilania, ale testy pokazały, że nie jest konieczny.

Trochę się zdziwiłem, iż biblioteki HCMAX7219 nie można zainstalować przez Menedżera bibliotek. Jednak błyskawicznie ściągnąłem ją z Github-a i zainstalowałem „ręcznie”,rozpakowując pliki do bibliotecznego katalogu: .../Dokumenty/Arduino/libraries/ i dbając, żeby po rozpakowaniu nie zostały umieszczone „zbyt głęboko”.

Po podłączeniu zasilania zaświeciły wszystkie segmenty. Po otwarciu przykładowego szkicu HCMODU0082_Serial_7_Segment_Module_Example1.ino (rysunek 15) program dał się bez problemu skompilować i załadować do płytki Arduino.

Rys.15 Otwarcie przykładowego szkicu z biblioteki

Byłem przyjemnie zaskoczony, bowiem jak na razie „wszystko poszło jak po maśle”. Ale tylko na początku... Po skompilowaniu i załadowaniu szkicu zestaw wyglądał jak na fotografii 16.

Fot.16 Zestaw po skompilowaniu i załadowaniu szkicu

Wyświetlanie napisów na takim wyświetlaczu nie ma większego sensu, o czym przekonuje fotografia 17a, pokazująca pseudonapis: Kurs EdW. Jak widać niektóre litery są czytelne, ale większość jest zupełnie nieczytelna. Opinię o beznadziejnym wyglądzie tekstu potwierdza drugi przykładowy szkic z pliku HCMODU0082_Serial_7_Segment_Module_Example2.ino, gdzie naprawdę trudno rozszyfrować, że pięciokrotnie przewijany ma być napis: HCMAX7219 SCROLLING TEXT DEMO. Fotografia 17b pokazuje fragment tego „napisu”, a zaświecone segmenty mają teoretycznie tworzyć litery tEXt dE.

Fot.17a Mało czytelne napisy na wyświetlaczu
Fot.17b Fragment napisu

Niemniej w tym drugim szkicu są godne uwagi przykłady wyświetlania liczb. I to nie tylko liczb całkowitych (ze znakiem) typu long, ale też liczb całkowitych z arbitralnie zaświeconym punktem dziesiętnym (przecinkiem). Ten przykładowy szkic, nieco spolonizowany, dostępny jest w Elportalu jako plik A1901.ino.

W Elportalu dostępny jest też drugi przykład, pokazany w szkicu 1.

#include <HCMAX7219.h>
#include "SPI.h"
#define LOAD 10
HCMAX7219 HCMAX7219(LOAD); //obiekt
//void setup() { } // wersja 0.2 nie ma inicjalizacji obiektu
// w wersji 0.5 - konieczna jest inicjalizacja obiektu:
void setup() {HCMAX7219.Init();}
void loop() {
float Liczba = 3.1415926; //deklaracja i inicjalizacja
byte Pozycja; //pozycja początku napisu lub punktu dziesietnego
// wyswietlimy liczby, najpierw zmiennoprzecinkową typu float
HCMAX7219.Clear(); //wyczysc bufor danych w kostce MAX7219
HCMAX7219.print7Seg(Liczba, 7, 8, 8); //załaduj liczbe
HCMAX7219.Refresh(); delay(4000); //wyswietl i czekaj 2s
// liczba całkowita ujemna
HCMAX7219.Clear(); //wyczysc bufor danych w kostce MAX7219
HCMAX7219.print7Seg("INTEGER ", 8); //najpierw załaduj napis
HCMAX7219.Refresh(); delay(2000); //wyswietl i czekaj 2s
// liczba całkowita ujemna
HCMAX7219.Clear(); //wyczysc bufor danych w kostce MAX7219
HCMAX7219.print7Seg(-2345678, 8); //załaduj liczbe do bufora
HCMAX7219.Refresh(); delay(2000); //wyswietl i czekaj 2s
//teraz liczba z arbitralnie wyswietlanym punktem dziesietnym
HCMAX7219.Clear(); //wyczysc bufor danych w kostce MAX7219
HCMAX7219.print7Seg("PUNKT D.",8); //najpierw załaduj napis
HCMAX7219.Refresh(); delay(2000); //wyswietl i czekaj 2s
// a teraz punkt dziesietny na roznych pozycjach:
HCMAX7219.Clear(); //wyczysc bufor danych w kostce MAX7219
for (Pozycja = 1; Pozycja <= 7; Pozycja++)
{ HCMAX7219.print7Seg(-3456789, Pozycja, 8);
HCMAX7219.Refresh(); delay(1000); //wyswietl i czekaj
} }

Problem w tym, że szkic, zarówno oryginalny jak i A1901.ino, działa, ale niestety nie ma tam przykładu wyświetlenia liczby zmiennoprzecinkowej typu float. A nas bardzo interesuje właśnie wyświetlanie takich liczb, które są wynikiem pomiarów albo obliczeń. Dodałem stosowny fragment kodu, usunąwszy przewijanie napisu. Wykorzystujemy tu metodę .print7seg(), do której zgodnie ze wskazówkami producenta mamy przekazać cztery argumenty: liczbę typu float do wyświetlenia, liczbę cyfr po przecinku, liczbę wykorzystywanych cyfr-znaków wyświetlacza i pozycję początku wyświetlania, czyli na przykład:

HCMAX7219.print7Seg(Liczba, 7, 8, 8);

Niestety, próba kompilacji daje komunikat, że potrzebnej funkcji-metody... nie ma – rysunek 18.

Rys.18 Komunikat o braku funkcji metody

W zainstalowanej bibliotece w pliku nagłówkowym HCMAX7219.h rzeczywiście nie było stosownej metody – rysunek 19. Straciłem trochę czasu, żeby ustalić przyczynę. I wyjaśniło się dlaczego tej biblioteki nie można znaleźć przez Menedżera bibliotek ArduinoIDE. Otóż w Github-e zamieszczona jest wersja 0.2 z roku 2015, a w chwili pisania artykułu jest już wersja 0.5 z roku 2018. Jest, ale można ją ściągnąć tylko ze strony dopiero po zarejestrowaniu i zalogowaniu!

Rys.19 Brak metody 'print7seg()' w pliku nagłówkowym HCMAX7219.h

I rzeczywiście w tej wersji dodane jest wygodne wyświetlanie liczb zmiennoprzecinkowych, jak pokazuje rysunek 20. Ściągnąłem i zainstalowałem nową wersję biblioteki i skasowałem starą, która ma inną nazwę. Program zadziałał!

Rys.20 Wyświetlanie liczb zmiennoprzecinkowych

Wyświetlacze 7-segmentowe i matrycowe wyswietlacze LED

Podsumujmy tę część ćwiczeń. Otóż aktualnie wyświetlacze 7-segmentowe stopniowo tracą znaczenie. Jednak nadal je stosujemy. Gdy potrzebne są takie wyświetlacze, nie warto dołączać ich wprost do pinów procesora/ Arduino. Zabiera to wiele pinów, potrzebnych jest wiele linii/ścieżek/ przewodów. Dużo lepsze jest wykorzystanie modułów ze sterownikiem MAX7219.

Aby obsługa była lekka, łatwa i przyjemna, trzeba wykorzystać sensowną bibliotekę. Dlatego proponuję, żebyś samodzielnie przeprowadził eksperymenty i zmodyfikował podane przykłady z plików A1901.ino, A1902.ino. Przekonaj się, że wykorzystanie modułu z kostką MAX7219 i biblioteki HCMAX7219 do wyświetlania liczb jest naprawdę dobrym pomysłem!

Tak, ale TYLKO do przy użyciu wyświetlaczy 7-segmentowych. A my oczywiście dążymy do wyświetlaczy graficznych i bardzo nas interesuje sterowanie wyświetlaczy matrycowych LED. Niestety, choć biblioteka HCMAX7219 obsługuje takie matryce, nie zawsze efekt będzie zadowalający. Tak jak w moim przypadku. Otóż zakupiłem swego czasu chiński moduł zawierający zestaw czterech kostek MAX7219 i czterech wyświetlaczy matrycowych 8×8.

Fot.21 Chiński moduł zawierający zestaw czterech kostek MAX7219 i czterech wyświetlaczy matrycowych 8×8

Fotografia 21 pokazuje szczegóły jego budowy. Zmiana wyświetlacza była dziecinnie prosta, bo podłączenie jest identyczne jak na rysunku 14. Skompilowałem i załadowałem trzeci z dostarczonych przykładów (rysunek 15).

I znów pojawił się typowy niesympatyczny smaczek Arduino.

Po pierwsze biblioteka w starej wersji 0,2 nie wymaga inicjalizacji obiektu wyświetlacza, a wersja 0.5 wymaga inicjalizacji za pomocą metody .Init(), a nie .begin():

void setup() {HCMAX7219.Init();}

Po drugie wykorzystując zestaw czterech kostek MAX7219 połączonych poniekąd szeregowo, trzeba zaingerować w plik biblioteczny HCMAX7219.h, a konkretnie w linii:

#define NUMBEROFDRIVERS 1

zmienić liczbę drajwerów MAX7219 i zamiast jedynki wstawić czwórkę. A swoją drogą, pouczające jest skompilowanie i uruchomienie programu przed taką zmianą – wtedy na każdym z czterech wyświetlaczy pokazywana jest ta sama treść.

Po trzecie, po ingerencji w plik biblioteczny i skompilowaniu zawartego w bibliotece trzeciego przykładu, program zadziałał, ale obraz na wyświetlaczu był inny niż spodziewany. Zasadniczo przewijanie działało, ale nie we właściwą stronę i cztery kawałki obrazu były niejako obrócone o 90 stopni – przykład na fotografii 22. Znów straciłem sporo czasu na wyjaśnienie sytuacji.

Fot.22 Błędy w wyświetlaniu - zestaw czterech kostek MAX7219 i czterech wyświetlaczy matrycowych 8×8

Okazało się, że biblioteka przewidziana jest dla modułów sprzedawanych przez Hobby Components i na nich daje prawidłowy obraz – rysunek 23. Ja musiałbym albo przeciąć mój moduł na cztery kawałki i przekręcić każdy o 90 stopni, albo zmienić coś w programie. Demolować zgrabnego wyświetlacza nie chciałem, a biblioteka HCMAX7219 przewidziana do konkretnych modułów w sumie jest stosunkowo prosta i nie przewidziano w niej możliwości obracania obrazu.

Rys.23 Biblioteka MAX7219 - przewidziana dla modułów sprzedawanych przez Hobby Components

Możliwości takie mają inne, bardziej zaawansowane biblioteki.

Podsumowując, biblioteka HCMAX7219, najlepiej w nowej wersji 0,5 jak najbardziej może przydać się do obsługi wyświetlaczy 7-segmentowych, natomiast raczej nie przyda się dla wyświetlaczy matrycowych. A tego rodzaju wyświetlaczami będziemy zajmować się w następnych odcinkach naszego kursu.

Do pobrania
Download icon Materiały do: Kurs Arduino odcinek 19 - wyświetlacze od podstaw (matrycowe, 7-segmentowe, MAX7219)
1. Kurs Arduino: wprowadzenie 2. Kurs Arduino odcinek 1 - co to jest i jak zacząć? (sprzęt, schematy, programowanie) 3. Kurs Arduino odcinek 2 - termometry: 'diodowy', pokojowy oraz 'scalony' analogowy 4. Kurs Arduino odcinek 3 - moduł wyświetlacza LCD (HD44780) 5. Kurs Arduino odcinek 4 - czujnik BME280 (pomiar ciśnienia, wilgotności i temperatury) 6. Kurs Arduino odcinek 5 - biblioteki do trzyfunkcyjnego czujnika BME280 7. Kurs Arduino odcinek 6 - wykorzystanie łącza I2C (TWI) 8. Kurs Arduino odcinek 7 - wykorzystanie łącza SPI (karty pamięci, MAX31865, MAX31855) 9. Kurs Arduino odcinek 8 - wykorzystanie czujnika dwutlenku węgla (MH-Z19) 10. Kurs Arduino odcinek 9 - wykorzystanie modułów do odmierzania czasu 11. Kurs Arduino odcinek 10 - wykorzystanie czujników temperatury (DS18B20) 12. Kurs Arduino odcinek 11 - budowa loggera (rejestratora danych) 13. Kurs Arduino odcinek 12 - rejestracja i prezentacja danych oraz obsługa karty SD 14. Kurs Arduino odcinek 13 - rejestracja danych (wykorzystanie modułu OpenLog) 15. Kurs Arduino odcinek 14 - czym zastąpić płytkę Arduino Uno? 16. Kurs Arduino odcinek 15 - budowa rejestratora (chiński klon Arduino Pro Mini) 17. Kurs Arduino odcinek 16 - problemy z kwadratowym modułem Strong 18. Kurs Arduino odcinek 17 - czujniki do pomiaru wilgotności gleby (instalacja, konfiguracja) 19. Kurs Arduino odcinek 18 - protokół MODBUS i łącze RS-485 20. Kurs Arduino odcinek 19 - wyświetlacze od podstaw (matrycowe, 7-segmentowe, MAX7219) 21. Kurs Arduino odcinek 20a - wyświetlacze matrycowe i biblioteki MD_MAX 22. Kurs Arduino odcinek 20b - przyciski i biblioteki do obsługi wyświetlaczy 23. Kurs Arduino odcinek 20c - biblioteki do obsługi wyświetlaczy graficznych 24. Kurs Arduino odcinek 21 - moduł wyświetlacza OLED 25. Kurs Arduino odcinek 22 - moduł wyświetlacza 1,3 cala 26. Kurs Arduino odcinek 23 - przygotowanie bitmap do wyświetlania 27. Kurs Arduino odcinek 24 - omówienie fontu podstawowego (Adafruit GFX) 28. Kurs Arduino odcinek 25 - font podstawowy biblioteki Adafruit GFX 29. Kurs Arduino odcinek 26 - wykorzystanie bitmapowych fontów GFX 30. Kurs Arduino odcinek 27 - polskie znaki w glcdfont.c 31. Kurs Arduino odcinek 28 - zmiana ulepszonych fontów GFX
Tematyka materiału: MODBUS, MAX7219
AUTOR
Źródło
Elektronika dla Wszystkich październik 2019
Udostępnij
UK Logo