Lekcja 9: Wyświetlamy reklamy!

Często istnieje potrzeba otrzymania informacji od urządzenia w postaci znaków czy liczb wyświetlanych bezpośrednio na urządzeniu. Zdarza się tak w sytuacji gdy urządzenie jest na własnym zasilaniu i nie jest podłączone do komputera. Wtedy niezawodnym i prostym rozwiązaniem jest podłączenie wyświetlacza LCD.
Rynek wyświetlaczy jest tak bogaty, że ceny tych urządzeń spadły i już za kilkanaście złotych można kupić wyświetlacz LCD, który potrafi wypisywać 16 znaków w dwóch linijkach. My postaramy się wykorzystać w niniejszej lekcji urządzenie oznaczone symbolem JHD162A-YG zgodne z HD44780.

Symbol: JHD162A-YG. Sterownik zgodny z HD44780.
  • Wyświetlacz: LCD 2x16 znaków,
  • Sterownik: SPLC780D zgodny z HD44780
  • Podświetlanie: niebieski, białe znaki
  • Rozmiar modułu: 80 x 36 mm
  • Wymiary znaku: 2.45 x 5.00 mm
  • Zakres temperatur pracy: od -20 do +70 stopni C

Aby móc podłączyć wyświetlacz do płytki musimy jednak wykorzystać lutownicę. Wyświetlacze kupujemy z gotową płytką sterującą ale nie ma ona przygotowanych wyjść. Trzeba wlutować piny w wyprowadzone otwory. Mamy tu do wyboru różne typy pinów: proste i pod kątem (patrz rysunek poniżej).

Wybrałem piny kątowe, gdyż będzie wtedy możliwość wpięcia wyświetlacza pod kątem prostym. Oprócz możliwości wpięcia wyświetlacza w płytkę możemy skorzystać z przyłączenia za pomocą przewodów z wtykami męsko-żeńskimi. Wyłamujemy zestaw 16 pinów z taśmy i całość lutujemy do wyświetlacza.

Opis pinów wyświetlacza przedstawia poniższa tabelka:

NrNazwaOpis
1VSSMasa
2VDDZasilanie (+5V)
3V0Kontrast
4RSWybór rejestru instrukcji wyświetlacza (stan niski) albo rejestru danych (stan wysoki)
5R/WOdczyt (stan niski) / Zapis (stan wysoki). W trybie bez odczytu flagi zajętości, wyprowadzenie może zostać podpięte do masy.
6EJeśli wystąpi zbocze opadające, wyświetlacz jest gotów do odczytu danych z magistrali.
7-14DB0-DB7Magistrala danych. Po tych liniach przesyłane są dane oraz instrukcje dla wyświetlacza.
15LEDAZasilanie podświetlania.
16LEDKMasa podświetlania

Jak widać z opisu pinów, wystarczy zasilić wyświetlacz napięciem 5V, ustalić odpowiednie napięcie dla kontrastu wyświetlacza (wykorzystamy w tym celu potencjometr - czyli opornik z regulowaną rezystancją 10kOhm), oraz podawać na 7-14 instrukcje do wyświetlenia.

Potencjometr zbudowany jest z trzech nóżek i obrotowego mechanizmu zmieniającego wielkość oporu. Dwie z nóżek połączone są ścieżką o stałym oporze. Trzecia połączona jest ze ślizgaczem, którego położenie na ścieżce można regulować. Ścieżkę oporową wykonuje się z węgla lub zwojów drutu oporowego. Jak widzimy na powyższym schemacie, potencjometr działa na zasadzie dzielnika napięcia.

Składamy układ wg poniższego schematu.


Piszemy kod jak poniżej:

        #include < LiquidCrystal.h>
        LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
        void setup() {
                lcd.begin(16, 2);
         }
        void loop() {
                lcd.setCursor(0,0);
                lcd.print("Arduino jest ");
                lcd.setCursor(5,1);
                lcd.print("super! ");
        }

W linii 1 załączamy bibliotekę LiquidCrystal, która odpowiada za sterowanie funkcjami wyświetlacza.
W linii 2 podajemy piny sterujące wyświetlaczem.
W linii 4 podajemy liczbę znaków i wierszy w wyświetlaczu.
W linii 7 ustawiamy kursor na pierwszy wiersz i pierwszy znak (wiersze i kolumy numerowane są od 0).
W linii 8 wyświetlamy napis.
W linii 9 ustawiamy kursor na 6 znak drugiego wiersza.
W linii 10 wyświetlamy napis.

Uruchamiamy i działa!
Jak widzimy - to proste! Dlatego skomplikujemy kod tak, by tekst przewijał się jak w reklamach sklepowych czy peronach stacji kolejowych.


         #include < LiquidCrystal.h>
         LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
         void setup() {
                lcd.begin(16, 2);
                lcd.print("Arduino jest super!");
                delay(1000);
                }
        void loop() {
                lcd.setCursor(0,0);
                for (int i=0; i<15; i++){
                        lcd.scrollDisplayLeft();
                        delay(200);
                } }

Jak widzimy, w kodzie jest kilka zmian.
W linii 5 mamy zadeklarowany tekst do wyświetlenia.
W linii 10 zaczyna się pętla, która dla 16 znaków wykonuje funkcję lcd.scrollDisplayLeft() przesuwającą znaki w lewo z krótką przerwą co 200 milisekund (linia 12).
Oczywiście biblioteka LiquidCrystal zawiera jeszcze możliwość przesuwania w prawo instrukcją lcd.scrollDisplayRight oraz wiele innych funkcji. Dokładny ich opis znajduje się na oficjalnej stronie Arduino.
W lekcjach późniejszych (grupa zaawansowana), będziemy wykorzystywać wyświetlacz do prezentowania danych z czujników i wrócimy wtedy do jego dodatkowych funkcji.



Powrót do spisu materiałów

Nowy zakup

Zakupiliśmy nowy moduł Arduino Leonardo i Yun z obsługą sieci przez Ethernet i WiFi.

Nowe czujniki

Mamy nowe czujniki żyroskopowe. Możemy kontrolować położenie robota.

Zajęcia otwarte

Zapraszamy na zajęcia otwarte uczniów klas V, VI i gimnazjów, które odbywają się w każdy czwartek w godz. 15.00-16.00 (Wcześniej prosimy o kontakt).