w tym samouczku wyjaśnię, jak skonfigurować LCD na Arduino i pokażę Ci wszystkie różne sposoby programowania. Pokażę Ci, jak drukować tekst, przewijać tekst, tworzyć niestandardowe znaki, migać tekst i tekst pozycji. Świetnie nadają się do każdego projektu, który generuje dane, i mogą sprawić, że twój projekt będzie o wiele bardziej interesujący i interaktywny.
wyświetlacz, którego używam, to Wyświetlacz LCD 16×2, który kupiłem za około $5. Być może zastanawiasz się, dlaczego nazywa się to wyświetlaczem LCD 16×2., Część 16×2 oznacza, że wyświetlacz LCD ma 2 linie i może wyświetlać 16 znaków w każdej linii. Dlatego ekran LCD 16×2 może wyświetlać do 32 znaków jednocześnie. Możliwe jest wyświetlanie więcej niż 32 znaków z przewijaniem.
kod w tym artykule jest napisany dla LCD, które używają standardowego sterownika Hitachi HD44780. Jeśli twój LCD ma 16 pinów, to prawdopodobnie ma Sterownik Hitachi HD44780. Wyświetlacze te mogą być podłączone w trybie 4-bitowym lub 8-bitowym. Okablowanie ekran LCD w trybie 4-bitowym jest zwykle preferowany, ponieważ wykorzystuje cztery mniej przewodów niż w trybie 8-bitowym., W praktyce nie ma zauważalnej różnicy w wydajności między tymi dwoma trybami. W tym tutorialu podłączę LCD w trybie 4 bitowym.
Podłączanie LCD Do Arduino
oto schemat pinów na LCD, których używam. Połączenia z każdego Pina do Arduino będą takie same, ale twoje piny mogą być rozmieszczone inaczej na wyświetlaczu LCD., Pamiętaj, aby sprawdzić Arkusz danych lub poszukać etykiet na konkretnym wyświetlaczu LCD:
może być konieczne przylutowanie 16-pinowego nagłówka do wyświetlacza LCD przed podłączeniem go do płyty Chlebowej. Postępuj zgodnie z poniższym schematem, aby podłączyć wyświetlacz LCD Do Arduino:
rezystor na powyższym schemacie ustawia jasność podświetlenia. Typowa wartość to 220 omów, ale inne wartości też będą działać., Mniejsze Rezystory sprawią, że podświetlenie będzie jaśniejsze.
potencjometr służy do regulacji kontrastu ekranu. Zazwyczaj używam potencjometru 10K Ohm, ale inne wartości też będą działać.
oto karta danych wyświetlacza LCD 16×2 ze wszystkimi informacjami technicznymi o wyświetlaczu:
16×2 LCD Karta Danych
Programowanie Arduino
cały poniższy kod wykorzystuje bibliotekę liquidcrystal, która jest preinstalowana z Arduino IDE., Biblioteka to zestaw funkcji, które można łatwo dodać do programu w skróconym formacie.
aby móc korzystać z biblioteki, należy ją włączyć do programu. Linia 1 w poniższym kodzie robi to za pomocą polecenia #include <LiquidCrystal.h>
. Kiedy dołączasz bibliotekę do programu, cały kod w bibliotece zostanie przesłany do Arduino wraz z kodem dla Twojego programu.
teraz jesteśmy gotowi, aby przejść do programowania! Za chwilę omówię więcej ciekawych rzeczy, ale na razie wystarczy uruchomić prosty program testowy. Program ten będzie drukował ” hello, world!,”na ekran. Wprowadź ten kod do Arduino IDE i prześlij go do tablicy:
#include <LiquidCrystal.h>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);void setup() { lcd.begin(16, 2); lcd.print("hello, world!");}void loop() {}
Twój ekran LCD powinien wyglądać tak:
opcje wyświetlania LCD
w bibliotece liquidcrystal dostępnych jest 19 różnych funkcji. Funkcje te umożliwiają zmianę położenia tekstu, przesuwanie tekstu po ekranie lub włączanie lub wyłączanie wyświetlacza. Poniżej znajduje się Krótki opis każdej funkcji i jak jej używać w programie.,
LiquidCrystal()
funkcja LiquidCrystal()
ustawia piny, których Arduino używa do połączenia z wyświetlaczem LCD. Możesz użyć dowolnego z pinów cyfrowych Arduino do sterowania wyświetlaczem LCD. Po prostu umieść numery pinów Arduino w nawiasach w tej kolejności:
LiquidCrystal(RS, E, D4, D5, D6, D7)
RS, E, D4, D5, D6, D7 są pinami LCD.
na przykład, powiedzmy, że chcesz podłączyć pin LCD D7 do pinu Arduino 12., Wystarczy umieścić „12” w miejscu D7 w funkcji w ten sposób:
LiquidCrystal(RS, E, D4, D5, D6, 12)
Ta funkcja musi być umieszczona przed void setup()
sekcja programu.
lcd.begin()
Ta funkcja ustawia wymiary wyświetlacza LCD. Musi być umieszczona przed jakąkolwiek inną funkcją LiquidCrystal w sekcjivoid setup()
programu. Liczba wierszy i kolumn jest określona jako lcd.begin(columns, rows)
., Dla LCD 16×2, można użyć lcd.begin(16, 2)
, a dla LCD 20×4 można użyć lcd.begin(20, 4)
.
lcd.clear()
funkcja ta czyści dowolny tekst lub Dane wyświetlane na wyświetlaczu LCD., Jeśli używasz lcd.clear()
z lcd.print()
I delay()
funkcja w sekcji void loop()
, możesz utworzyć prosty program do migania tekstu:
lcd.home()
Ta funkcja umieszcza kursor w lewym górnym rogu ekranu i drukuje każdy kolejny tekst z tej pozycji. Na przykład ten kod zastępuje trzy pierwsze litery ” hello world!,”z X:
lcd.setCursor()
podobny, ale bardziej przydatny niż lcd.home()
jest lcd.setCursor()
. Ta funkcja umieszcza kursor (i dowolny drukowany tekst) w dowolnym miejscu na ekranie. Może być używany w sekcjivoid setup()
lubvoid loop()
Twojego programu.
pozycja kursora jest zdefiniowana za pomocą lcd.setCursor(column, row)
. Współrzędne kolumn i wierszy zaczynają się od zera (odpowiednio 0-15 i 0-1)., Na przykład, używając lcd.setCursor(2, 1)
w sekcji void setup()
sekcji ” hello, world!”program nad wydrukami” Witaj, świecie!”do dolnej linii i przesuwa ją w prawo dwie spacje:
lcd.write()
za pomocą tej funkcji można zapisywać na wyświetlaczu LCD różne typy danych, na przykład odczyt z czujnika temperatury lub współrzędne z modułu GPS., Możesz go również użyć do drukowania niestandardowych znaków, które sam stworzysz(więcej na ten temat poniżej). Użyj lcd.write()
w sekcjivoid setup()
lubvoid loop()
swojego programu.
lcd.print()
funkcja ta służy do drukowania tekstu na wyświetlaczu LCD. Można go używać w sekcjivoid setup()
lub w sekcjivoid loop()
programu.
do drukowania liczb nie są potrzebne cudzysłowy. Na przykład, aby wydrukować 123456789, użyj lcd.print(123456789)
.,
lcd.print()
może drukować liczby w bazach dziesiętnych, binarnych, szesnastkowych i ósemkowych. Na przykład:
lcd.cursor()
Ta funkcja tworzy widoczny kursor. Kursor jest poziomą linią umieszczoną poniżej następnego znaku, który ma być wydrukowany na wyświetlaczu LCD.
funkcjalcd.noCursor()
wyłącza kursor., lcd.cursor()
Ilcd.noCursor()
mogą być używane razem w sekcjivoid loop()
, aby Mrugający kursor był podobny do tego, co widać w wielu polach wprowadzania tekstu:
umieszcza Mrugający kursor po wykrzykniku w ” hello, world!”
Kursory można umieścić w dowolnym miejscu na ekranie za pomocą funkcji lcd.setCursor()
. Ten kod umieszcza migający kursor bezpośrednio pod wykrzyknikiem w „hello, world!,”:
lcd.blink()
Ta funkcja tworzy kursor w stylu bloku, który miga i wyłącza się z prędkością około 500 milisekund na cykl. Użyj go w sekcji void loop()
. Funkcja lcd.noBlink()
wyłącza migający kursor blokowy.
lcd.display()
Ta funkcja włącza dowolny tekst lub Kursory, które zostały wydrukowane na ekranie LCD. Funkcja lcd.noDisplay()
wyłącza dowolny tekst lub Kursory wydrukowane na wyświetlaczu LCD, bez usuwania go z pamięci LCD.,
te dwie funkcje mogą być używane razem w sekcji void loop()
, aby utworzyć efekt migającego tekstu. Ten kod sprawi, że „hello, world!”mruganie i wyłączanie tekstu:
lcd.scrollDisplayLeft()
Ta funkcja przenosi wszystko wydrukowane na wyświetlaczu LCD i przesuwa je w lewo. Powinien być używany w sekcji void loop()
z następującym po nim poleceniem delay. Funkcja przesunie tekst o 40 spacji w lewo, zanim powróci do pierwszego znaku. Ten kod przenosi „hello, world!,”tekst po lewej stronie, z szybkością jednej sekundy na znak:
ciągi tekstowe dłuższe niż 40 spacji zostaną wydrukowane do linii 1 po 40 pozycji, podczas gdy początek łańcucha będzie nadal drukowany do linii 0.
lcd.scrollDisplayRight()
Ta funkcja zachowuje się jaklcd.scrollDisplayLeft()
, ale przenosi tekst w prawo.
lcd.autoscroll()
Ta funkcja pobiera ciąg tekstu i przewija go od prawej do lewej w krokach o liczbę znaków łańcucha., Na przykład, jeśli masz ciąg tekstu o długości 3 znaków, przesunie on tekst o 3 spacje w lewo przy każdym kroku:
podobnie jak funkcjelcd.scrollDisplay()
, tekst może mieć do 40 znaków przed powtórzeniem. Na pierwszy rzut oka ta funkcja wydaje się mniej przydatna niż funkcje lcd.scrollDisplay()
, ale może być bardzo przydatna do tworzenia animacji z niestandardowymi postaciami.
lcd.noAutoscroll()
lcd.noAutoscroll()
wyłącza funkcjęlcd.autoscroll()
., Użyj tej funkcji przed lub polcd.autoscroll()
w sekcjivoid loop()
, aby utworzyć sekwencje przewijanego tekstu lub animacji.
lcd.rightToLeft()
Ta funkcja ustawia kierunek wydruku tekstu na ekranie. Domyślnym trybem jest od lewej do prawej za pomocą polecenia lcd.leftToRight()
, ale możesz znaleźć przypadki, w których przydatne jest wypisanie tekstu w odwrotnym kierunku:
Ten kod drukuje „hello, world!”text as”!dlrow, olleh”., Jeśli nie określisz położenia kursora za pomocą lcd.setCursor()
, tekst zostanie wydrukowany z pozycji (0, 1)i będzie widoczny tylko pierwszy znak łańcucha.
lcd.createChar()
To polecenie pozwala na tworzenie własnych znaków niestandardowych. Każdy znak wyświetlacza LCD 16×2 ma szerokość 5 pikseli i wysokość 8 pikseli. W jednym programie można zdefiniować do 8 różnych znaków niestandardowych., Aby zaprojektować własne postacie, musisz stworzyć binarną matrycę niestandardowej postaci z generatora znaków LCD lub zmapować ją samodzielnie. Ten kod tworzy symbol stopnia (°):
istnieje wiele fajnych rzeczy, które możesz zrobić z tymi 16×2 LCD! Spróbuj połączyć niektóre z tych funkcji i zobacz, co się stanie.
oto wersja wideo tego samouczka, dzięki której możesz zobaczyć, co każda funkcja robi na wyświetlaczu LCD w czasie rzeczywistym: