Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-23 14:39
Γεια σας παιδιά σε αυτό το εκπαιδευτικό εγχειρίδιο θα μάθουμε πώς να φτιάχνουμε μια αριθμομηχανή χρησιμοποιώντας το Arduino Uno με οθόνη αφής TFT LCD 3,5 ιντσών. Έτσι, θα γράψουμε έναν κωδικό και θα τον ανεβάσουμε στο arduino, ο οποίος θα εμφανίζει τη διεπαφή της αριθμομηχανής στην οθόνη και θα εκτελεί λειτουργίες αφής και δίνουν την έξοδο βασικών μαθηματικών εκφράσεων.
Βήμα 1: Πράγματα που χρειάζεστε
Για αυτό το έργο θα χρειαστείτε τα ακόλουθα πράγματα: 3.5 TFT LCD DISPLAYARDUINO UNO
Βήμα 2: Εγκατάσταση της βιβλιοθήκης εμφάνισης 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.
Συνιστάται:
Σύστημα κλειδώματος οθόνης LCD οθόνης: 6 βήματα
Σύστημα κλειδώματος οθόνης LCD: Αυτό το έργο θα λειτουργήσει ως κλειδαριά στο σπίτι και ο μόνος τρόπος για να μπείτε μέσα στο σπίτι είναι να πατήσετε το σωστό τριψήφιο κωδικό. Η οθόνη LCD θα λειτουργεί ως συσκευή επικοινωνίας για την ενημέρωση του ατόμου εάν έχει εισαγάγει τον σωστό κωδικό ή όχι. Δικα τους
Υπολογιστής οθόνης αφής Arduino: 7 βήματα
Υπολογιστής οθόνης αφής Arduino: Γεια σας! Πρόκειται για ένα έργο κατασκευής αριθμομηχανής οθόνης αφής χρησιμοποιώντας Arduino Uno και ασπίδα LCD TFT. Σκέφτηκα την ιδέα για το μάθημα προγραμματισμού στο σπίτι μου και η εμπειρία στην κατασκευή αυτού του έργου ήταν πολύ ενδιαφέρουσα. Αυτός ο υπολογιστής περίπου
Τρία κυκλώματα αισθητήρα αφής + κύκλωμα χρονοδιακόπτη αφής: 4 βήματα
Τρία κυκλώματα αισθητήρα αφής + κύκλωμα χρονοδιακόπτη αφής: Ο αισθητήρας αφής είναι ένα κύκλωμα που ενεργοποιείται όταν εντοπίζει την αφή στις ακίδες αφής. Λειτουργεί σε παροδική βάση, δηλαδή το φορτίο θα είναι ΕΝΕΡΓΟΠΟΙΗΜΕΝΟ μόνο για την ώρα που γίνεται το άγγιγμα στις καρφίτσες. Εδώ, θα σας δείξω τρεις διαφορετικούς τρόπους για να κάνετε ένα αισθητήριο αφής
Κλείδωμα πόρτας οθόνης αφής Arduino TFT: 5 βήματα
Arduino TFT Touchscreen Door Lock: Αυτή είναι η πρώτη μου οδηγία. Αυτό το έργο χρησιμοποιεί Arduino και ένα 2,8 " Οθόνη αφής TFT με σκίτσο κωδικού πρόσβασης για ενεργοποίηση ρελέ που σπάει το κύκλωμα σε πόρτα κλειδώματος mag. Στο παρασκήνιο, η κλειδαριά RFID σε μια πόρτα στη δουλειά έσπασε αντί να επανασυνδέσει το
Arduino Uno: Bitmap Animation στην ασπίδα οθόνης αφής ILI9341 TFT με Visuino: 12 βήματα (με εικόνες)
Arduino Uno: Bitmap Animation στο ILI9341 TFT Touchscreen Shield Shield With Visuino: Οι ασπίδες οθόνης αφής TFT βασισμένες σε ILI9341 είναι πολύ δημοφιλείς ασπίδες οθόνης χαμηλού κόστους για το Arduino. Το Visuino είχε υποστήριξη για αρκετό καιρό, αλλά ποτέ δεν είχα την ευκαιρία να γράψω ένα σεμινάριο για το πώς να τα χρησιμοποιήσω. Πρόσφατα όμως λίγοι άνθρωποι ρώτησαν