Spisu treści:

Kalkulator z ekranem dotykowym Arduino TFT LCD: 3 kroki
Kalkulator z ekranem dotykowym Arduino TFT LCD: 3 kroki

Wideo: Kalkulator z ekranem dotykowym Arduino TFT LCD: 3 kroki

Wideo: Kalkulator z ekranem dotykowym Arduino TFT LCD: 3 kroki
Wideo: Управление подсветкой с дисплея 2024, Lipiec
Anonim
Kalkulator z ekranem dotykowym Arduino TFT LCD
Kalkulator z ekranem dotykowym Arduino TFT LCD

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

Rzeczy, których potrzebujesz
Rzeczy, których potrzebujesz
Rzeczy, których potrzebujesz
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

Instalowanie biblioteki wyświetlaczy TFT w Arduino IDE
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

Prześlij kod kalkulatora
Prześlij kod kalkulatora
Prześlij kod kalkulatora
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: