Isi kandungan:

Kalkulator Skrin Sentuh LCD Arduino TFT: 3 Langkah
Kalkulator Skrin Sentuh LCD Arduino TFT: 3 Langkah

Video: Kalkulator Skrin Sentuh LCD Arduino TFT: 3 Langkah

Video: Kalkulator Skrin Sentuh LCD Arduino TFT: 3 Langkah
Video: Membuat Kalkulator Layar Sentuh Menggunakan 2.4 inch TFT LCD - Arduino Project Indonesia 2024, November
Anonim
Kalkulator Skrin Sentuh Arduino TFT LCD
Kalkulator Skrin Sentuh Arduino TFT LCD

Hai Guys dalam instruksional ini, kita akan belajar bagaimana membuat kalkulator menggunakan Arduino Uno dengan paparan Skrin Sentuh LCD TFT 3,5 . Oleh itu, kami akan menulis kod dan Muat naik ke arduino yang akan memaparkan antara muka kalkulator pada paparan dan akan menggunakan fungsi sentuhan dan berikan output ungkapan matematik asas.

Langkah 1: Perkara yang Anda Perlu

Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu
Perkara yang Anda Perlu

Untuk projek ini, anda memerlukan perkara berikut: TFT LCD DISPLAYARDUINO 3.5 UNO

Langkah 2: Memasang TFT Display Library di Arduino IDE

Memasang TFT Display Library di Arduino IDE
Memasang TFT Display Library di Arduino IDE

Kami menggunakan Perpustakaan SPFD5408:

agar kod kalkulator arduino ini berfungsi. Ini adalah perpustakaan Adafruit yang diubahsuai dan dapat berfungsi dengan lancar dengan Modul TFT LCD kami. Sangat penting bagi anda untuk memasang pustaka ini di Arduino IDE atau program ini untuk menyusun tanpa sebarang kesalahan. Untuk memasang pustaka ini, anda hanya boleh klik pada pautan di atas yang akan membawa anda ke halaman Github. Di sana klik pada klon atau muat turun dan pilih "Muat turun ZIP". Fail zip akan dimuat turun. Sekarang, buka Arduino IDE dan pilih Sketch -> Include Librarey -> Add. ZIP library. Tetingkap penyemak imbas akan terbuka menavigasi ke fail ZIP dan klik "OK". Anda harus melihat "Perpustakaan ditambahkan ke Perpustakaan anda" di sudut kiri bawah Arduino.

Langkah 3: Muat naik Kod Kalkulator

Muat naik Kod Kalkulator
Muat naik Kod Kalkulator
Muat naik Kod Kalkulator
Muat naik Kod Kalkulator

Setelah memasang perpustakaan sambungkan paparan ke Arduino dan salin kod berikut & muat naik ke Arduino./*_Import Perpustakaan _ * / # include "SPFD5408_Adafruit_GFX.h" // Perpustakaan grafik teras # sertakan "SPFD5408_Adafruit_TFTLCD.h" // Khusus perkakasan perpustakaan # sertakan "SPFD5408_TouchScreen.h" / * _ Akhir Perpustakaan _ * // * _ Tentukan pin LCD (saya telah menetapkan nilai lalai) _ * / # tentukan YP A1 // mestilah pin analog, gunakan notasi "An"! # definisikan XM A2 // mestilah pin analog, gunakan notasi "An"! #tentukan YM 7 // boleh menjadi pin digital # tentukan XP 6 // boleh menjadi pin digital # tentukan LCD_CS A3 # tentukan LCD_CD A2 # tentukan LCD_WR A1 # define LCD_RD A0 # define LCD_RESET A4 / * _ Akhir definisi _ * // * _ Tetapkan nama pada warna dan tekanan _ * / # tentukan PUTIH 0x0000 // Hitam-> Putih # tentukan KUNING 0x001F // Biru-> Kuning # tentukan CYAN 0xF800 // Merah-> Sian # tentukan PINK 0x07E0 // Hijau-> Pink # tentukan RED 0x07FF // Sian -> Merah # tentukan HIJAU 0xF81F // Pink -> Hijau # tentukan BIRU 0xFFE0 // Kuning- > Biru # tentukan HITAM 0xFFFF // Putih-> Hitam # tentukan MINPRESSURE 10 # tentukan MAXPRESSURE 1000 / * _ Ditugaskan _ * // * _ Kalibrasi TFT LCD _ * / # tentukan TS_MINX 125 # tentukan TS_MINY 85 # tentukan TS_MAXX 965 # tentukan TS_MAXY 905 / * _Tamat Penentukuran _ * / TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300); // 300 adalah kepekaanAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET); // Mulakan komunikasi dengan simbol LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int X, Y; panjang Num1, Num2, Nombor; tindakan char; hasil boolean = false; persediaan kosong () {Serial.begin (9600); // Gunakan monitor bersiri untuk menyahpepijat tft.reset (); // Sentiasa tetapkan semula pada permulaan tft.begin (0x9341); // LCD saya menggunakan pemacu antara muka LIL9341 IC tft.setRotation (2); // Saya baru berkeliaran sehingga soket kuasa menghadap ke atas - pilihan tft.fillScreen (WHITE); Skrin Pengenalan (); draw_BoxNButtons (); } gelung void () {TSPoint p = waitTouch (); X = p.y; Y = p.x; // Serial.print (X); Cetakan bersiri (','); Serial.println (Y); // + "" + Y); DetectButtons (); if (hasil == benar) CalculateResult (); DisplayResult (); kelewatan (300);} TSPoint waitTouch () {TSPoint p; lakukan {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } sementara ((hlm. MAXPRESSURE)); p.x = peta (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = peta (p.y, TS_MINY, TS_MAXY, 0, 240);; kembali p;} batal DetectButtons () {if (X0) // Butang Mengesan pada Lajur 1 {if (Y> 0 && Y <85) // Sekiranya Batal batal ditekan {Serial.println ("Button Cancel"); Nombor = Num1 = Num2 = 0; hasil = false;} jika (Y> 85 && Y <140) // Jika Butang 1 ditekan {Serial.println ("Butang 1"); jika (Nombor == 0) Nombor = 1; nombor lain = (Nombor * 10) + 1; // Ditekan dua kali} jika (Y> 140 && Y <192) // Jika Butang 4 ditekan {Serial.println ("Butang 4"); jika (Nombor == 0) Nombor = 4; lain Nombor = (Nombor * 10) + 4; // Ditekan dua kali} jika (Y> 192 && Y <245) // Jika Butang 7 ditekan {Serial.println ("Butang 7"); jika (Nombor == 0) Nombor = 7; nombor lain = (Nombor * 10) + 7; // Ditekan dua kali}} jika (X50) // Mengesan Butang pada Lajur 2 {if (Y> 0 && Y <85) {Serial.println ("Butang 0"); // Butang 0 Ditekan jika (Nombor == 0) Nombor = 0; lain Nombor = (Nombor * 10) + 0; // Ditekan dua kali} jika (Y> 85 && Y <140) {Serial.println ("Butang 2"); jika (Nombor == 0) Nombor = 2; nombor lain = (Nombor * 10) + 2; // Ditekan dua kali} jika (Y> 140 && Y <192) {Serial.println ("Butang 5"); jika (Nombor == 0) Nombor = 5; nombor lain = (Nombor * 10) + 5; // Ditekan dua} jika (Y> 192 && Y <245) {Serial.println ("Butang 8"); jika (Nombor == 0) Nombor = 8; nombor lain = (Nombor * 10) + 8; // Ditekan dua}} jika (X105) // Mengesan Butang pada Lajur 3 {if (Y> 0 && Y <85) {Serial.println ("Butang Sama"); Num2 = Nombor; hasil = benar; } jika (Y> 85 && Y <140) {Serial.println ("Butang 3"); jika (Nombor == 0) Nombor = 3; nombor lain = (Nombor * 10) + 3; // Ditekan dua kali} jika (Y> 140 && Y <192) {Serial.println ("Butang 6"); jika (Nombor == 0) Nombor = 6; nombor lain = (Nombor * 10) + 6; // Ditekan dua kali} jika (Y> 192 && Y <245) {Serial.println ("Butang 9"); jika (Nombor == 0) Nombor = 9; nombor lain = (Nombor * 10) + 9; // Ditekan dua kali}} jika (X165) // Mengesan Butang pada Lajur 3 {Num1 = Number; Nombor = 0; tft.setCursor (200, 20); tft.setTextColor (MERAH); jika (Y> 0 && Y <85) {Serial.println ("Penambahan"); tindakan = 1; tft.println ('+');} jika (Y> 85 && Y <140) {Serial.println ("Pengurangan"); tindakan = 2; tft.println ('-');} jika (Y> 140 && Y <192) {Serial.println ("Pendaraban"); tindakan = 3; tft.println ('*');} jika (Y> 192 && Y <245) {Serial.println ("Penyimpangan"); tindakan = 4; tft.println ('/');} kelewatan (300); }} batal CalculateResult () {if (tindakan == 1) Nombor = Num1 + Num2; jika (tindakan == 2) Nombor = Num1-Num2; jika (tindakan == 3) Nombor = Num1 * Num2; jika (tindakan == 4) Nombor = Num1 / Num2; } batal DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // kotak keputusan yang jelas tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (HITAM); tft.println (Nombor); // kemas kini nilai baru} batal IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (MERAH); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("KALKULATOR"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (BIRU); tft.println ("- Circut Digest"); kelewatan (1800);} batal draw_BoxNButtons () {// Lukis Kotak Hasil tft.fillRect (0, 0, 240, 80, CYAN); // Lukis Lajur Pertama tft.fillRect (0, 260, 60, 60, MERAH); tft.fillRect (0, 200, 60, 60, HITAM); tft.fillRect (0, 140, 60, 60, HITAM); tft.fillRect (0, 80, 60, 60, HITAM); // Lukis Lajur Ketiga tft.fillRect (120, 260, 60, 60, GREEN); tft.fillRect (120, 200, 60, 60, HITAM); tft.fillRect (120, 140, 60, 60, HITAM); tft.fillRect (120, 80, 60, 60, HITAM); // Lukiskan Lajur Rahsia & Keempat untuk (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} // Lukis Garisan Mendatar untuk (int h = 80; h <= 320; h + = 60) tft.drawFastHLine (0, h, 240, WHITE); // Lukis Garisan Vertikal untuk (int v = 0; v <= 240; v + = 60) tft.drawFastVLine (v, 80, 240, WHITE); // Paparkan label pad kekunci untuk (int j = 0; j <4; j ++) {untuk (int i = 0; i <4; i ++) {tft.setCursor (22 + (60 * i), 100 + (60 * j)); tft.setTextSize (3); tft.setTextColor (PUTIH); tft.println (simbol [j] ); }}} Selepas memuat naik kod, anda akan dapat melihat kalkulator berjalan di paparan anda sebagai milik saya dan sekarang anda boleh melakukan pengiraan asas matematik mengenai hal ini. Oleh itu, bersenang-senang membuat kalkulator anda sendiri dengan Arduino UNO.

Disyorkan: