Wstęp
Osobiście wolę ten sam wyświetlacz tylko wyposażony w konwerter I2C dzięki któremu ilość pinów jaka jest wymagana do podłączenia LCD do mikrokontrolera zostaje znacznie zmniejszona.
Z drugiej strony wyświetlacz jest prawie 10 zł tańszy w porównaniu z odpowiednikiem z konwerterem. Wobec tego jeśli nie zamierzamy wykorzystywać wielu pinów do innych celów, ten wyświetlacz będzie lepszym rozwiązaniem.
Rys. 1.1. Wygląd zewnętrzny wyświetlacza
Podłączenie
Opis wyprowadzeń i sposobu podłączenia podałem w tablicy poniżej:
Pin wyświetlacza
|
Opis
|
Pin Arduino
|
VSS
|
Masa GND
|
GND
|
VDD
|
Zasilanie 5V
|
5V
|
V0
|
Kontrast
|
Potencjometr
|
RS
|
Register Select – Wybranie rejestru instrukcji – stan niski, wybranie rejestru danych –
stan wysoki
|
12
|
RW
|
Read/Write czyli odczyt(stan niski)/
zapis stan wysoki
|
GND
|
E
|
|
11
|
D0-D3
|
Linie danych, nie wykrzystywane w 4
bitowym trybie pracy.
|
-
|
D4
|
Linie danych
wykorzystywane
|
5
|
D5
|
4
|
|
D6
|
3
|
|
D7
|
2
|
|
A
|
Podświetlanie wyświetlacza 5V lub 3.3V
|
5V
|
K
|
Masa
podświetlenia
|
GND
|
Na wszelki wypadek na wejście zasilania podświetlenia wyświetlacza należy dołożyć rezystor ograniczający w celu zabezpieczenia układu (200 - 500 Ohmów, 1k też będzie).
Poniżej na rysunku 1.2 przedstawiłem sposób podłączenia układu przygotowany w programie Fritzing.
Rys. 1.2. Sposób podłączenia wyświetlacza
Program 1
W Arduino właściwie do wszystkich modułów, czujników i innych elementów elektronicznych biblioteki zostały przez kogoś już przygotowane. Wobec tego do ogarnięcia działania układu należy poznać działanie oraz sposoby deklaracji już zdefiniowanych funkcji.
Biblioteka pozwala na obsługę takich komend jak [1]:
- LiquidCrystal() - funkcja odpowiedzialna za inicjalizację całego wyświetlacza;
- begin() - przesyła informacje do programu odnośnie ilości wierszy i kolumn;
- clear() - czyści wyświetlacz;
- home() - umieszcza kursor w prawym górnym rogu wyświetlacza;
- setCursor() - ustawia pozycje kursora
- write() - wyswietla dane na wyswietlaczu
- print() - wyświetla wprowadzony do funkcji tekst;
- cursor() - wyświetla kursor na ekranie
- noCursor() - wyłącza wyświetlanie kursora;
- blink() - włączenie migania kursora;
- noBlink() - wyłączenie migania kursora;
- display() - włącza wyświetlacz po tym jak został wyłączony przy użyciu funkcji noDisplay();
- noDisplay() - wyłącza wyświetlacz;
- scrollDisplayLeft() - przesuwa zawartość wyświetlacza w lewo;
- scrollDisplayRight() - przesuwa zawartość wyświetlacza w prawo;
- autoscroll() - automatyczne przesuwanie tekstu, nie wymazuje tekstu już wpisanego;
- noAutoscroll() - wyłączenie automatycznego przesuwania;
- leftToRight() - ustawia kierunek wpisywanego tekstu od lewej do prawej;
- rightToLeft() - odwrotnie niż funkcja powyżej;
- createChar() - stworzenie tablicy z wyświetlanym znakiem.
Program będzie inicjalizował cały wyświetlacz, wpisywał teksty w wybrane miejsca oraz zostanie stworzony przykładowy kształt.
Do stworzenia własnego kształtu wykorzystuje się funkcję lcd.createChar() podaje się tam numer stworzonego wcześniej kształtu (w programie to byte jakisksztalt[8]). Kształt wyświetlany jest poprzez funkcje lcd.write().
//Dolaczenie biblioteki #include <LiquidCrystal.h> //Inicjalizacja poszczególnych pinów LiquidCrystal lcd(12, 11, 5, 4, 3, 2); byte jakisksztalt[8] = { B00100, B01000, B10000, B01000, B00100, B00010, B00001, }; void setup() { //Ustawienie liczby kolum i wierzy lcd.createChar(0, jakisksztalt); lcd.begin(16, 2); lcd.print("hello, world!"); lcd.setCursor(0,1); lcd.print("Drugi"); lcd.setCursor(6, 1); lcd.write(byte(0)); } void loop() { }