Jak obsługiwać wyświetlacz LCD z Arduino

tempW dzisiejszym wpisie chciałem w prosty sposób pokazać, jak obsługiwać wyświetlacz LCD z Arduino.  W przykładzie został użyty popularny wyświetlacz 2×16 podświetlany, w kolorze niebieskim z konwerterem magistrali I2C. Aby przykład był bardziej sensowny niż tylko wyświetlanie stałego tekstu, podłączymy do układu czujnik temperatury ds18b20 i będziemy pokazywać aktualną temperaturę w pomieszczeniu.

Co nam będzie potrzebne:

  • Arduino Uno Rev 3
  • wyświetlacz LCD 2×16 znaków
  • konwerter LCD HD44780 I2C
  • termometr cyfrowy DS18B20
  • rezystor 4,7KΩ
  • płytka prototypowa, kable połączeniowe

Wyświetlacz LCD ze sterownikiem HD44780 jest jednym z najpopularniejszych urządzeń tego typu. Głównymi jego zaletami są: niska cena, duża dostępność oraz prosta obsługa.
Przed przystąpieniem do montażu układu należy dokładnie przylutować goldpiny do wyświetlacza oraz konwertera.


 

Zaczynamy!

1. Podłączenie wyświetlacza

Po przylutowaniu goldpinów podpinamy wyświetlacz i konwerter na płytce prototypowej. Powinno to wyglądać mniej więcej jak na poniższym obrazku. Oczywiście można wlutować konwerter przy wyświetlaczu – kwestia jak komu wygodniej.

Wyświetlacz LCD 2x16
Wyświetlacz LCD 2×16 znaków niebieski + konwerter LCD HD44780 I2C

Kolejnym etapem jest podłączenie układu do Arduino. W naszym wypadku są to tylko 4 przewody (VCC,GND, SCL,SDA).

VCC wpinamy do zasilania (5V) na płytce Ardunio, GND do masy, natomiast SCL i SDA podpinamy do gniazd zaznaczonych na poniższym obrazku:

ArduinoUno_R3_Pinouts

 

 

Kolejnym krokiem będzie pobranie i instalacja biblioteki do obsługi wyświetlacza. Bibliotekę możemy pobrać z serwisu: https://bitbucket.org/fmalpartida. Ściągnięty plik należy rozpakować, a następnie cały folder LiquidCrystal umieścić w katalogu bibliotek Arduino (libraries). Jeszcze przed pierwszym uruchomieniem wyświetlacza musimy sprawdzić adres na szynie I2C pod jakim widnieje nasze urządzenie. Będzie to jednocześnie test poprawności instalacji.

Sketch który wyświetli nam adres konwertera na szynie I2c dostępny jest pod adesem: http://playground.arduino.cc/Main/I2cScanner . Po wgraniu sketach do Arduino, w monitorze portu szeregowego powinniśmy zobaczyć coś takiego:

serialmonitor

W moim przypadku konwerter dostępny jest pod adresem 0x27.

Następnie wgrywamy poniższy sketch, podmieniamy wartość w trzeciej linijce kodu na taką którą wcześniej pokazał serial monitor.

Po poprawnym wgraniu kompilacji na ekranie zobaczymy statyczny tekst.


 

Podłączamy termometr cyfrowy DS18B20

DS18B20 to cyfrowy czujnik temperatury firmy Dallas. Wysyła dane o temperaturze wykorzystując do tego tylko jeden pin cyfrowy i specjalny protokół o nazwie 1-Wire. Do tego samego pinu możemy podłączyć wiele czujników. Czujnik podaje sprzętowo temperaturę w stopniach Celsjusza.

Poprzedni układ uzupełniamy o czujnik i rezystor 4,7KΩ

DS18b20 - sposób podłączenia

 

Po zmontowaniu układu wgrywamy dwie biblioteki do naszego środowiska. Pierwszą jest biblioteka OneWire, która zapewnia obsługę protokołu 1-Wire – pobierz. Drugą bibilioteką jest biblioteka o nazwie DS18B20 – pobierz. Służy do obsługi czujnika. Każdy czujnik ma indywidualny 64-bitowy numer seryjny, dzięki czemu łatwo go rozpoznać jeżeli w układzie jest więcej czujników. Numer jest unikalny dla każdego wyprodukowanego czujnika.

Aby odczytać numer seryjny naszego czujnika skorzystamy z gotowego sketcha który jest dostępny po wgraniu bibliotek. Dostępny jest on w PRZYKŁADY->DS18B20->search_ds18b20_addresses , jeżeli wszystko jest poprawnie podłączone, po wgraniu szkicu i uruchomieniu serial monitora powinniśmy zobacz nasz unikalny adres. Kopiujemy odczytany adres gdyż będzie potrzebny w dalszym sketchu.

Aby na wyświetlaczu zobaczyć aktualną temperaturę wgrywamy następujący szkic, pamiętając o podmianie adresu czujnika oraz adresu konwertera.

Gotowe!

temp

8 myśli na temat “Jak obsługiwać wyświetlacz LCD z Arduino

  1. Cześć, po próbie wgrania sketch’a od statycznego tekstu wywala mi taki błąd – co może być przyczyną ?

    sketch_oct27a.ino:1:10: error: #include expects „FILENAME” or
    sketch_oct27a.ino:2:10: error: #include expects „FILENAME” or
    sketch_oct27a:4: error: ‚LiquidCrystal_I2C’ does not name a type
    sketch_oct27a.ino: In function ‚void setup()’:
    sketch_oct27a:7: error: ‚lcd’ was not declared in this scope
    sketch_oct27a.ino: In function ‚void loop()’:
    sketch_oct27a:19: error: ‚lcd’ was not declared in this scope

    1. Jest na to wiele sposobów, najprostszym jest użycie funkcji. Każda funkcja może niezależnie wyświetlać dane z rożnych czujników. Co dokładnie chcesz wyświetlić/podłączyć?

      1. Dziękuje za odpowiedz. Chce dodać kolejny czujnik Dallas i wyświetlać wartości z 2 czujników powiedzmy piec co oraz temp zew i wyświetlać ich nazwy

        1. Proponuje zrobić dwie funkcje. W funkcji zamieściłbym odczyt pomiaru oraz wyświetlenie na LCD. To samo w drugiej funkcji. Pomiędzy dwoma funkcjami oczywiście delay, chyba że chcesz przyciskiem wybierać aktualną temperaturę.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *