- Wymagane materiały:
- Poznanie modułu ekranu TFT LCD:
- Kalibracja ekranu TFT LCD dla ekranu dotykowego:
- Połączenia TFT LCD z Arduino:
- Programowanie Arduino dla TFT LCD:
- Pracujący:
Arduino zawsze pomagało w łatwym tworzeniu projektów i nadawaniu im bardziej atrakcyjnego wyglądu. Programowanie ekranu LCD z opcją ekranu dotykowego może wydawać się skomplikowanym zadaniem, ale biblioteki i osłony Arduino sprawiły, że było to naprawdę łatwe. W tym projekcie wykorzystamy 2,4-calowy ekran Arduino TFT LCD do zbudowania własnego kalkulatora Arduino z ekranem dotykowym, który może wykonywać wszystkie podstawowe obliczenia, takie jak dodawanie, odejmowanie, dzielenie i mnożenie.
Wymagane materiały:
- Arduino Uno
- Ekran 2,4 ”TFT LCD
- Bateria 9V.
Poznanie modułu ekranu TFT LCD:
Zanim zagłębimy się w projekt, ważne jest, aby wiedzieć, jak działa ten 2,4-calowy moduł TFT LCD i jakie typy są w nim obecne. Przyjrzyjmy się pinoutom tego modułu ekranu TFT LCD 2,4 ”.
Jak widać, istnieje 28 pinów, które będą idealnie pasować do każdej Mega Board Arduino Uno / Arduino. W poniższej tabeli przedstawiono niewielką klasyfikację tych kołków.
Jak widać, szpilki można podzielić na cztery główne klasyfikacje, takie jak szpilki poleceń LCD, szpilki danych LCD, szpilki karty SD i szpilki zasilania, nie musimy wiedzieć zbyt wiele o szczegółowym działaniu tych szpilek, ponieważ będą one zadbane naszą bibliotekę Arduino.
W dolnej części modułu pokazanego powyżej znajduje się również gniazdo kart SD, które można wykorzystać do załadowania karty SD z plikami obrazu bmp, a obrazy te można wyświetlać na naszym ekranie TFT LCD za pomocą programu Arduino.
Kolejną ważną rzeczą, na którą należy zwrócić uwagę, jest układ scalony interfejsu. Na rynku dostępnych jest wiele typów modułów TFT, począwszy od oryginalnego modułu Adafruit TFT LCD po tanie chińskie klony. Program, który działa idealnie dla twojej tarczy Adafruit, może nie działać tak samo dla chińskich tablic breakout. Dlatego bardzo ważne jest, aby wiedzieć, jakie typy wyświetlaczy LCD trzymasz w dłoni. Ten szczegół należy uzyskać od sprzedawcy. Jeśli masz tani klon, taki jak mój, najprawdopodobniej używasz układu scalonego sterownika ili9341. Możesz śledzić ten interfejs TFT LCD z samouczkiem Arduino, aby wypróbować kilka podstawowych przykładowych programów i poczuć się komfortowo z ekranem LCD. Sprawdź również nasze inne projekty TFT LCD z Arduino tutaj:
- Jak używać taśmy LED NeoPixel z Arduino i wyświetlaczem TFT LCD
- Cyfrowa blokada kodowa sterowana smartfonem za pomocą Arduino
Kalibracja ekranu TFT LCD dla ekranu dotykowego:
Jeśli planujesz korzystać z funkcji ekranu dotykowego swojego modułu TFT LCD, musisz go skalibrować, aby działał poprawnie. Ekran LCD bez kalibracji może działać mało prawdopodobne, na przykład możesz dotknąć w jednym miejscu, a TFT może zareagować na dotyk w innym miejscu. Te wyniki kalibracji nie będą podobne dla wszystkich płyt, dlatego możesz to zrobić sam.
Najlepszym sposobem kalibracji jest użycie przykładowego programu do kalibracji (dostarczanego z biblioteką) lub użycie monitora szeregowego do wykrycia błędu. Jednak w przypadku tego projektu, ponieważ rozmiar przycisków jest duży, kalibracja nie powinna stanowić dużego problemu, a także wyjaśnię, jak skalibrować ekran w sekcji programowania poniżej.
Połączenia TFT LCD z Arduino:
2,4-calowy ekran TFT LCD to doskonała osłona Arduino. Możesz bezpośrednio wepchnąć ekran LCD na górę Arduino Uno i będzie on idealnie pasował do pinów i wsuwał się. Jednak ze względów bezpieczeństwa przykryj terminal programujący swojego Arduino UNO małą taśmą izolacyjną, na wypadek, gdyby terminal miał kontakt z ekranem TFT LCD. Wyświetlacz LCD zamontowany na UNO będzie wyglądał mniej więcej tak poniżej.
Programowanie Arduino dla TFT LCD:
Używamy biblioteki SPFD5408, aby uruchomić ten kod kalkulatora arduino. Jest to zmodyfikowana biblioteka Adafruit, która może bezproblemowo współpracować z naszym modułem LCD TFT. Możesz sprawdzić cały program na końcu tego artykułu.
Uwaga: Bardzo ważne jest, aby zainstalować tę bibliotekę w swoim Arduino IDE lub w tym programie, aby kompilować bez żadnych błędów.
Aby zainstalować tę bibliotekę, możesz po prostu kliknąć powyższy link, który przeniesie Cię na stronę Github. Kliknij sklonuj lub pobierz i wybierz „Pobierz ZIP”. Plik zip zostanie pobrany.
Teraz otwórz Arduino IDE i wybierz Szkic -> Uwzględnij Librarey -> Dodaj bibliotekę.ZIP. Otworzy się okno przeglądarki, przejdź do pliku ZIP i kliknij „OK”. Powinieneś zauważyć, że „Biblioteka została dodana do Twoich bibliotek” w lewym dolnym rogu Arduino, jeśli się powiedzie. Szczegółowy przewodnik, jak zrobić to samo, znajduje się w samouczku dotyczącym interfejsów.
Teraz możesz użyć poniższego kodu w swoim Arduino IDE i przesłać go do Arduino UNO, aby kalkulator ekranu dotykowego działał. Dalej wyjaśniłem kod na małe segmenty.
Potrzebujemy trzech bibliotek, aby ten program działał; wszystkie te trzy biblioteki zostały podane w pliku ZIP pobranym z powyższego linku. Po prostu umieściłem je w kodzie, jak pokazano poniżej.
#zawierać
Jak wspomniano wcześniej, musimy skalibrować ekran LCD, aby działał zgodnie z oczekiwaniami, ale nie martw się, podane tutaj wartości są prawie uniwersalne. Zmienne TS_MINX, TS_MINY, TS_MAXX i TS_MAXY decydują o kalibracji ekranu. Możesz bawić się nimi, jeśli uważasz, że kalibracja nie jest satysfakcjonująca.
# zdefiniować TS_MINX 125 # zdefiniować TS_MINY 85 # zdefiniować TS_MAXX 965 # zdefiniować TS_MAXY 905
Jak wiemy, ekran TFT LCD może wyświetlać wiele kolorów, wszystkie te kolory należy wprowadzić w wartości szesnastkowej. Aby uczynić ją bardziej czytelną dla człowieka, przypisujemy te wartości do zmiennej, jak pokazano poniżej.
#define WHITE 0x0000 // Black-> White #define YELLOW 0x001F // Blue-> Yellow #define CYAN 0xF800 // Red-> Cyan #define PINK 0x07E0 // Green-> Pink #define RED 0x07FF // Cyan -> Red #define GREEN 0xF81F // Pink -> Green #define BLUE 0xFFE0 // Yellow-> Blue #define BLACK 0xFFFF // White-> Black
Okej, możemy przejść do części programowania. Program obejmuje trzy sekcje. Jednym z nich jest stworzenie interfejsu użytkownika kalkulatora z przyciskami i wyświetlaczem. Następnie wykrywanie przycisków na podstawie dotykania użytkowników i finalne obliczanie wyników i wyświetlanie ich. Przejdźmy przez nie jeden po drugim.
1. Tworzenie interfejsu użytkownika kalkulatora:
Tutaj możesz wykorzystać wiele swojej kreatywności przy projektowaniu interfejsu użytkownika kalkulatora. Po prostu stworzyłem podstawowy układ kalkulatora z 16 przyciskami i jednym wyświetlaczem. Musisz skonstruować projekt tak, jakbyś narysował coś na farbie MS. Dodane biblioteki pozwolą Ci rysować linie, prostokąty, koła, znaki, ciągi i wiele więcej w dowolnym preferowanym kolorze. Możesz zrozumieć dostępne funkcje z tego artykułu.
Użyłem możliwości rysowania linii i ramek, aby zaprojektować interfejs użytkownika, który wygląda bardzo podobnie do kalkulatora z lat 90. Każde pudełko ma szerokość i wysokość 60 pikseli.
// Narysuj pole wyników tft.fillRect (0, 0, 240, 80, CYAN); // Rysuj pierwszą kolumnę tft.fillRect (0,260,60,60, RED); tft.fillRect (0,200,60,60, CZARNY); tft.fillRect (0,140,60,60, CZARNY); tft.fillRect (0,80,60,60, CZARNY); // Rysuj trzecią kolumnę tft.fillRect (120,260,60,60, GREEN); tft.fillRect (120,200,60,60, CZARNY); tft.fillRect (120,140,60,60, CZARNY); tft.fillRect (120,80,60,60, CZARNY); // Rysuj drugą i czwartą kolumnę dla (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60,60, BLUE); tft.fillRect (60, b, 60,60, BLACK);} // Rysuj poziome linie for (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Rysuj linie pionowe for (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Wyświetl etykiety klawiatury dla (int j = 0; j <4; j ++) {for (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * jot)); tft.setTextSize (3); tft.setTextColor (BIAŁY); tft.println (symbol);
2. Wykrywanie przycisków:
Innym trudnym zadaniem jest wykrywanie dotyku użytkownika. Za każdym razem, gdy użytkownik dotyka gdzieś, będziemy w stanie sprawdzić, w jaki sposób położenie X i Y piksela, którego dotknął. Ta wartość może być wyświetlana na monitorze szeregowym za pomocą println, jak pokazano poniżej.
TSPoint p = waitTouch (); X = py; Y = px; Serial.print (X); Serial.print (','); Serial.println (Y); // + "" + Y);
Ponieważ zaprojektowaliśmy pudełko o szerokości i wysokości 60 pikseli każdy i mamy cztery wiersze i kolumny zaczynające się od (0,0). Pozycję każdego pudełka można przewidzieć, jak pokazano na poniższym obrazku.
Ale w praktyce to nie będzie rezultat. Wystąpi duża różnica między wartością oczekiwaną a rzeczywistą z powodu problemu z kalibracją.
Tak więc, aby przewidzieć dokładną pozycję pudełka, musisz kliknąć linię i sprawdzić jej odpowiednią pozycję na monitorze szeregowym. Może nie jest to najbardziej profesjonalny sposób na zrobienie tego, ale nadal działa doskonale. Zmierzyłem położenie wszystkich linii i otrzymałem poniższe wartości.
Teraz, ponieważ znamy położenie wszystkich skrzynek. Kiedy użytkownik dotyka dowolnego miejsca, możemy przewidzieć, gdzie dotknął, porównując jego wartości (X, Y) z wartością dla każdego pola, jak pokazano poniżej.
if (X <105 && X> 50) // Wykrywanie przycisków w kolumnie 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Wciśnięty jest przycisk 0, jeśli (Number == 0) Number = 0; else liczba = (liczba * 10) + 0; // Dwukrotne wciśnięcie} if (Y> 85 && Y <140) {Serial.println ("Button 2"); if (liczba == 0) liczba = 2; else liczba = (liczba * 10) + 2; // Dwukrotne naciśnięcie}
3. Wyświetlanie liczb i obliczanie wyniku:
Ostatnim krokiem jest obliczenie wyniku i wyświetlenie go na ekranie TFT LCD. Ten kalkulator arduino może wykonywać operacje tylko z 2 liczbami. Te dwie liczby nazywane są zmiennymi „Num1” i „Num2”. Zmienna „Number” podaje i przyjmuje wartość z liczb Num1 i Num2, a także zawiera wynik.
Gdy użytkownik naciska przycisk, do numeru dodawana jest jedna cyfra. Po naciśnięciu innego przycisku poprzednia cyfra jest mnożona przez 10 i dodawana jest nowa liczba. Na przykład, jeśli wciśniemy 8, potem 5, a potem 7. Wtedy najpierw zmienna będzie miała 8, potem (8 * 10) + 5 = 85 potem (85 * 10) +7 = 857. Ostatecznie zmienna będzie miała wartość 857 z nim.
if (Y> 192 && Y <245) {Serial.println ("Przycisk 8"); if (liczba == 0) liczba = 8; else liczba = (liczba * 10) + 8; // Ponownie wciśnięty}
Kiedy wykonujemy jakąkolwiek operację, taką jak dodawanie, gdy użytkownik naciśnie przycisk dodawania, wartość z Number zostanie przeniesiona do Num1, a następnie Number zostanie wyzerowana, aby była gotowa do przyjęcia danych wejściowych dla drugiej liczby.
Po naciśnięciu Equal wartość w Number zostanie wysłana do Num2, a następnie zostaną wykonane odpowiednie obliczenia (w tym przypadku dodawanie), a wynik zostanie ponownie zapisany w zmiennej „Number”.
Wreszcie ta wartość zostanie wyświetlona na ekranie LCD.
Pracujący:
Działanie tego kalkulatora z ekranem dotykowym Arduino jest proste. Musisz wgrać poniższy kod na swoje Arduino i odpalić. Otrzymasz kalkulator wyświetlany na ekranie LCD.
Teraz możesz wprowadzić dowolną liczbę i wykonać obliczenia. Na razie jest ograniczona tylko do dwóch operandów i tylko operatora. Ale możesz zmodyfikować kod, aby miał wiele opcji.
Musisz nacisnąć „C”, aby wyczyścić wartość na ekranie za każdym razem po wykonaniu obliczeń. Mam nadzieję, że zrozumiałeś projekt i podobało Ci się budowanie czegoś podobnego. Jeśli masz jakiekolwiek wątpliwości, pisz je na forach lub w sekcji komentarzy poniżej. Do zobaczenia następnym razem z kolejnym ciekawym projektem do tego czasu szczęśliwego przetwarzania!
Sprawdź również film demonstracyjny poniżej.