Υπολογιστής Arduino: 6 βήματα
Υπολογιστής Arduino: 6 βήματα
Anonim
Υπολογιστής Arduino
Υπολογιστής Arduino

Ο προγραμματισμός είναι πάντα διασκεδαστικός και το Arduino είναι μια υπέροχη πλατφόρμα αν ξεκινάτε με τον ενσωματωμένο προγραμματισμό. Σε αυτό το σεμινάριο θα δημιουργήσουμε τη δική μας αριθμομηχανή με το Arduino. Οι τιμές μπορούν να αποσταλούν μέσω ενός πληκτρολογίου (πληκτρολόγιο 4 × 4) και το αποτέλεσμα μπορεί να προβληθεί σε μια οθόνη LCD (16 × 2 Dot-matrix). Αυτός ο υπολογιστής θα μπορούσε να εκτελέσει απλές πράξεις όπως Πρόσθεση, Αφαίρεση, Πολλαπλασιασμός και Διαίρεση με ακέραιους αριθμούς. Αλλά μόλις κατανοήσετε την έννοια, μπορείτε να εφαρμόσετε ακόμη και επιστημονικές λειτουργίες με ενσωματωμένες λειτουργίες του Arduino. Στο τέλος αυτού του έργου θα ξέρετε πώς να χρησιμοποιείτε LCD 16x2 και πληκτρολόγιο με Arduino και επίσης πόσο εύκολο είναι να προγραμματίσετε γι 'αυτούς χρησιμοποιώντας εύκολα διαθέσιμες βιβλιοθήκες. Θα καταλάβετε επίσης πώς να προγραμματίσετε το Arduino για την επίτευξη μιας συγκεκριμένης εργασίας.

Βήμα 1: Απαιτούνται πράγματα

Arduino Uno (Οποιαδήποτε έκδοση θα λειτουργήσει) 16 × 2 LCD οθόνη 4 × 4 πληκτρολόγιο Μπαταρία 9V Μπαταρία και καλώδια σύνδεσης

Βήμα 2: Διάγραμμα κυκλώματος

Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

Βήμα 3: Πρόγραμμα αριθμομηχανής Arduino

Το πλήρες πρόγραμμα Arduino για αυτό το έργο δίνεται στο τέλος αυτού του έργου. Ο κώδικας χωρίζεται σε μικρά σημαντικά κομμάτια και εξηγείται παρακάτω. Όπως είπαμε νωρίτερα, πρόκειται να διασυνδέσουμε μια οθόνη LCD και ένα πληκτρολόγιο με το Arduino χρησιμοποιώντας βιβλιοθήκες. Ας τα προσθέσουμε λοιπόν πρώτα στο Arduino IDE. Η βιβλιοθήκη για LCD περιλαμβάνεται ήδη στο Arduino από προεπιλογή, οπότε δεν χρειάζεται να ανησυχούμε για αυτό. Για τη βιβλιοθήκη πληκτρολογίου κάντε κλικ στο σύνδεσμο για να το κατεβάσετε από το Github. Θα λάβετε ένα αρχείο ZIP και, στη συνέχεια, προσθέστε αυτό το lib στο Arduino by Sketch -> Include Library -> Προσθήκη αρχείου. ZIP και δείξτε τη θέση σε αυτό το αρχείο που έχετε κατεβάσει. Μόλις τελειώσουμε, είμαστε όλοι έτοιμοι για προγραμματισμό. Παρόλο που έχουμε χρησιμοποιήσει μια βιβλιοθήκη για τη χρήση ενός πληκτρολογίου, πρέπει να αναφέρουμε μερικές λεπτομέρειες (φαίνονται παρακάτω) σχετικά με το πληκτρολόγιο στο Arduino. Η μεταβλητή ROWS και COLS θα δείξει πόσες γραμμές και στήλες έχει το πληκτρολόγιό μας και ο χάρτης πληκτρολογεί τη σειρά με την οποία υπάρχουν τα πλήκτρα στο πληκτρολόγιο. Το πληκτρολόγιο που χρησιμοποιώ σε αυτό το έργο μοιάζει με αυτό παρακάτω και ο χάρτης κλειδιού αντιπροσωπεύει επίσης το ίδιο. Περαιτέρω παρακάτω αναφέραμε σε ποιους πείρους συνδέεται το πληκτρολόγιο χρησιμοποιώντας τις μεταβλητές σειρές PIN και colPins.const byte ROWS = 4; // Τέσσερις γραμμέςconst byte COLS = 4; // Τρεις στήλες // Ορίστε τα πλήκτρα πληκτρολογίου [ROWS] [COLS] = {{'1', '2', '3', 'A'}, {'4', '5', '6', ' B '}, {' 7 ',' 8 ',' 9 ',' C '}, {'*',' 0 ','#',' D '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Συνδέστε το πληκτρολόγιο ROW0, ROW1, ROW2 και ROW3 σε αυτές τις ακίδες Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Συνδέστε το πληκτρολόγιο COL0, COL1 και COL2 σε αυτές τις καρφίτσες Arduino. Μόλις αναφέρουμε τι τύπο πληκτρολογίου χρησιμοποιούμε και πώς συνδέεται, μπορούμε να δημιουργήσουμε το πληκτρολόγιο χρησιμοποιώντας αυτές τις λεπτομέρειες χρησιμοποιώντας την παρακάτω γραμμή), rowPins, colPins, ROWS, COLS); // Δημιουργήστε το πληκτρολόγιο Ομοίως πρέπει επίσης να πείτε σε ποιες ακίδες του Arduino είναι συνδεδεμένη η οθόνη LCD. Σύμφωνα με το κυκλωματικό μας διάγραμμα, οι ορισμοί θα ήταν όπως παρακάτωconst int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Καρφίτσες στις οποίες είναι συνδεδεμένη LCDLiquidCrystal LCD (rs, en, d4, d5, d6, d7) // Δημιουργήστε την οθόνη LCD Μέσα στη λειτουργία ρύθμισης, εμφανίζουμε απλώς το όνομα του έργου και στη συνέχεια προχωρούμε στον βρόχο while όπου βρίσκεται το κύριο έργο. Βασικά, πρέπει να ελέγξουμε αν πληκτρολογείται κάτι στο πληκτρολόγιο, αν πληκτρολογηθεί πρέπει να αναγνωρίσουμε τι πληκτρολογείται και μετά μετατρέπεται σε μεταβλητή όταν πατηθεί το "=" πρέπει να υπολογίσουμε το αποτέλεσμα και μετά να το εμφανίσουμε τελικά στην οθόνη LCD. Αυτό είναι ακριβώς αυτό που γίνεται μέσα στη λειτουργία βρόχου όπως φαίνεται παρακάτω keykey = kpd.getKey (); // αποθήκευση τιμής πατημένου κλειδιού σε ένα charif (κλειδί! = NO_KEY) DetectButtons (); εάν (αποτέλεσμα == true) CalculateResult (); DisplayResult (); Το τι συμβαίνει μέσα σε κάθε συνάρτηση εξηγείται χρησιμοποιώντας τις γραμμές σχολίων, περάστε από τον πλήρη κώδικα που ακολουθεί, βιδώστε το για να καταλάβετε πώς λειτουργεί στην πραγματικότητα. Εάν έχετε οποιαδήποτε αμφιβολία για μια συγκεκριμένη γραμμή, μη διστάσετε να χρησιμοποιήσετε την ενότητα σχολίων ή τα φόρουμ.

Βήμα 4:

Βήμα 5: Λειτουργία του Υπολογιστή Arduino

Λειτουργεί με την αριθμομηχανή Arduino
Λειτουργεί με την αριθμομηχανή Arduino

Κάντε τις συνδέσεις σύμφωνα με το διάγραμμα κυκλώματος και ανεβάστε τον παρακάτω κώδικα. Εάν εμφανίζει σφάλμα, βεβαιωθείτε ότι έχετε προσθέσει τη βιβλιοθήκη σύμφωνα με τις οδηγίες που δίνονται παραπάνω. Μπορείτε επίσης να δοκιμάσετε την προσομοίωση για να ελέγξετε εάν το πρόβλημα είναι στο υλικό σας. Εάν όλα γίνουν όπως υποτίθεται, τότε το υλικό σας θα μοιάζει κάπως παρακάτω με την οθόνη LCD που εμφανίζει αυτόν τον Υπολογιστή Arduino χρησιμοποιώντας 4x4 Πληκτρολόγιο εν ενεργεία Δεδομένου ότι το πληκτρολόγιο που χρησιμοποιείται εδώ δεν έχει τις κατάλληλες σημάνσεις σε αυτό, υπέθεσα ότι τα αλφάβητα είναι χειριστές ως που αναφέρονται παρακάτωΧαρακτήρας στο πληκτρολόγιο Υποτίθεται ότι είναι "A" Προσθήκη (+) "B" Αφαίρεση (-) "C" Πολλαπλασιασμός (*) "D" Division (/) "*" Clear (C) "#" Equals (=) Μπορείτε να χρησιμοποιήστε έναν δείκτη για να γράψετε τι αντιπροσωπεύει κάθε κουμπί. Με αυτό, μπορείτε να ξεκινήσετε απευθείας τη χρήση της αριθμομηχανής. Πληκτρολογεί τον αριθμό και θα εμφανιστεί στη δεύτερη γραμμή πατήστε τον τελεστή και πληκτρολογήστε τον δεύτερο αριθμό σας τέλος πατήστε το πλήκτρο "#" για να πάρετε το αποτέλεσμα. Μπορείτε επίσης να δοκιμάσετε να δημιουργήσετε αυτήν την αριθμομηχανή Arduino που βασίζεται σε οθόνη αφής.

Βήμα 6: Κωδικός

/ * * Πρόγραμμα υπολογισμού πληκτρολογίου Arduino */#περιλαμβάνει // Αρχείο κεφαλίδας για LCD από https://www.arduino.cc/en/Reference/LiquidCrystal#include // Αρχείο κεφαλίδας για πληκτρολόγιο από https://github.com/ Chris-A/Keypadconst byte ROWS = 4; // Τέσσερις γραμμέςconst byte COLS = 4; // Τρεις στήλες // Ορίστε τα πλήκτρα πληκτρολογίου [ROWS] [COLS] = {{'7', '8', '9', 'D'}, {'4', '5', '6', ' C '}, {' 1 ',' 2 ',' 3 ',' B '}, {'*',' 0 ','#',' A '}}; byte rowPins [ROWS] = {0, 1, 2, 3}; // Συνδέστε το πληκτρολόγιο ROW0, ROW1, ROW2 και ROW3 σε αυτές τις ακίδες Arduino.byte colPins [COLS] = {4, 5, 6, 7}; // Συνδέστε το πληκτρολόγιο COL0, COL1 και COL2 σε αυτές τις καρφίτσες Arduino. Keypad kpd = Πληκτρολόγιο (makeKeymap (κλειδιά), rowPins, colPins, ROWS, COLS). // Δημιουργήστε το Πληκτρολόγιο int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Καρφίτσες στις οποίες είναι συνδεδεμένη LCDLiquidCrystal LCD (rs, en, d4, d5, d6, d7) μακρύ Num1, Num2, Number? κλειδί char, δράση. boolean result = false; void setup () {lcd.begin (16, 2); // Χρησιμοποιούμε LCD οθόνη LCD 16*2 lcd.print ("DIY Calculator"). // Εμφάνιση μηνύματος εισαγωγής lcd.setCursor (0, 1); // ορίστε τον κέρσορα στη στήλη 0, γραμμή 1 lcd.print ("-CircuitDigest"); // Εμφάνιση καθυστέρησης εισαγωγής μηνύματος (2000). // Περιμένετε μέχρι η οθόνη να εμφανίσει πληροφορίες lcd.clear (); // Στη συνέχεια, καθαρίστε το} void loop () {key = kpd.getKey (); // αποθήκευση τιμής πατημένου κλειδιού σε ένα charif (κλειδί! = NO_KEY) DetectButtons (); εάν (αποτέλεσμα == true) CalculateResult (); DisplayResult (); } void DetectButtons () {lcd.clear (); // Στη συνέχεια, καθαρίστε το εάν (πλήκτρο == '*') // Εάν το κουμπί ακύρωσης πατηθεί {Serial.println ("Button Cancel"); Αριθμός = Num1 = Num2 = 0; result = false;} if (key == '1') // If the Button 1 is pressed {Serial.println ("Button 1"); αν (Αριθμός == 0) Αριθμός = 1? else Αριθμός = (Αριθμός*10) + 1; // Πιέστηκε δύο φορές} εάν (πλήκτρο == '4') // Εάν πατηθεί το κουμπί 4 {Serial.println ("Κουμπί 4"); αν (Αριθμός == 0) Αριθμός = 4? else Αριθμός = (Αριθμός*10) + 4; // Πιέστηκε δύο φορές} εάν (πλήκτρο == '7') // Εάν πατηθεί το κουμπί 7 {Serial.println ("Κουμπί 7"); αν (Αριθμός == 0) Αριθμός = 7? else Αριθμός = (Αριθμός*10) + 7; // Πιέστηκε δύο φορές} if (key == '0') {Serial.println ("Button 0"); // Το κουμπί 0 πιέζεται εάν (Αριθμός == 0) Αριθμός = 0; else Αριθμός = (Αριθμός*10) + 0; // Πιέστηκε δύο φορές} εάν (πλήκτρο == '2') // Πιέζεται το κουμπί 2 {Serial.println ("Κουμπί 2"); εάν (Αριθμός == 0) Αριθμός = 2; else Αριθμός = (Αριθμός*10) + 2; // Πιέστηκε δύο φορές} if (key == '5') {Serial.println ("Button 5"); αν (Αριθμός == 0) Αριθμός = 5? else Αριθμός = (Αριθμός*10) + 5; // Πιέστηκε δύο φορές} if (key == '8') {Serial.println ("Button 8"); αν (Αριθμός == 0) Αριθμός = 8? else Αριθμός = (Αριθμός*10) + 8; // Πιέστηκε δύο φορές} if (key == '#') {Serial.println ("Button Equal"); Num2 = αριθμός. αποτέλεσμα = αλήθεια? } if (key == '3') {Serial.println ("Button 3"); αν (Αριθμός == 0) Αριθμός = 3? else Αριθμός = (Αριθμός*10) + 3; // Πιέστηκε δύο φορές} if (key == '6') {Serial.println ("Button 6"); αν (Αριθμός == 0) Αριθμός = 6? else Αριθμός = (Αριθμός*10) + 6; // Πιέστηκε δύο φορές} if (key == '9') {Serial.println ("Button 9"); αν (Αριθμός == 0) Αριθμός = 9? else Αριθμός = (Αριθμός*10) + 9; // Πιέστηκε δύο φορές} if (πλήκτρο == 'A' || πλήκτρο == 'B' || πλήκτρο == 'C' || πλήκτρο == 'D') // Ανίχνευση κουμπιών στη στήλη 4 {Num1 = Number; Αριθμός = 0; if (key == 'A') {Serial.println ("Addition"); action = '+';} if (key == 'B') {Serial.println ("Αφαίρεση"); δράση = '-'; } if (key == 'C') {Serial.println ("Πολλαπλασιασμός"); action = '*';} if (key == 'D') {Serial.println ("Devesion"); δράση = '/';} καθυστέρηση (100); }} void CalculateResult () {if (action == '+') Number = Num1+Num2; if (action == '-') Number = Num1-Num2; if (action == '*') Number = Num1*Num2; if (action == '/') Number = Num1/Num2; } void DisplayResult () {lcd.setCursor (0, 0); // ορίστε τον κέρσορα στη στήλη 0, γραμμή 1 lcd.print (Num1); lcd.print (δράση); lcd.print (Num2); if (αποτέλεσμα == true) {lcd.print ("="); lcd.print (Number);} // Εμφάνιση του αποτελέσματος lcd.setCursor (0, 1); // ορίστε τον κέρσορα στη στήλη 0, γραμμή 1 lcd.print (Number); // Εμφάνιση του αποτελέσματος}