RgNt5Mfc9aHvi
Zdjęcie przedstawia płytkę Arduino z podłączonymi kabelkami w wyświetlaczem pokazującym godzinę, temperaturę, dzień tygodnia oraz datę. Nad wyświetlaczem widoczne są kolorowe kabelki z wtyczkami wpięte w panel.

I_R_W15_M03 Przykładowe projekty

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

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.