Kurs Arduino #8: Obsługa LCD 16×2 20×4 HD44780

Zatem już mamy wszystko skonfigurowane, pozostały nam tylko funkcje odpowiadające za wyświetlanie znaków.

Pierwsza funkcja bez której się nie obejdziemy to lcd.setCursor():

Jak widać w tej funkcji mamy małą pułapkę- numeracja kolumn i wierszy zaczyna się od 0 a nie od 1. Po takim ustawieniu nasz wyświetlacz wie, w którym miejscu zacząć wyświetlać znaki. W przeciwnym wypadku na wyświetlaczu nie pojawi się nic albo w randomowych miejscach.

Druga funkcja, właściwa już to lcd.print():

Przy pomocy tej funkcji możemy wyświetlać napisy, czy też zmienne i tak na ten moment to tyle z podstawowych funkcji. W dalszej części przedstawię dodatkowe funkcje biblioteki.

3. Hello World!

Klasykiem, już jest fakt, że pierwszy program programisty to wyświetlający się napis „Hello World!”. Zatem nie bądźmy gorsi i też wyświetlmy ten napis

kurs 8.1

Tak jak omawiałem wcześniej. Najpierw dodajemy do naszego programu bibliotekę obsługującą wyświetlacz. Następnie ustalamy pod jakie piny podłączamy nasz ekran (wybrałem wariant 2.). Gdy już to zrobimy to do bloku setup() wpisujemy informację o naszym ekranie, jaką posiada rozdzielczość oraz informację o tym, że ma być wyczyszczony. Do pętli głównej programu wprowadzamy informację w jakim miejscu znajduje się kursor ekranu, względem którego są wyświetlanie znaki. W naszym przypadku jest to pierwsza kolumna i pierwszy wiersz (lewy górny róg). Teraz pozostało nam już tylko wysłać do naszego ekranu napis „Hello World!”. Po tak wykonanym programie powinniśmy otrzymać efekt jak na zdjęciu poniżej:

Hello

Rozbudujmy nasz program !
oprócz wyświetlania „Hello World!” dodajmy możliwość odczytu wartości przetwornika A/C, do którego podłączyliśmy potencjometr

kurs 8.2

Program jest ten sam co poprzednio z tym, że doszła nam nowa zmienna o nazwie „wartosc”, w której przechowujemy wartość przetwornika A/C oraz konfigurację pinu analogowego A0 dla potencjometra. Od 32. linijki kodu mamy kolejne nowości.  To znaczy chcemy w trzecim wierszu wyświetlacza wyświetlić napis „Wartosc A/C: ” a obok niego wartość naszej nowej zmiennej. Jeżeli uważałeś na poprzednich częściach kursu to widzisz tutaj zapewne analogię do kursu o UART– praktycznie taki sam sposób transmisji danych. Teraz czas sprawdzić program.

Jak widzisz na ekranie dzieją się dziwne rzeczy w szczególności z wartością odczytu A/C. Zamiast odczytać wartość jednocyfrową to ekran pokazuje nam jakąś wartość trzycyfrową, która nie ma pokrycia w rzeczywistości. Dzieje się tak za sprawą tego, że nasz ekran w pętli głównej programu nie jest odświeżany. To jest tak samo jak z monitorem. Jeżeli nie byłby odświeżany to po zamknięciu okienka ono by się jeszcze wyświetlało do następnego włączenia monitora. Aby zaradzić temu to musimy dodać czyszczenie ekranu na początku pętli oraz opóźnienie czasowe żeby nasz obraz był statyczny. Zatem poprawiona pętla powinna wyglądać tak:

Dla mnie wartość 18ms sprawia, że obraz jest statyczny, z Twoim ekranem może być inaczej (ale nie musi)