Πίνακας περιεχομένων:

Υπολογιστής οθόνης αφής Arduino TFT LCD: 3 βήματα
Υπολογιστής οθόνης αφής Arduino TFT LCD: 3 βήματα

Βίντεο: Υπολογιστής οθόνης αφής Arduino TFT LCD: 3 βήματα

Βίντεο: Υπολογιστής οθόνης αφής Arduino TFT LCD: 3 βήματα
Βίντεο: 7 inch TFT lcd modules for Raspberry pi 2024, Ιούλιος
Anonim
Υπολογιστής οθόνης αφής Arduino TFT LCD
Υπολογιστής οθόνης αφής Arduino TFT LCD

Γεια σας παιδιά σε αυτό το εκπαιδευτικό εγχειρίδιο θα μάθουμε πώς να φτιάχνουμε μια αριθμομηχανή χρησιμοποιώντας το Arduino Uno με οθόνη αφής TFT LCD 3,5 ιντσών. Έτσι, θα γράψουμε έναν κωδικό και θα τον ανεβάσουμε στο arduino, ο οποίος θα εμφανίζει τη διεπαφή της αριθμομηχανής στην οθόνη και θα εκτελεί λειτουργίες αφής και δίνουν την έξοδο βασικών μαθηματικών εκφράσεων.

Βήμα 1: Πράγματα που χρειάζεστε

Πράγματα που χρειάζεστε
Πράγματα που χρειάζεστε
Πράγματα που χρειάζεστε
Πράγματα που χρειάζεστε

Για αυτό το έργο θα χρειαστείτε τα ακόλουθα πράγματα: 3.5 TFT LCD DISPLAYARDUINO UNO

Βήμα 2: Εγκατάσταση της βιβλιοθήκης εμφάνισης TFT στο Arduino IDE

Εγκατάσταση της βιβλιοθήκης εμφάνισης TFT στο Arduino IDE
Εγκατάσταση της βιβλιοθήκης εμφάνισης TFT στο Arduino IDE

Χρησιμοποιούμε τη Βιβλιοθήκη SPFD5408:

για να λειτουργήσει αυτός ο κωδικός αριθμομηχανής arduino. Αυτή είναι μια τροποποιημένη βιβλιοθήκη του Adafruit και μπορεί να λειτουργήσει απρόσκοπτα με τη μονάδα LCD TFT. Είναι πολύ σημαντικό για εσάς να εγκαταστήσετε αυτήν τη βιβλιοθήκη στο Arduino IDE ή να μεταγλωττίσετε αυτό το πρόγραμμα χωρίς σφάλμα. Για να εγκαταστήσετε αυτήν τη βιβλιοθήκη, μπορείτε απλά να κάνετε κλικ στον παραπάνω σύνδεσμο που θα σας μεταφέρει σε μια σελίδα Github. Κάντε κλικ στο κλώνο ή στη λήψη και επιλέξτε "Λήψη ZIP". Θα γίνει λήψη ενός αρχείου zip. Τώρα, ανοίξτε το Arduino IDE και επιλέξτε Sketch -> Include Librarey -> Add. ZIP Library. Θα ανοίξει ένα παράθυρο του προγράμματος περιήγησης, μεταβείτε στο αρχείο ZIP και κάντε κλικ στο "OK". Θα πρέπει να παρατηρήσετε "Η βιβλιοθήκη προστέθηκε στις βιβλιοθήκες σας" στην κάτω αριστερή γωνία του Arduino.

Βήμα 3: Ανεβάστε τον κωδικό αριθμομηχανής

Ανεβάστε τον κωδικό αριθμομηχανής
Ανεβάστε τον κωδικό αριθμομηχανής
Ανεβάστε τον κωδικό αριθμομηχανής
Ανεβάστε τον κωδικό αριθμομηχανής

Μετά την εγκατάσταση της βιβλιοθήκης, συνδέστε την οθόνη στο Arduino και αντιγράψτε τον ακόλουθο κώδικα και μεταφορτώστε τον στο Arduino. βιβλιοθήκη#περιλαμβάνει "SPFD5408_TouchScreen.h"/*_ Τέλος Βιβλιοθηκών _*//*_ Ορισμός ακίδων LCD (έχω ορίσει τις προεπιλεγμένες τιμές) _*/#ορίστε το YP A1 // πρέπει να είναι αναλογική καρφίτσα, χρησιμοποιήστε τη σημείωση "An"!# ορίστε το XM A2 // πρέπει να είναι αναλογική ακίδα, χρησιμοποιήστε την ένδειξη "An"! #define YM 7 // μπορεί να είναι ψηφιακή ακίδα#ορίστε XP 6 // μπορεί να είναι ψηφιακή ακίδα#ορίστε LCD_CS A3#καθορίστε LCD_CD A2#καθορίστε LCD_WR A1#define LCD_RD A0#define LCD_RESET A4/*_ Τέλος ορισμών _*//*_ Εκχώρηση ονομάτων σε χρώματα και πίεση _*/#καθορισμός ΛΕΥΚΟΥ 0x0000 // Μαύρο-> Λευκό#καθορισμός ΚΙΤΡΙΝΟΥ 0x001F // Μπλε-> Κίτρινο#καθορισμός CYAN 0xF800 // Red-> Cyan#define PINK 0x07E0 // Green-> Pink#define RED 0x07FF // Cyan-> Red#define GREEN 0xF81F // Pink-> Green #define BLUE 0xFFE0 // Yellow- > Μπλε#ορίστε ΜΑΥΡΟ 0xFFFF // Λευκό-> Μαύρο#καθορίστε MINPRESSURE 10#καθορίστε MAXPRESSURE 1000/*_ Εκχωρήθηκε _*//*_ Βαθμονόμηση TFT LCD _*/#define TS_MINX 125#καθορίστε TS_MINY 85#καθορίστε TS_MAXX 965#καθορίσετε TS _Τέλος βαθμονόμησης _*/Οθόνη αφής ts = Οθόνη αφής (XP, YP, XM, YM, 300). // 300 είναι η ευαισθησίαAdafruit_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET). // Έναρξη επικοινωνίας με σύμβολο LCDString [4] [4] = {{"7", "8", "9", "/"}, {"4", "5", "6", "*"}, {"1", "2", "3", "-"}, {"C", "0", "=", "+"}}; int Χ, Υ; μακρύ Num1, Num2, Number? δράση char? boolean result = false; void setup () {Serial.begin (9600); // Χρήση σειριακής οθόνης για τον εντοπισμό σφαλμάτων tft.reset (); // Πάντα επαναφορά στην αρχή tft.begin (0x9341); // Η οθόνη LCD μου χρησιμοποιεί IC πρόγραμμα οδήγησης διεπαφής LT9.setRotation (2); // Μόλις έκανα περιστροφή έτσι ώστε η πρίζα να είναι στραμμένη προς τα πάνω - προαιρετικό tft.fillScreen (ΛΕΥΚΟ). IntroScreen (); 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 (); καθυστέρηση (300);} TSPoint waitTouch () {TSPoint p; do {p = ts.getPoint (); pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); } while ((p.z MAXPRESSURE)); p.x = χάρτης (p.x, TS_MINX, TS_MAXX, 0, 320); p.y = χάρτης (p.y, TS_MINY, TS_MAXY, 0, 240);; επιστροφή; Αριθμός = Num1 = Num2 = 0; result = false;} if (Y> 85 && Y <140) // If the Button 1 is pressed {Serial.println ("Button 1"); αν (Αριθμός == 0) Αριθμός = 1? else Αριθμός = (Αριθμός*10) + 1; // Πιέστηκε δύο φορές} εάν (Υ> 140 && Υ <192) // Εάν πατηθεί το κουμπί 4 {Serial.println ("Κουμπί 4"); αν (Αριθμός == 0) Αριθμός = 4? else Αριθμός = (Αριθμός*10) + 4; // Πιέστηκε δύο φορές} εάν (Y> 192 && Y <245) // Εάν πατηθεί το κουμπί 7 {Serial.println ("Button 7"); αν (Αριθμός == 0) Αριθμός = 7? else Αριθμός = (Αριθμός*10) + 7; // Πιέστηκε δύο φορές}} if (X50) // Εντοπισμός κουμπιών στη στήλη 2 {if (Y> 0 && Y <85) {Serial.println ("Button 0"); // Το κουμπί 0 πιέζεται εάν (Αριθμός == 0) Αριθμός = 0; else Αριθμός = (Αριθμός*10) + 0; // Πιέστηκε δύο φορές} if (Y> 85 && Y <140) {Serial.println ("Button 2"); εάν (Αριθμός == 0) Αριθμός = 2; else Αριθμός = (Αριθμός*10) + 2; // Πιέστηκε δύο φορές} if (Y> 140 && Y <192) {Serial.println ("Button 5"); αν (Αριθμός == 0) Αριθμός = 5? else Αριθμός = (Αριθμός*10) + 5; // Πατημένο twic} if (Y> 192 && Y <245) {Serial.println ("Button 8"); αν (Αριθμός == 0) Αριθμός = 8? else Αριθμός = (Αριθμός*10) + 8; // Πατημένο twic}} if (X105) // Εντοπισμός κουμπιών στη στήλη 3 {if (Y> 0 && Y <85) {Serial.println ("Button Equal"); Num2 = αριθμός. αποτέλεσμα = αλήθεια? } if (Y> 85 && Y <140) {Serial.println ("Κουμπί 3"); αν (Αριθμός == 0) Αριθμός = 3? else Αριθμός = (Αριθμός*10) + 3; // Πιέστηκε δύο φορές} if (Y> 140 && Y <192) {Serial.println ("Button 6"); αν (Αριθμός == 0) Αριθμός = 6? else Αριθμός = (Αριθμός*10) + 6; // Πιέστηκε δύο φορές} if (Y> 192 && Y <245) {Serial.println ("Button 9"); αν (Αριθμός == 0) Αριθμός = 9? else Αριθμός = (Αριθμός*10) + 9; // Πιέστηκε δύο φορές}} if (X165) // Ανίχνευση κουμπιών στη στήλη 3 {Num1 = Number; Αριθμός = 0; tft.setCursor (200, 20); tft.setTextColor (ΚΟΚΚΙΝΟ); if (Y> 0 && Y <85) {Serial.println ("Προσθήκη"); δράση = 1; tft.println ('+');} if (Y> 85 && Y <140) {Serial.println ("Αφαίρεση"); δράση = 2; tft.println ('-');} if (Y> 140 && Y <192) {Serial.println ("Πολλαπλασιασμός"); δράση = 3; tft.println ('*');} if (Y> 192 && Y <245) {Serial.println ("Devesion"); δράση = 4; tft.println ('/');} καθυστέρηση (300); }} void CalculateResult () {if (action == 1) Number = Num1+Num2; εάν (δράση == 2) Αριθμός = Num1-Num2; if (action == 3) Number = Num1*Num2; if (action == 4) Number = Num1/Num2; } void DisplayResult () {tft.fillRect (0, 0, 240, 80, CYAN); // διαγραφή πλαισίου αποτελεσμάτων tft.setCursor (10, 20); tft.setTextSize (4); tft.setTextColor (ΜΑΥΡΟ); tft.println (Αριθμός); // ενημέρωση νέας τιμής} void IntroScreen () {tft.setCursor (55, 120); tft.setTextSize (3); tft.setTextColor (ΚΟΚΚΙΝΟ); tft.println ("ARDUINO"); tft.setCursor (30, 160); tft.println ("ΥΠΟΛΟΓΙΣΤΗΣ"); tft.setCursor (30, 220); tft.setTextSize (2); tft.setTextColor (ΜΠΛΕ); tft.println ("-Circut Digest"); καθυστέρηση (1800);} void draw_BoxNButtons () {// Draw the Result Box tft.fillRect (0, 0, 240, 80, CYAN); // Σχεδιάστε την πρώτη στήλη tft.fillRect (0, 260, 60, 60, RED); tft.fillRect (0, 200, 60, 60, ΜΑΥΡΟ); tft.fillRect (0, 140, 60, 60, ΜΑΥΡΟ); tft.fillRect (0, 80, 60, 60, ΜΑΥΡΟ); // Σχεδιάστε τρίτη στήλη tft.fillRect (120, 260, 60, 60, ΠΡΑΣΙΝΗ); tft.fillRect (120, 200, 60, 60, ΜΑΥΡΟ); tft.fillRect (120, 140, 60, 60, ΜΑΥΡΟ); tft.fillRect (120, 80, 60, 60, ΜΑΥΡΟ); // Draw Secound & Fourth Column for (int b = 260; b> = 80; b- = 60) {tft.fillRect (180, b, 60, 60, BLUE); tft.fillRect (60, b, 60, 60, BLACK);} // Draw Horizontal Lines for (int h = 80; h <= 320; h+= 60) tft.drawFastHLine (0, h, 240, WHITE); // Σχεδιάστε κάθετες γραμμές για (int v = 0; v <= 240; v+= 60) tft.drawFastVLine (v, 80, 240, WHITE); // Εμφάνιση ετικετών πληκτρολογίου για (int j = 0; j <4; j ++) {για (int i = 0; i <4; i ++) {tft.setCursor (22+(60*i), 100+(60* ι))? tft.setTextSize (3); tft.setTextColor (ΛΕΥΚΟ); tft.println (σύμβολο [j] ); }}} Μετά τη μεταφόρτωση του κώδικα, θα μπορείτε να δείτε την αριθμομηχανή να λειτουργεί στην οθόνη σας ως δική μου και τώρα μπορείτε να εκτελέσετε βασικούς μαθηματικούς υπολογισμούς σε αυτό. Διασκεδάστε λοιπόν φτιάχνοντας τη δική σας αριθμομηχανή με το Arduino UNO.

Συνιστάται: