Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Budowa wyświetlacza LCD 2×16

RRDBllJLER7HR1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Wyświetlacz LCD jest wyposażony w 16 złączy:

  • VSS – masa

  • VDD – napięcie zasilające (+5 V)

  • V0 – regulacja kontrastu

  • RS – wybór rejestru instrukcji wyświetlacza (stan niski) albo rejestru danych (stan wysoki)

  • RW (Read/Write) – odczyt (stan niski)/zapis (stan wysoki); w trybie bez odczytu flagi zajętości, wyprowadzenie może zostać podłączone do masy

  • E (Enable) – jeśli pojawi się zbocze opadające, wyświetlacz jest gotowy do odczytu danych z magistrali

  • D0–D7 – magistrala danych; po tych liniach przesyłane są dane oraz instrukcje dla wyświetlacza

  • A – zasilanie podświetlenia

  • K – masa podświetlania

Wyświetlacz można regulować (ustawić większy lub mniejszy kontrast), aby poprawić czytelność pokazywanych napisów. Potrzebny jest do tego kolejny element – potencjometr, czyli rezystor, którego oporność można zmieniać.

R5w3i7tCDSF6w
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Potencjometr ma postać pokrętła umieszczonego w obudowie z trzema nóżkami. Właśnie za pomocą pokrętła zmieniamy wartość rezystancji.

Przypomnij sobie układ dzielnika napięcia, który omawialiśmy w czasie lekcji poświęconej podstawom elektroniki. Potencjometr jest regulowanym dzielnikiem napięcia: rezystancja między jego dwoma skrajnymi nóżkami jest stała, podobnie jak oporność połączonych szeregowo rezystorów, z których zbudowany jest dzielnik. Zmienia się natomiast rezystancja między wyprowadzeniem środkowym a dowolną ze skrajnych nóżek – zależy ona od położenia pokrętła potencjometru. W rezultacie możemy regulować wartość napięcia wyjściowego dzielnika. Wraz ze zmianami napięcia zmienia się z kolei kontrast wyświetlacza.

Oto schemat podłączenia wyświetlacza do układu z czujnikiem temperatury, diodą LED i brzęczykiem:

RqoXrK1L8vvHo1

Dlaczego tak właśnie należy podłączyć wyświetlacz? Wynika to z jego budowy oraz z bibliotekibibliotekabiblioteki, którą dołączymy do szkicu. Biblioteki są plikami, w których opisano rozmaite funkcje. Dzięki bibliotekom nie trzeba tworzyć własnych funkcji w szkicu (często zajęłyby one kilkaset linii kodu), lecz wystarczy skorzystać z gotowych zestawów instrukcji.

Biblioteka wykorzystywana do obsługi wyświetlacza LCD została opracowana właśnie dla układu połączeń widocznego na schemacie. Jeżeli zatem wepniesz styki przewodów w inne piny niż te pokazane na rysunku, wyświetlacz nie będzie działał. W takiej sytuacji należałoby dokonać zmian w bibliotece, jednak takiego zadania podejmują się tylko doświadczeni programiści.

Podłączamy wyświetlacz LCD

Lista elementów potrzebnych do skonstruowania termometru z wyświetlaczem:

  • kompletny układ termometru z poprzedniej lekcji („Arduino – brzęczyk”)

  • wyświetlacz LCD 2×16

  • bateria 9 V

  • klips na baterię 9 V

  • rezystor 220 omega

  • potencjometr

  • przewody i zworki połączeniowe

Bazą obecnego projektu jest układ zbudowany podczas poprzedniej lekcji.

RrMzTz1k3tXIs
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  1. Wpinamy wyświetlacz do płytki stykowej. Najlepiej podłączyć go z boku płytki, aby zostało miejsce na potencjometr.

    R1LjajNH99gdu
    Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

2. Użyjemy sześciu przewodów o różnych kolorach. Wpinamy styk pierwszego przewodu (w przykładzie jest ma on fioletową koszulkę) do wiersza odpowiadającego złączu D7 na płytce stykowej. Drugi koniec podłączamy do pinu 2. na płytce Arduino.

W taki sam sposób łączymy wyprowadzenie D6 z pinem 3, D5 z pinem 4., D4 z pinem 5., E z pinem 11. i w końcu RS z pinem 12.

R1TA7gmIjnM7S
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  1. Podłączamy potencjometr – wpinamy go tak, aby z obu stron potencjometru zostały wolne kolumny.

R17QL4HNPr89z
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

4. Łączymy  potencjometr z wyświetlaczem – styk przewodu wtykamy w wierszu odpowiadającym wyprowadzeniu V0, a drugi wpinamy w wierszu, w którym znajduje się środkowa nóżka potencjometru.

  1. Doprowadzamy do potencjometru zasilanie i masę, łącząc jedną nóżkę z szyną dodatnią, a drugą z szyną ujemną.

RAPi1LrnPeadH
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

6. Łączymy piny K oraz VSS z szyną ujemną płytki stykowej.

RjOGZ0kKy4kMx
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

7. Wpinamy rezystor tak, aby połączyć pin A z dodatnią szyną płytki stykowej.

RlnbPevvom1kG
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  1. Doprowadzamy zasilanie z dodatniej szyny płytki stykowej do pinu VDD.

Rn0DNbT7BHxdl
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.
  1. Podłączamy masę (szynę ujemną płytki stykowej) do pinu RW.

RYObtSqovR4QP
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

10. Gotowy układ wygląda tak jak na rysunku niżej. Podłączamy płytkę Arduino do komputera.

R1JWEWXyKzyjt
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Programowanie termometru z wyświetlaczem

Uruchamiamy aplikację Arduino IDE i zapisujemy nowy szkic.

1. Deklarujemy jedną stałą i dwie zmienne. Wskazujemy dzięki nim piny, do których podłączono czujnik temperatury, diodę i brzęczyk. Następnie załączamy bibliotekę niezbędną do obsługi wyświetlacza. Plik biblioteki ma rozszerzenie .h, a dodaje się go do szkicu korzystając z dyrektywy #include (potocznie mówimy, że „inkludujemy” bibliotekę). Sama biblioteka nosi nazwę LiquidCrystal.h.

Musimy też określić, z którymi pinami współpracuje wyświetlacz LCD – nasz jest podłączony do pinów numer 12, 11, 5, 4, 3, 2.

Zwróć uwagę, że najpierw załączamy bibliotekę, a dopiero później wskazujemy piny. Jeżeli wprowadzimy te dwie linie w odwrotnej kolejności, to podczas kompilacji wystąpi błąd.

Linia 1. const int czujnikPin znak równości A0 średnik. Linia 2. int ledPin znak równości 7 średnik. Linia 3. int buzzPin znak równości 6 średnik. Linia 4. kratka include otwórz nawias ostrokątny LiquidCrystal kropka h zamknij nawias ostrokątny. Linia 5. LiquidCrystal lcd otwórz nawias okrągły 12 przecinek 11 przecinek 5 przecinek 4 przecinek 3 przecinek 2 zamknij nawias okrągły średnik.

2. W ciele funkcji setup() wskazujemy piny wyjściowe. Podobnie jak w poprzednim projekcie są to piny, do których podłączyliśmy diodę LED oraz brzęczyk.

Linia 1. void setup otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. pinMode otwórz nawias okrągły ledPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 3. pinMode otwórz nawias okrągły buzzPin przecinek OUTPUT zamknij nawias okrągły średnik. Linia 4. zamknij nawias klamrowy.

3. Wewnątrz funkcji loop() definiujemy nową zmienną o nazwie odczyt. Korzystając z funkcji analogRead() pobieramy dane z czujnika, po czym obliczamy rzeczywistą temperaturę. Postępujemy tak samo, jak w przypadku termometrów z poprzednich lekcji.

Linia 1. void loop otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. int odczyt znak równości analogRead otwórz nawias okrągły czujnikPin zamknij nawias okrągły średnik. Linia 3. float napiecie znak równości odczyt asterysk 5 kropka 0 średnik. Linia 4. napiecie znak równości napiecie prawy ukośnik 1024 kropka 0 średnik. Linia 5. float tempC znak równości otwórz nawias okrągły napiecie minus 0 kropka 5 zamknij nawias okrągły asterysk 100 średnik. Linia 6. zamknij nawias klamrowy.

4. Wcześniej przedstawialiśmy poziom temperatury na ekranie. Teraz skorzystamy z wyświetlacza LCD. Najpierw, za pomocą instrukcji lcd.begin(16, 2), określamy, z  jakim wyświetlaczem mamy do czynienia (w naszym przypadku pokazuje on po 16 znaków w dwóch wierszach).

Następnie, wywołując funkcję setCursor(), wskazujemy początkowe położenie kursora. Od tego właśnie miejsca będzie wyświetlany wynik pomiaru temperatury. Wywołujemy jeszcze funkcję lcd.print() – jest ona odpowiednikiem znanej już nam komendy Serial.print(). Różnica polega na tym, że obecnie komunikat ma pojawić się na wyświetlaczu. Ustawiamy również opóźnienie, określające w jakich odstępach czasowych powinien odbywać się pomiar temperatury (oraz wyświetlanie rezultatu).

Linia 1. lcd kropka begin otwórz nawias okrągły 16 przecinek 2 zamknij nawias okrągły średnik. Linia 2. lcd kropka setCursor otwórz nawias okrągły 0 przecinek 0 zamknij nawias okrągły średnik. Linia 3. lcd kropka print otwórz nawias okrągły tempC zamknij nawias okrągły średnik. Linia 4. lcd kropka print otwórz nawias okrągły cudzysłów st kropka C cudzysłów zamknij nawias okrągły średnik. Linia 5. delay otwórz nawias okrągły 1000 zamknij nawias okrągły średnik.

5. Pozostaje tylko ustalić, co się stanie, gdy temperatura przekroczy podaną wartość, na przykład 29°C. Przy wyższej temperaturze powinna się zapalić dioda oraz uaktywnić brzęczyk. W przeciwnym wypadku napięcie na obu pinach, do których te elementy są podłączone, będzie mieć poziom niski.

Linia 1. if otwórz nawias okrągły tempC zamknij nawias ostrokątny 29 zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. digitalWrite otwórz nawias okrągły buzzPin przecinek HIGH zamknij nawias okrągły średnik. Linia 3. digitalWrite otwórz nawias okrągły ledPin przecinek HIGH zamknij nawias okrągły średnik. Linia 4. zamknij nawias klamrowy else otwórz nawias klamrowy. Linia 5. digitalWrite otwórz nawias okrągły buzzPin przecinek LOW zamknij nawias okrągły średnik. Linia 6. digitalWrite otwórz nawias okrągły ledPin przecinek LOW zamknij nawias okrągły średnik. Linia 7. zamknij nawias klamrowy.

6. Zapisujemy szkic, weryfikujemy go i przesyłamy do płytki.

Przy pierwszym uruchomieniu układu może być konieczna regulacja kontrastu. Aby obraz na wyświetlaczu był jak najbardziej czytelny, eksperymentujemy z ustawieniem pokrętła potencjometru. Operację taką pokazano w filmie niżej.

RJCuZiaRdutK0
Nagranie filmowe dotyczące regulacji kontrastu. Widoczna jest dłoń ze śrubokrętem, którym dokręcany jest potencjometr. Wraz z dokręcaniem potencjometru na płytce, zmienia się kontrast na wyświetlaczu.

Czy wszystko działa? Zapewne tak. Odłączamy zatem kabel USB od płytki Arduino. Za pomocą przewodu z klipsem łączymy natomiast baterię 9 V z gniazdem zasilania płytki. Możemy teraz przestawić termometr w dowolne miejsce i przekonać się, czy podaje on wyniki pomiaru temperatury.

R1RGgXjz5Cjot1
Źródło: Contentplus.pl Sp. z o.o., licencja: CC BY-SA 3.0.

Tinkercad

Zróbmy symulację układu z wyświetlaczem LCD 2x16, za pomocą środowiska Tinkercad.

RVMlti9haWuif

Jako że będziemy używać wyświetlacza LCD wybierzemy dużą płytkę stykową.

Z listy rozwijanej Komponenty Podstawowe, wybierz Wszystko.

RySgcuRoc4435

Znajdź dużą płytkę i umieść w głównym oknie.

R1NDLJjrHAdAh

Znajdź i wstaw na płytkę stykową czujnik temperatury.

RdWPD7CJxpNCy

Znajdź i dodaj do płytki stykowej diodę LED.

RtutPocdfpSpz

Jako że w dostępnych komponentach nie mamy dostępnego brzęczyka, skorzystamy z  przetwornika piezo.

R1DCTcuVb9Zpr

Do naszej płytki dodajmy teraz wyświetlacz LCD 2x16.

RfWCLKz8MEM2e

Dodajmy teraz potencjometr. Ustaw jego wartość na 10 komega.

RamIMN9VDQtg0

Do naszej płytki stykowej dodajmy trzy rezystory o wartości 220 omega. Jeden dodamy do anody diody LED, jeden do przetwornika piezo i jeden do anody diody w wyświetlaczu LCD.

RJ6DLkTZuGYx3

Dodaj teraz moduł Arduino Uno do okna symulacji.

Rm8R17E1chIq9

Zaczniemy od podpięcia szyny dodatniej i ujemnej z płytką Arduino Uno. Podepniemy ze sobą szyny górne i dolne.

RxHISVAzYQFPy

Do ujemnej szyny podepniemy: trzecią nóżkę czujnika temperatury, katodę diody LED, wolną nóżkę przetwornika piezo, pierwszy pin (GND) wyświetlacza LCD, piąty pin (RW) wyświetlacza LCD, szesnasty pin (katoda diody) wyświetlacza LCD oraz pierwszą nóżkę potencjometru.

R1YcFtrwtlyBu

Do dodatniej szyny podpinamy: pierwsza nóżkę czujnika temperatury, drugi pin (VCC) wyświetlacza LCD oraz trzecią nóżką potencjometru.

RadEehw4v95Df

Środkową nóżkę potencjometru łączymy z pinem V0 wyświetlacza LCD.

R17MCAlE1WNrH

Środkową nóżkę czujnika temperatury łączymy z pinem A0 Arduino Uno.

RWM6xu7n4kmt2

Wolną nóżkę rezystora wpiętego z przetwornik piezo podpinamy do pinu D6 Arduino.

RC7FFypd05uJt

Wolną nóżkę rezystora wpiętego w anodę diody LED podpinamy pod pin D7 Arduino.

R1dNdTOWn1bCM

Teraz przejdziemy do połączenia Arduino z wyświetlaczem LCD. Podpinamy odpowiednio:

  • pin RS wyświetlacza z pinem D12 Arduino,

  • pin E wyświetlacza z pinem D11 Arduino,

  • pin DB4 wyświetlacza z pinem D5 Arduino,

  • pin DB5 wyświetlacza z pinem D4 Arduino,

  • pin DB6 wyświetlacza z pinem D3 Arduino,

  • pin DB7 wyświetlacza z pinem D2 Arduino.

RoXtjkI4eKDZr

Przejdźmy teraz do pisania kodu. W tym celu klikamy na przycisk Kod, z listy rozwijanej wybieramy Tekst, potwierdzamy chęć zmiany widoku i czyścimy zawartość.

Przepisz kod układu z wyświetlaczem LCD 2x16.

ROsz3RZcxuB6D

Uruchom symulację. Jeśli na wyświetlaczu nic się nie pokazuje, musisz ustawić kontrast potencjometrem. Kliknij na niego lewym przyciskiem myszy i przekręć pokrętło aż na wyświetlaczu pojawią się dane.

Film z ustawienia kontrastu.

RgYSDHq7jjG9b
Film nawiązujący do treści materiału dotyczącej wyświetlacza LCD, w którym podczas symulacji zostaje uregulowany kontrast.

Sprawdźmy teraz jak działa nasz termometr z wyświetlaczem LCD.

Film z działania programu.

R1LQ5FeWH4UtS
Film nawiązujący do treści materiału dotyczącej wyświetlacza LCD, w którym to podczas symulacji sprawdzano działanie skonstruowanego czujnika temperatury oraz wyświetlacza.

Słownik

biblioteka
biblioteka

plik zawierający podprogramy (procedury/funkcje) ułatwiające obsługę urządzeń zewnętrznych wraz z wykorzystywanymi w nich predefiniowanymi stałymi oraz typami danych