Spisu treści:
- Krok 1: Rzeczy, których potrzebujesz
- Krok 2: Instalowanie biblioteki wyświetlaczy TFT w Arduino IDE
- Krok 3: Prześlij kod kalkulatora
Wideo: Kalkulator z ekranem dotykowym Arduino TFT LCD: 3 kroki
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
Cześć chłopaki w tej instrukcji dowiemy się, jak zrobić kalkulator za pomocą Arduino Uno z 3,5-calowym ekranem dotykowym TFT LCD. Napiszemy więc kod i prześlemy go do arduino, który wyświetli interfejs kalkulatora na wyświetlaczu i przejmie funkcjonalność dotykową i dać wynik podstawowych wyrażeń matematycznych.
Krok 1: Rzeczy, których potrzebujesz
Do tego projektu potrzebne będą następujące rzeczy: 3,5 WYŚWIETLACZ LCD TFT ARDUINO UNO
Krok 2: Instalowanie biblioteki wyświetlaczy TFT w Arduino IDE
Korzystamy z biblioteki SPFD5408:
aby ten kod kalkulatora arduino działał. Jest to zmodyfikowana biblioteka Adafruit, która może bezproblemowo współpracować z naszym modułem LCD TFT. Bardzo ważne jest, aby zainstalować tę bibliotekę w swoim Arduino IDE lub ten program, aby skompilował się bez żadnych błędów. Aby zainstalować tę bibliotekę, wystarczy kliknąć powyższy link, który przeniesie Cię na stronę Github. Tam kliknij klon lub pobierz i wybierz „Pobierz ZIP”. Zostanie pobrany plik zip. Teraz otwórz Arduino IDE i wybierz Szkic -> Dołącz bibliotekę -> Dodaj bibliotekę. ZIP. Otworzy się okno przeglądarki, przejdź do pliku ZIP i kliknij "OK". Powinieneś zauważyć "Biblioteka dodana do twoich bibliotek" w lewym dolnym rogu Arduino.
Krok 3: Prześlij kod kalkulatora
Po zainstalowaniu biblioteki podłącz wyświetlacz do Arduino i skopiuj poniższy kod i prześlij go do Arduino./*_Importuj biblioteki_*/#include "SPFD5408_Adafruit_GFX.h" // Podstawowa biblioteka graficzna#include "SPFD5408_Adafruit_TFTLCD.h" // Specyficzne dla sprzętu library#include "SPFD5408_TouchScreen.h"/*_Koniec bibliotek_*//*_Definicja pinów LCD (przypisałem wartości domyślne)_*/#define YP A1 // musi być pinem analogowym, użyj notacji "An"!# zdefiniuj XM A2 // musi być pinem analogowym, użyj notacji "An"!#define YM 7 // może być pinem cyfrowym#define XP 6 // może być pinem cyfrowym#define LCD_CS A3#define LCD_CD A2#define LCD_WR A1#define LCD_RD A0#define LCD_RESET A4/*_Koniec definicji_*//*_Przypisz nazwy do kolorów i nacisku_*/#define WHITE 0x0000 //Czarny->Biały#define ŻÓŁTY 0x001F //Niebieski->Żółty#define CYAN 0xF //Czerwony->Cyjan#define RÓŻOWY 0x07E0 //Zielony->Różowy#define RED 0x07FF //Cyan -> Czerwony#define ZIELONY 0xF81F //Różowy ->Zielony #define NIEBIESKI 0xFFE0 //Żółty- >Niebieski#definiuj CZARNY 0xFFFF //Biały-> Czarny#definiuj MIN. CIŚNIENIE 10#definiuj MAKS. CIŚNIENIE 1000/*_Przypisany_*//*_Skalibruj TFT LCD_*/#define TS_MINX 125#definiuj TS_MINX 85#definiuj TS_MAXX 965#definiuj MAKS 905/*TS _Koniec kalibracji_*/TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); //300 to czułośćAdafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); //Rozpocznij komunikację z symbolem LCDString[4][4] = { { "7", "8", "9", "/" }, { "4", "5", "6", "*" }, { "1", "2", "3", "-" }, { "C", "0", "=", "+" }}; int X, Y; długa Num1, Num2, Liczba; akcja znaku; wynik logiczny = false;unieważnij ustawienia() { Serial.begin(9600); //Użyj monitora szeregowego do debugowania tft.reset(); //Zawsze resetuj na początku tft.begin(0x9341); // Mój wyświetlacz LCD używa IC sterownika interfejsu LIL9341 tft.setRotation(2); // Właśnie obróciłem się tak, aby gniazdo zasilania było skierowane do góry - opcjonalny tft.fillScreen(WHITE); Ekran wstępny(); draw_BoxNButtons(); } void loop() {TSPoint p = waitTouch();X = p.y; Y = p.x;// Serial.print(X); Serial.print(', '); Serial.println(Y);// + " " + Y);DetectButtons();if (result==true)CalculateResult();DisplayResult(); delay(300);}TSPoint waitTouch() { TSPoint p; zrobić { p = ts.getPoint(); pinMode(XM, WYJŚCIE); pinMode(YP, WYJŚCIE); } while((p.z MAXPRESSURE)); p.x = mapa(p.x, TS_MINX, TS_MAXX, 0, 320); p.y = mapa(p.y, TS_MINY, TS_MAXY, 0, 240);; return p;}void DetectButtons(){ if (X0) //Wykrywanie przycisków w kolumnie 1 { if (Y>0 && Y<85) //Jeśli naciśnięto przycisk anulowania {Serial.println ("Przycisk Anuluj"); Liczba=Liczba1=Liczba2=0; result=false;} if (Y>85 && Y<140) //Jeśli naciśnięto przycisk 1 {Serial.println ("Przycisk 1"); jeśli (liczba==0) liczba=1; w przeciwnym razie liczba = (liczba*10) + 1; //Naciśnięty dwa razy } jeśli (Y>140 && Y<192) //Jeśli naciśnięto przycisk 4 {Serial.println ("Przycisk 4"); jeśli (liczba==0) liczba=4; w przeciwnym razie liczba = (liczba*10) + 4; //Naciśnięty dwukrotnie } jeśli (Y>192 && Y<245) //Jeżeli przycisk 7 jest wciśnięty {Serial.println ("Przycisk 7"); jeśli (liczba==0) liczba=7; w przeciwnym razie liczba = (liczba*10) + 7; //Naciśnięty dwukrotnie } } if (X50) //Wykrywanie przycisków w kolumnie 2 { if (Y>0 && Y<85) {Serial.println ("Przycisk 0"); //Przycisk 0 jest wciśnięty, jeśli (liczba==0) liczba=0; w przeciwnym razie liczba = (liczba*10) + 0; //Naciśnięty dwukrotnie } if (Y>85 && Y<140) {Serial.println ("Przycisk 2"); jeśli (liczba==0) liczba=2; w przeciwnym razie liczba = (liczba*10) + 2; //Naciśnięty dwukrotnie } if (Y>140 && Y<192) {Serial.println ("Przycisk 5"); jeśli (liczba==0) liczba=5; w przeciwnym razie liczba = (liczba*10) + 5; //Dwukrotnie naciśnięty } if (Y>192 && Y<245) {Serial.println ("Przycisk 8"); jeśli (liczba==0) liczba=8; w przeciwnym razie liczba = (liczba*10) + 8; //Dwukrotnie naciśnięty } } if (X105) //Wykrywanie przycisków w kolumnie 3 { if (Y>0 && Y<85) {Serial.println ("Przycisk równy"); liczba2=liczba; wynik = prawda; } if (Y>85 && Y<140) {Serial.println ("Przycisk 3"); jeśli (liczba==0) liczba=3; w przeciwnym razie liczba = (liczba*10) + 3; //Naciśnięty dwukrotnie } if (Y>140 && Y<192) {Serial.println ("Przycisk 6"); jeśli (liczba==0) liczba=6; w przeciwnym razie liczba = (liczba*10) + 6; //Naciśnięty dwukrotnie } if (Y>192 && Y<245) {Serial.println ("Przycisk 9"); jeśli (liczba==0) liczba=9; w przeciwnym razie liczba = (liczba*10) + 9; //Naciśnięty dwukrotnie } } if (X165) //Wykrywanie przycisków w kolumnie 3 { Num1 = Number; Liczba =0; tft.setCursor(200, 20); tft.setTextColor(RED); if (Y>0 && Y<85) {Serial.println ("Dodanie"); akcja = 1; tft.println('+');} if (Y>85 && Y<140) {Serial.println ("Odejmowanie"); akcja = 2; tft.println('-');} if (Y>140 && Y<192) {Serial.println ("Mnożenie"); akcja = 3; tft.println('*');} if (Y>192 && Y<245) {Serial.println ("Rozwój"); akcja = 4; tft.println('/');} opóźnienie(300); } }void ObliczWynik(){ if (akcja==1) Liczba = Num1+Num2; if (akcja==2) Liczba = Num1-Num2; if (akcja==3) Liczba = Liczba1*Liczba2; if (akcja==4) Liczba = Num1/Num2; }unieważnij DisplayResult(){ tft.fillRect(0, 0, 240, 80, CYAN); //wyczyść pole wyników tft.setCursor(10, 20); tft.setRozmiarTekstu(4); tft.setTextColor(CZARNY); tft.println(liczba); //zaktualizuj nową wartość}unieważnij IntroScreen(){ tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor(RED); tft.println("ARDUINO"); tft.setCursor (30, 160); tft.println("KALKULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor(NIEBIESKI); tft.println("-Streszczenie obwodu"); delay(1800);}void draw_BoxNButtons(){ //Narysuj pole wyników tft.fillRect(0, 0, 240, 80, CYAN); //Narysuj 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, ZIELONY); tft.fillRect (120, 200, 60, 60, CZARNY); tft.fillRect (120, 140, 60, 60, CZARNY); tft.fillRect (120, 80, 60, 60, CZARNY); //Narysuj drugą i czwartą kolumnę for (int b=260; b>=80; b-=60) { tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} //Rysuj linie poziome dla (int h=80; h<=320; h+=60) tft.drawFastHLine(0, h, 240, WHITE); //Rysuj pionowe linie for (int v=0; v<=240; v+=60) tft.drawFastVLine(v, 80, 240, WHITE); //Wyświetl etykiety klawiatury for (int j=0;j<4;j++) { for (int i=0;i<4;i++) { tft.setCursor(22 + (60*i), 100 + (60* J)); tft.setRozmiarTekstu(3); tft.setTextColor(BIAŁY); tft.println(symbol[j]); } }} Po przesłaniu kodu będziesz mógł zobaczyć kalkulator działający na swoim ekranie jako mój i teraz możesz na nim wykonywać podstawowe obliczenia matematyczne. Więc baw się dobrze, tworząc własny kalkulator z Arduino UNO.
Zalecana:
Kalkulator z ekranem dotykowym Arduino: 7 kroków
Kalkulator z ekranem dotykowym Arduino: Witam! Jest to projekt wykonania kalkulatora z ekranem dotykowym przy użyciu Arduino Uno i ekranu TFT LCD. Wpadłem na pomysł mojej lekcji programowania w szkole domowej, a doświadczenie w budowaniu tego projektu było bardzo interesujące. Ten kalkulator może
Licznik Geigera DIY z ESP8266 i ekranem dotykowym: 4 kroki (ze zdjęciami)
Licznik Geigera DIY z ESP8266 i ekranem dotykowym: AKTUALIZACJA: NOWA I ULEPSZONA WERSJA Z WIFI I INNYMI DODATKOWYMI FUNKCJAMI HERI zaprojektowała i zbudowała licznik Geigera - urządzenie, które może wykrywać promieniowanie jonizujące i ostrzegać użytkownika o niebezpiecznym poziomie promieniowania otoczenia za pomocą wszystkich- zbyt znajome kliknięcie nie
Blokada drzwi z ekranem dotykowym Arduino TFT: 5 kroków
Blokada drzwi z ekranem dotykowym Arduino TFT: to moja pierwsza instrukcja. Ten projekt wykorzystuje Arduino i 2,8" Ekran dotykowy TFT ze szkicem hasła do aktywacji przekaźnika, który przerywa obwód do drzwi z blokadą magiczną. W tle blokada RFID na drzwiach w pracy zepsuła się, a nie
Termostat z ekranem dotykowym ESP8266 WiFi (chmura EasyIoT): 4 kroki
Termostat z ekranem dotykowym WiFi ESP8266 (chmura EasyIoT): W tym samouczku pokażemy, jak zbudować termostat z ekranem dotykowym WiFi. Termostat z ekranem dotykowym ESP8266 WiFi jest przykładem złożonego czujnika zbudowanego przez ESP8266, Arduino Mega 2560 i TFT 3.2" ekran dotykowy. Termostat jest podłączony do EasyIoT
Arduino Uno: animacja bitmapowa na ekranie dotykowym ILI9341 TFT z ekranem dotykowym Visuino: 12 kroków (ze zdjęciami)
Arduino Uno: animacja bitmapowa na ekranie dotykowym TFT ILI9341 Z Visuino: Nakładki na ekran dotykowy TFT oparte na ILI9341 są bardzo popularnymi, niedrogimi osłonami wyświetlaczy dla Arduino. Visuino ma dla nich wsparcie od dłuższego czasu, ale nigdy nie miałem okazji napisać samouczka, jak z nich korzystać. Ostatnio jednak niewiele osób pytało