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

1602 LCD πληκτρολόγιο ασπίδα ενότητας με I2C σακίδιο: 6 βήματα
1602 LCD πληκτρολόγιο ασπίδα ενότητας με I2C σακίδιο: 6 βήματα

Βίντεο: 1602 LCD πληκτρολόγιο ασπίδα ενότητας με I2C σακίδιο: 6 βήματα

Βίντεο: 1602 LCD πληκτρολόγιο ασπίδα ενότητας με I2C σακίδιο: 6 βήματα
Βίντεο: Arduino 16x2 I2C LCD Moving text #shorts 2024, Νοέμβριος
Anonim
1602 Λειτουργική μονάδα ασπίδας πληκτρολογίου LCD με σακίδιο I2C
1602 Λειτουργική μονάδα ασπίδας πληκτρολογίου LCD με σακίδιο I2C

Ως μέρος ενός μεγαλύτερου έργου, ήθελα να έχω μια οθόνη LCD και ένα πληκτρολόγιο για πλοήγηση σε μερικά απλά μενού. Θα χρησιμοποιήσω πολλές θύρες εισόδου/εξόδου στο Arduino για άλλες εργασίες, οπότε ήθελα μια διεπαφή I2C για την οθόνη LCD. Έτσι αγόρασα κάποιο υλικό, που αποτελείται από μια μονάδα ασπίδας 1602 πληκτρολογίου LCD από το DFRobot και μια ανώνυμη σειριακή μονάδα I2C για LCD. Θέλω να τα χρησιμοποιήσω με ένα Arduino Nano. Στη συνέχεια διαπίστωσα ότι υπάρχουν κάποιες προκλήσεις για να συνεργαστούν αυτά τα στοιχεία - αλλά είναι δυνατό. Θέλω λοιπόν να μοιραστώ την εμπειρία μου και ίσως βοηθήσω κάποιους άλλους.

Αυτή η φωτογραφία είναι του πίνακα που λειτουργεί, ο οποίος μπορεί να εμφανίζει μηνύματα στην οθόνη LCD και να αναγνωρίζει πατήματα πλήκτρων. Η οθόνη LCD ελέγχεται μέσω της διεπαφής I2C, συμπεριλαμβανομένου του οπίσθιου φωτισμού LCD. Τα πλήκτρα παραλαμβάνονται από το Arduino στην ακίδα A0 (μπορεί να είναι οποιαδήποτε από τις αναλογικές ακίδες, εκτός από τις Α4 και Α5 που είναι συνδεδεμένες για τη διεπαφή I2C).

Βήμα 1: Περιγραφή εξαρτημάτων - Ενότητα ασπίδας πληκτρολογίου LCD

Περιγραφή ανταλλακτικών - Μονάδα ασπίδας πληκτρολογίου LCD
Περιγραφή ανταλλακτικών - Μονάδα ασπίδας πληκτρολογίου LCD

Η μονάδα ασπίδας πληκτρολογίου LCD αποτελείται από μια ευρέως χρησιμοποιούμενη LCD 1602 τοποθετημένη πάνω σε μια πλακέτα κυκλώματος που συγκρατεί τα κλειδιά και η οποία λαμβάνει ένα υποσύνολο των συνδέσεων LCD και τα καθιστά διαθέσιμα στους πείρους κεφαλίδας στην κάτω πλευρά της πλακέτας κυκλώματος. Καταλαβαίνω ότι αυτός ο πίνακας προορίζεται να τοποθετηθεί πάνω από ένα Arduino Uno ή παρόμοιο και παρέχει τη σωστή διάταξη καρφιτσών για να λειτουργεί σε αυτό το περιβάλλον. Αγόρασα αυτήν την ενότητα στο Ebay από έναν προμηθευτή στην Κίνα. Οι ακίδες κεφαλίδας στην κάτω πλευρά (πληκτρολόγιο) της πλακέτας επισημαίνονται ως επί το πλείστον, αλλά οι ακίδες στην επάνω πλευρά, η οποία είναι η διασύνδεση LCD, δεν φέρουν ετικέτα. Ωστόσο, οι ακίδες στην ίδια την οθόνη είναι επισημασμένες.

Βήμα 2: Περιγραφή μερών - Σειριακή μονάδα I2C

Περιγραφή ανταλλακτικών - Σειριακή μονάδα I2C
Περιγραφή ανταλλακτικών - Σειριακή μονάδα I2C

Η σειριακή μονάδα έχει τη συνηθισμένη κεφαλίδα 4 ακίδων για το I2C και ένα σύνολο ακίδων κεφαλίδας χωρίς ετικέτα που καταλαβαίνω ότι προορίζονται να συνδεθούν απευθείας στην κάτω πλευρά της μονάδας LCD. Μελετώντας τις ετικέτες στην οθόνη LCD, μπόρεσα να προσδιορίσω τις λειτουργίες των ακίδων στη σειριακή μονάδα.

Αυτή η ενότητα βασίζεται στο IC PCF8574T που τερματίζει το πρωτόκολλο I2C, έχει 3 ακίδες για έλεγχο διεύθυνσης (20 έως 27) και έχει 8 ψηφιακές ακίδες εισόδου/εξόδου P0 έως P7. Σύμφωνα με το φύλλο δεδομένων του PCF8574T, κάθε πείρος εισόδου/εξόδου έχει FET για να το τραβήξει στο έδαφος για την κατάσταση LOW και μπορεί να βυθιστεί τουλάχιστον 20ma. Στην Υψηλή κατάσταση, έχει ένα παροδικό ενεργό τράβηγμα και στη συνέχεια ένα συνεχές ρεύμα έλξης περίπου 0,1 mA.

Σε αυτήν την ενότητα, όλες οι ψηφιακές ακίδες εισόδου/εξόδου, εκτός από το P3, μεταφέρονται απλώς σε ακίδες κεφαλίδας (στα δεξιά της φωτογραφίας). Στην περίπτωση του P3, συνδέεται με τη βάση ενός τρανζίστορ (φαίνεται στη φωτογραφία στην επάνω δεξιά περιοχή ακριβώς κάτω από την ετικέτα "LED"). Ο πομπός αυτού του τρανζίστορ είναι συνδεδεμένος με Vss (γείωση) και ο συλλέκτης με τον πείρο κεφαλίδας 16, όπου μπορεί να χρησιμοποιηθεί για τον έλεγχο του οπίσθιου φωτισμού LCD. Λόγω του τρανζίστορ, η λογική κατάσταση αντιστρέφεται σε σχέση με αυτήν που υποτίθεται στη βιβλιοθήκη λογισμικού. Δηλαδή, ο οπίσθιος φωτισμός LCD είναι ενεργοποιημένος όταν ο ακροδέκτης P3 είναι χαμηλός και OFF όταν ο πείρος P3 είναι υψηλός.

Η ετικέτα στο τρανζίστορ γράφει L6 που σύμφωνα με την έρευνά μου το καθιστά πιθανότατα MMBC1623L6 που έχει ελάχιστο κέρδος ρεύματος 200. Με 0.1 mA ρεύματος βάσης, θα πρέπει να μπορεί να διατηρεί χαμηλή κατάσταση στον συλλέκτη του (μονάδα Pin 16) με ρεύμα συλλέκτη τουλάχιστον 20mA.

Επιπλέον, αυτό το δομοστοιχείο διαθέτει ένα ποτενσιόμετρο 10Κ συνδεδεμένο μεταξύ +5 και Ground, του οποίου ο μεταβλητός αγωγός εξάγεται στο pin 3 (τρίτο από το κάτω μέρος της φωτογραφίας). Όταν συνδέεται απευθείας στην οθόνη LCD, αυτό το δοχείο θα ελέγχει την αντίθεση της οθόνης LCD. Ωστόσο, αυτή η λειτουργία παρέχεται από ένα ξεχωριστό παρόμοιο δοχείο στην ασπίδα LCD, επομένως αυτό το δοχείο στη σειριακή μονάδα δεν έχει καμία λειτουργία.

Δεν μπόρεσα να βρω καμία σύνδεση με την ακίδα INT του PCF8574T.

ΕΝΗΜΕΡΩΣΗ 22 Αυγούστου 2019

Όπως αναφέρθηκε παραπάνω, το PCF8574 διαθέτει 3 ακίδες ελέγχου διεύθυνσης. Φαίνεται ότι τα βγάζουμε σε μαξιλάρια στον πίνακα σακιδίων όπου φέρουν τις ετικέτες A0, A1 και A2. Μπορούν να φανούν στη φωτογραφία. Δεν το έχω δοκιμάσει, αλλά φαίνεται σχεδόν βέβαιο ότι γεφυρώνοντας μία ή περισσότερες από αυτές τις ακίδες στα γειτονικά μαξιλάρια, η διεύθυνση I2C μπορεί να ελεγχθεί σε εύρος από 20 έως 27. Επιπλέον, υπάρχει μια δεύτερη σχεδόν πανομοιότυπη συσκευή, η PCF8574A που έχει πανομοιότυπη λειτουργικότητα με το PCF8574 αλλά καλύπτει το εύρος διευθύνσεων από 0x38 έως 0x3F.

Η διεύθυνση που χρησιμοποιεί πραγματικά η συσκευή σας μπορεί να ελεγχθεί με ένα I2CScanner. Υπάρχουν αρκετοί απλοί σαρωτές I2C που διατίθενται από διάφορες πηγές. Αυτό στη διεύθυνση https://github.com/farmerkeith/I2CScanner προσδιορίζει επίσης ορισμένες από τις συσκευές που βρέθηκαν.

Βήμα 3: Συνδέσεις

Συνδέσεις
Συνδέσεις

Χάρη στον ChaitanyaM17 που παρείχε το διάγραμμα Fritzing που απεικονίζει τις συνδέσεις, που περιγράφονται παρακάτω.

Εξουσία:

Η μονάδα LCD έχει έναν πείρο στην κάτω πλευρά με την ένδειξη "5.0V". Στα δεξιά, δίπλα σε αυτό, υπάρχουν δύο ακίδες χωρίς ετικέτα που είναι και οι δύο αλεσμένες.

Κρατώντας τη σειριακή μονάδα με τη διεπαφή I2C στο αριστερό άκρο, υπάρχουν 16 ακίδες στο κάτω άκρο. Το πρώτο από αυτά είναι αλεσμένο και το δεύτερο από αυτά είναι +5v. Μια άλλη επιλογή είναι η χρήση των δύο κάτω ακίδων στη διεπαφή I2C για ισχύ, αλλά το βρήκα πιο βολικό να χρησιμοποιήσω τις ακίδες όπως περιγράφεται παραπάνω.

Διεπαφή I2C. Στη σειριακή μονάδα, το επάνω pin είναι SCL (ρολόι) και πηγαίνει στο Arduino A5. Το δεύτερο pin κάτω είναι SDA (δεδομένα) και πηγαίνει στο Arduino A4.

Διεπαφή εκτύπωσης LCD. Υπάρχουν 6 συνδέσεις μεταξύ της σειριακής μονάδας και της ασπίδας πληκτρολογίου LCD, όλες μεταξύ των ακίδων χωρίς ετικέτες. Θα τα προσδιορίσω στη μονάδα LCD μετρώντας από Δεξιά προς Αριστερά, με την πρώτη καρφίτσα να είναι 1. Υπάρχουν 2 μπλοκ των 8, οπότε μεταβαίνουν από το 1 στο 16. Τα αναγνωρίζω στη σειριακή μονάδα I2C μετρώντας από Αριστερά έως Σωστά, υπάρχουν επίσης 16 από αυτά. Επιπλέον, δίνω σε κάθε καλώδιο μια ετικέτα, η οποία είναι η ισοδύναμη ακίδα στο Arduino που συνήθως σχετίζεται με αυτήν τη λειτουργία, σε περίπτωση άμεσης σύνδεσης χωρίς τη σειριακή μονάδα.

Έτσι, οι 6 συνδέσεις δεδομένων είναι:

Ισοδύναμο Arduino // Καρφίτσα σειριακής μονάδας // Καρφίτσα μονάδας πληκτρολογίου LCD

D4 // 11 // 5 D5 // 12 // 6 D6 // 13 // 7 D7 // 14 // 8 D8 // 4 // 9D9 // 6 // 10

Έλεγχος οπίσθιου φωτισμού LCD: Χρησιμοποιεί μία ακόμη σύνδεση:

Ισοδύναμο Arduino // Καρφίτσα σειριακής μονάδας // Καρφίτσα μονάδας πληκτρολογίου LCD

D10 // 16 // 11

Διεπαφή πληκτρολογίου: Χρησιμοποιεί ένα μόνο καλώδιο από τον πείρο της μονάδας LCD στην κάτω πλευρά με την ένδειξη "A0", για να καρφιτσώσει το A0 στο Arduino. Τουλάχιστον αυτό ήταν αρκετά εύκολο!

Βήμα 4: Χρησιμοποιώντας το κλειδί RST παρόμοιο με τα άλλα 5 κλειδιά

Το RST μπορεί να συνδεθεί απευθείας στην είσοδο RESTART του Arduino Nano.

Ωστόσο, εάν θέλετε το κλειδί RST να μπορεί να χρησιμοποιηθεί στο λογισμικό για άλλα πράγματα, αυτό μπορεί να γίνει συνδέοντας μια αντίσταση 15K μεταξύ του πείρου RST και του πείρου A0 στην κάτω πλευρά της ασπίδας πληκτρολογίου LCD.

Αυτό λειτουργεί ως εξής: Υπάρχει μια αντίσταση 2K μεταξύ +5V και του δεξιού κλειδιού. Στη συνέχεια, μια αλυσίδα προοδευτικά μεγαλύτερων αντιστάσεων για καθένα από τα άλλα πλήκτρα (330R στο UP πλήκτρο, 620R στο DOWN πλήκτρο, 1K στο αριστερό πλήκτρο και 3K3 στο SELECT. Όλα τα κλειδιά (συμπεριλαμβανομένου του κλειδιού RST) συνδέονται με γείωση. Όταν συνδέονται με μετατροπέα A/D 10 bit (όπως για το Arduino Nano A0) παρέχουν περίπου τις ακόλουθες τιμές:

Δεξιά = 0; Πάνω = 100; Κάτω = 260; Αριστερά = 410; Επιλέξτε = 640.

Με την αντίσταση 15 k σε RST, αποδίδει περίπου 850.

Το λογισμικό θα χρησιμοποιήσει τιμές γύρω από τα μεσαία σημεία μεταξύ αυτών των τιμών για να αποφασίσει ποιο πλήκτρο έχει πατηθεί.

Βήμα 5: Λογισμικό

Το χρήσιμο λογισμικό είναι φυσικά μια άσκηση για τον αναγνώστη. Ωστόσο, για να ξεκινήσετε, μπορείτε να ρίξετε μια ματιά στο λογισμικό δοκιμής μου. Χρησιμοποίησα τη βιβλιοθήκη NewLiquidCrystal, η οποία περιέχει υποστήριξη για τη διεπαφή I2C. Όλα λειτούργησαν, μόλις εγκαταστήσω σωστά τις βιβλιοθήκες.

Το κύριο σημείο ήταν να αντιστραφεί η πολικότητα των εντολών Backlight OFF και ON (λόγω του τρανζίστορ στη μονάδα I2C όπως εξηγείται στην ενότητα Περιγραφή ανταλλακτικών).

ΕΝΗΜΕΡΩΣΗ 22 Αυγούστου 2019

Εάν αντιμετωπίζετε προβλήματα με την οθόνη LCD που δεν λειτουργεί, ελέγξτε τη διεύθυνση I2C του σειριακού σακιδίου σας χρησιμοποιώντας έναν σαρωτή I2C. Επισυνάπτεται κατάλληλος σαρωτής. Στη συνέχεια, εάν είναι απαραίτητο, προσαρμόστε την πρώτη παράμετρο στη δήλωση

LiquidCrystal_I2C LCD (0x27, 2, 1, 0, 4, 5, 6, 7);

Βήμα 6: Ανασκόπηση και συζήτηση

Όπως μπορείτε να δείτε, οι κύριες λειτουργίες λειτουργούν.

Η επόμενη πρόθεσή μου είναι να το βάλω σε ένα πλαίσιο έργου ως μέρος ενός άλλου έργου. Ωστόσο, αφού ξεκίνησα σε αυτόν τον δρόμο έμαθα ότι υπάρχει μια άλλη δυσκολία που δεν είχα προβλέψει.

Η δυσκολία είναι ότι αυτή η μονάδα πληκτρολογίου LCD δεν έχει ρυθμιστεί για εγκατάσταση σε κουτί. Οποιοδήποτε είδος κουτιού. Τα κουμπιά των 6 πλήκτρων βρίσκονται πολύ κάτω από το επίπεδο της οθόνης LCD, έτσι ώστε εάν η μονάδα είναι τοποθετημένη σε ένα κουτί (π.χ. στο καπάκι) με το πάνω μέρος της πλακέτας κυκλώματος LCD να ευθυγραμμίζεται με την κάτω πλευρά του καπακιού, οι κορυφές Τα κλειδιά βρίσκονται περίπου 7 mm κάτω από το επάνω μέρος του καπακιού.

Οι πιθανές λύσεις είναι:

α) Αντέξτε το. Τρυπήστε τρύπες πρόσβασης στο καπάκι και χρησιμοποιήστε ένα εργαλείο (π.χ. μια βελόνα πλέξης κατάλληλης διαμέτρου) για να πατήσετε τα κουμπιά.

β) Αφαιρέστε την οθόνη LCD από την πλακέτα κυκλώματος μονάδας και εκτελέστε χειρουργική επέμβαση στο πληκτρολόγιο, έτσι ώστε τα δύο εξαρτήματα να μπορούν να στερεωθούν στο καπάκι του κουτιού του έργου ανεξάρτητα (νομίζω ότι μπορεί να υπάρχει πρόβλημα με τα πολύ μικρά κουμπιά)

γ) αφαιρέστε τα υπάρχοντα κουμπιά και αντικαταστήστε τα με ψηλότερα κουμπιά. Τα νέα κουμπιά πρέπει να έχουν ύψος περίπου 13 mm, ώστε να μπορούν να λειτουργούν μέσω του καπακιού του κουτιού του έργου). Οι διακόπτες κουμπιών αντικατάστασης είναι άμεσα διαθέσιμοι σε μια σειρά από ύψη, συμπεριλαμβανομένων των 13mm.

δ) απορρίψτε τη μονάδα ασπίδας πληκτρολογίου LCD και χρησιμοποιήστε ξεχωριστές μονάδες LCD και πληκτρολογίου (δηλ. εκκινήστε από την αρχή). Υπάρχει ένα ευρύ φάσμα διαθέσιμων μονάδων πληκτρολογίου, ωστόσο δεν έχω δει μία με την ίδια διάταξη 6 πλήκτρων όπως σε αυτήν την ενότητα (δηλαδή Επιλογή, Αριστερά, Πάνω, Κάτω, Δεξιά, Επανεκκίνηση). Μπορεί να μην είναι μεγάλο ζήτημα, αλλά ένας από τους λόγους που ξεκίνησα με αυτήν την ενότητα ήταν ότι πίστευα ότι αυτή η βασική διάταξη ήταν αυτό που ήθελα.

Σχεδιάζω να πάω με τη λύση γ) παραπάνω και να δω πώς θα πάω.

Ένα άλλο απόσπασμα πληροφοριών που μπορεί να ενδιαφέρει:

Με τον οπίσθιο φωτισμό ενεργοποιημένο, η τρέχουσα κατανάλωση αυτού του έργου είναι: Arduino Nano 21,5 ma? Σειριακή ενότητα 3.6 ma; Μονάδα LCD 27,5 mA. Σύνολο 52 mA.

Με τον οπίσθιο φωτισμό απενεργοποιημένο, η τρέχουσα κατανάλωση αυτού του έργου είναι: Arduino Nano 21,5 ma? Σειριακή ενότητα 4.6 ma; Μονάδα LCD 9,8 mA; Σύνολο 36 mA.

Συνιστάται: