Σύνδεση οθόνης LCD στο Arduino. Προγραμματισμός "Γεια, κόσμος!"

οθόνη LCD συχνός επισκέπτηςσε έργα Arduino. Αλλά σε σύνθετα σχήματαμπορεί να έχουμε το πρόβλημα της έλλειψης θυρών Arduino λόγω της ανάγκης σύνδεσης μιας ασπίδας που έχει πάρα πολύ πολλές ακίδες. Η λύση σε αυτή την κατάσταση θα μπορούσε να είναι I2C/IICπροσαρμογέα που συνδέεται σχεδόν τυπικά για Οθόνη Arduino 1602 σε πίνακες Uno, Nano ή Mega με μόλις 4 καρφίτσες. Σε αυτό το άρθρο θα δούμε πώς μπορείτε να συνδεθείτε οθόνη LCDμε τη διεπαφή I2C, ποιες βιβλιοθήκες μπορούν να χρησιμοποιηθούν, θα γράψουμε ένα σύντομο παράδειγμα σκίτσου και θα αναλύσουμε τυπικά σφάλματα.

Οθόνη υγρών κρυστάλλων LCD 1602είναι καλή επιλογήγια την παραγωγή συμβολοσειρών χαρακτήρων σε διάφορα έργα. Είναι φθηνό, υπάρχουν διάφορες τροποποιήσεις με διαφορετικά χρώματαοπίσθιο φωτισμό, μπορείτε εύκολα να κατεβάσετε έτοιμες βιβλιοθήκες για σκίτσα Arduino. Αλλά το κύριο μειονέκτημα αυτής της οθόνης είναι το γεγονός ότι η οθόνη έχει 16 ψηφιακές εξόδους, από τα οποία απαιτούνται τουλάχιστον 6. Επομένως, η χρήση αυτής της οθόνης LCD χωρίς i2c προσθέτει σοβαρούς περιορισμούςγια πλακέτες Arduino Uno ή Nano. Εάν δεν υπάρχουν αρκετές επαφές, τότε θα πρέπει να αγοράσετε έναν πίνακα Arduino Megaή αποθηκεύστε επαφές, μεταξύ άλλων συνδέοντας την οθόνη μέσω i2c.

Σύντομη περιγραφή των ακίδων LCD 1602

Ας ρίξουμε μια πιο προσεκτική ματιά στις ακίδες LCD1602:

Κάθε ένα από τα pin έχει το δικό του σκοπό:

  1. Επίγειο GND;
  2. Τροφοδοτικό 5 V;
  3. Ρύθμιση αντίθεσης οθόνης.
  4. Εντολή, δεδομένα;
  5. Γράψιμο και ανάγνωση δεδομένων.
  6. Επιτρέπω;

7-14. Γραμμές δεδομένων;

  1. Συν οπίσθιος φωτισμός?
  2. Μείον τον οπίσθιο φωτισμό.

Προδιαγραφές οθόνης:

  • Τύπος εμφάνισης χαρακτήρων, είναι δυνατή η φόρτωση συμβόλων.
  • Φώτα LED?
  • Ελεγκτής HD44780;
  • Τάση τροφοδοσίας 5V;
  • Μορφοποίηση 16x2 χαρακτήρων.
  • Εύρος θερμοκρασίας λειτουργίας από -20C έως +70C, περιοχή θερμοκρασίας αποθήκευσης από -30C έως +80C.
  • Γωνία θέασης 180 μοίρες.

Διάγραμμα σύνδεσης LCD στην πλακέτα Arduino χωρίς i2C

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

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

Πού να αγοράσετε οθόνες i2c 1602 για το Arduino

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

  • Μια παραλλαγή μιας κανονικής οθόνης από έναν αρκετά γνωστό πωλητή Wavgat σε τιμή κάτω από 100 ρούβλια.
  • Σετ οθόνης και αντάπτορας i2c (πρέπει να το κολλήσετε μόνοι σας). Τιμή - κάτω από 200 ρούβλια
  • ασπίδα οθόνης i2c – Μονάδα LCD 1602 με κουμπιά ελέγχου και πλακέτα επέκτασης.

Περιγραφή του πρωτοκόλλου I2C

Πριν συζητήσουμε τη σύνδεση της οθόνης στο Arduino μέσω ενός προσαρμογέα i2c, ας μιλήσουμε εν συντομία για το ίδιο το πρωτόκολλο i2C.

I2C/IIC(Inter-Integrated Circuit) είναι ένα πρωτόκολλο που δημιουργήθηκε αρχικά για επικοινωνία ολοκληρωμένα κυκλώματαμέσα σε μια ηλεκτρονική συσκευή. Η ανάπτυξη ανήκει στη Philips. Το πρωτόκολλο i2c βασίζεται στη χρήση ενός διαύλου 8-bit, που απαιτείται για την επικοινωνία μπλοκ στα ηλεκτρονικά ελέγχου, και ενός συστήματος διευθύνσεων, χάρη στο οποίο μπορείτε να επικοινωνείτε μέσω των ίδιων καλωδίων με πολλές συσκευές. Απλώς μεταφέρουμε δεδομένα σε μια ή την άλλη συσκευή, προσθέτοντας το αναγνωριστικό του επιθυμητού στοιχείου στα πακέτα δεδομένων.

Το περισσότερο απλό κύκλωμαΤο I2C μπορεί να περιέχει μια κύρια συσκευή (τις περισσότερες φορές έναν μικροελεγκτή Arduino) και πολλές υποτελείς συσκευές (για παράδειγμα, μια οθόνη LCD). Κάθε συσκευή έχει μια διεύθυνση στην περιοχή από 7 έως 127. Δεν πρέπει να υπάρχουν δύο συσκευές με την ίδια διεύθυνση στο ίδιο κύκλωμα.

Η πλακέτα Arduino υποστηρίζει το i2c επίπεδο υλικού. Μπορείτε να χρησιμοποιήσετε τις ακίδες A4 και A5 για να συνδέσετε συσκευές χρησιμοποιώντας αυτό το πρωτόκολλο.

Υπάρχουν πολλά πλεονεκτήματα στη λειτουργία I2C:

  • Η λειτουργία απαιτεί μόνο 2 γραμμές - SDA (γραμμή δεδομένων) και SCL (γραμμή συγχρονισμού).
  • Σύνδεση μεγάλου αριθμού κορυφαίων συσκευών.
  • Μειωμένος χρόνος ανάπτυξης.
  • Απαιτείται μόνο ένας μικροελεγκτής για τον έλεγχο ολόκληρου του σετ συσκευών.
  • Ο πιθανός αριθμός μικροκυκλωμάτων που συνδέονται σε ένα δίαυλο περιορίζεται μόνο από τη μέγιστη χωρητικότητα.
  • Υψηλός βαθμός ασφάλειας δεδομένων λόγω ειδικό φίλτροενσωματωμένος καταστολέας υπερτάσεων στο κύκλωμα.
  • Μια απλή διαδικασία για τη διάγνωση των αναδυόμενων αστοχιών και τον γρήγορο εντοπισμό σφαλμάτων.
  • Ο δίαυλος είναι ήδη ενσωματωμένος στο ίδιο το Arduino, επομένως δεν χρειάζεται να αναπτυχθεί μια πρόσθετη διεπαφή διαύλου.

Ελαττώματα:

  • Υπάρχει ένα όριο χωρητικότητας στη γραμμή - 400 pF.
  • Είναι δύσκολο να προγραμματίσετε έναν ελεγκτή I2C εάν υπάρχουν πολλές διαφορετικές συσκευές στο δίαυλο.
  • Στο μεγάλες ποσότητεςΟι συσκευές δυσκολεύονται να εντοπίσουν ένα σφάλμα εάν μία από αυτές ορίσει λανθασμένα την κατάσταση χαμηλού επιπέδου.

Μονάδα i2c για LCD 1602 Arduino

Το πιο γρήγορο και βολικό τρόποΗ χρήση μιας οθόνης i2c στο Arduino σημαίνει αγορά μιας έτοιμης οθόνης με ενσωματωμένη υποστήριξη πρωτοκόλλου. Αλλά δεν υπάρχουν πολλές από αυτές τις οθόνες και δεν είναι φθηνές. Αλλά η ποικιλία τυπικές οθόνεςέχει ήδη κυκλοφορήσει μεγάλο ποσό. Επομένως, η πιο προσιτή και δημοφιλής επιλογή σήμερα είναι να αγοράσετε και να χρησιμοποιήσετε μια ξεχωριστή μονάδα I2C - έναν προσαρμογέα, ο οποίος μοιάζει με αυτό:

Στη μία πλευρά της μονάδας βλέπουμε i2c pins - γείωση, τροφοδοσία και 2 για μεταφορά δεδομένων. Στον άλλο προσαρμογέα βλέπουμε εξωτερικούς συνδέσμους τροφοδοσίας. Και, φυσικά, η πλακέτα έχει πολλά πόδια με τα οποία συγκολλάται η μονάδα τυπικές εξόδουςοθόνη.


Οι έξοδοι i2c χρησιμοποιούνται για σύνδεση στην πλακέτα Arduino. Αν χρειαστεί, συνδέουμε εξωτερικό τροφοδοτικόγια οπίσθιο φωτισμό. Με το ενσωματωμένο τρίμερ μπορούμε να ορίσουμε προσαρμοσμένες τιμές αντίθεσης J

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

Σύνδεση της οθόνης LCD στο Arduino μέσω I2C

Για να συνδεθείτε, χρειάζεστε την ίδια την πλακέτα Arduino, μια οθόνη, ένα breadboard, καλώδια σύνδεσης και ένα ποτενσιόμετρο.

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


Μια οθόνη LCD με υποστήριξη i2c συνδέεται στην πλακέτα χρησιμοποιώντας τέσσερα καλώδια - δύο καλώδια για δεδομένα, δύο καλώδια για τροφοδοσία.

  • Ο ακροδέκτης GND συνδέεται στο GND στην πλακέτα.
  • Ο ακροδέκτης VCC είναι στα 5V.
  • Το SCL συνδέεται με τον ακροδέκτη A5.
  • Το SDA συνδέεται με τον ακροδέκτη Α.

Και είναι όλο! Χωρίς πλέγματα καλωδίων, τα οποία μπλέκονται πολύ εύκολα. Ταυτόχρονα, μπορούμε απλά να εμπιστευτούμε όλη την πολυπλοκότητα της υλοποίησης του πρωτοκόλλου i2C στις βιβλιοθήκες.

Βιβλιοθήκες για εργασία με οθόνη LCD i2c

Για να αλληλεπιδράσετε με το Arduino και το LCD 1602 μέσω του διαύλου I2C, θα χρειαστείτε τουλάχιστον δύο βιβλιοθήκες:

  • Η βιβλιοθήκη Wire.h για εργασία με το I2C είναι ήδη διαθέσιμη στο τυπικό πρόγραμμα Arduino IDE.
  • Η βιβλιοθήκη LiquidCrystal_I2C.h, η οποία περιλαμβάνει μια μεγάλη ποικιλία εντολών για τον έλεγχο της οθόνης μέσω του διαύλου I2C και σας επιτρέπει να κάνετε το σκίτσο πιο απλό και πιο σύντομο. Πρέπει να εγκαταστήσετε επιπλέον τη βιβλιοθήκη Αφού συνδέσετε την οθόνη, πρέπει να εγκαταστήσετε επιπλέον τη βιβλιοθήκη LiquidCrystal_I2C.h

Αφού συνδέσουμε όλες τις απαραίτητες βιβλιοθήκες στο σκίτσο, δημιουργούμε ένα αντικείμενο και μπορούμε να χρησιμοποιήσουμε όλες τις λειτουργίες του. Για δοκιμή, ας φορτώσουμε το ακόλουθο τυπικό παράδειγμα σκίτσου.

#περιλαμβάνω #περιλαμβάνω // Συμπεριλαμβανομένης της βιβλιοθήκης //#include // Σύνδεση εναλλακτικής βιβλιοθήκης LiquidCrystal_I2C lcd(0x27,16,2); // Καθορίστε τη διεύθυνση I2C (η πιο κοινή τιμή), καθώς και τις παραμέτρους οθόνης (στην περίπτωση της LCD 1602 - 2 γραμμές των 16 χαρακτήρων η καθεμία //LiquidCrystal_PCF8574 lcd(0x27); // Επιλογή για τη ρύθμιση κενού βιβλιοθήκης PCF8574( ) ( lcd.init (); // Εκκίνηση της οθόνης lcd.backlight(); // Συνδέστε τον οπίσθιο φωτισμό lcd.setCursor(0,0); // Ρυθμίστε τον κέρσορα στην αρχή της πρώτης γραμμής lcd.print(" Γεια σας"); lcd.setCursor(0,1); // Ρυθμίστε τον κέρσορα στην αρχή της δεύτερης γραμμής lcd.print("ArduinoMaster"); // Πληκτρολογήστε κείμενο στη δεύτερη γραμμή ) void loop() ( )

Περιγραφή λειτουργιών και μεθόδων της βιβλιοθήκης LiquidCrystal_I2C:

  • home() και clear() - η πρώτη λειτουργία σάς επιτρέπει να επιστρέψετε τον κέρσορα στην αρχή της οθόνης, η δεύτερη κάνει το ίδιο, αλλά ταυτόχρονα διαγράφει όλα όσα υπήρχαν στην οθόνη πριν.
  • write(ch) – σας επιτρέπει να εκτυπώσετε έναν μόνο χαρακτήρα ch στην οθόνη.
  • cursor() και noCursor() – εμφανίζει/αποκρύπτει τον κέρσορα στην οθόνη.
  • blink() και noBlink() – ο κέρσορας αναβοσβήνει/δεν αναβοσβήνει (αν η εμφάνισή του ήταν ενεργοποιημένη πριν).
  • display() και noDisplay() – σας επιτρέπει να συνδέσετε/απενεργοποιήσετε την οθόνη.
  • scrollDisplayLeft() και scrollDisplayRight() – κάνει κύλιση στην οθόνη κατά έναν χαρακτήρα αριστερά/δεξιά.
  • autoscroll() και noAutoscroll() – σας επιτρέπει να ενεργοποιήσετε/απενεργοποιήσετε τη λειτουργία αυτόματης κύλισης. Σε αυτή τη λειτουργία, όλοι νέο σύμβολοείναι γραμμένο στο ίδιο σημείο, μετατοπίζοντας αυτό που γράφτηκε προηγουμένως στην οθόνη.
  • leftToRight() και rightToLeft() – Ρύθμιση της κατεύθυνσης του εμφανιζόμενου κειμένου – από αριστερά προς τα δεξιά ή από δεξιά προς τα αριστερά.
  • createChar(ch, bitmap) – δημιουργεί έναν χαρακτήρα με κωδικό ch (0 – 7), χρησιμοποιώντας μια σειρά από bitmap για τη δημιουργία ασπρόμαυρων σημείων.

Εναλλακτική βιβλιοθήκη για εργασία με οθόνη i2c

Σε ορισμένες περιπτώσεις, ενδέχεται να προκύψουν σφάλματα κατά τη χρήση της καθορισμένης βιβλιοθήκης με συσκευές εξοπλισμένες με ελεγκτές PCF8574. Σε αυτήν την περίπτωση, η βιβλιοθήκη LiquidCrystal_PCF8574.h μπορεί να προταθεί ως εναλλακτική. Επεκτείνει το LiquidCrystal_I2C, επομένως δεν θα υπάρχουν προβλήματα με τη χρήση του.

Προβλήματα με τη σύνδεση της οθόνης i2c lcd

Εάν μετά τη μεταφόρτωση του σκίτσου δεν βλέπετε κανένα μήνυμα στην οθόνη, δοκιμάστε τα παρακάτω βήματα.

Αρχικά, μπορείτε να αυξήσετε ή να μειώσετε την αντίθεση της οθόνης. Συχνά οι χαρακτήρες απλώς δεν είναι ορατοί λόγω της λειτουργίας αντίθεσης και οπίσθιου φωτισμού.

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

Ένας άλλος συνηθισμένος λόγος για τον οποίο λείπει κείμενο στην οθόνη μπορεί να είναι μια λανθασμένη διεύθυνση i2c. Πρώτα δοκιμάστε να αλλάξετε τη διεύθυνση της συσκευής στο σκίτσο από 0x27 0x20 ή σε 0x3F. U διαφορετικών κατασκευαστώνδιαφορετικές προεπιλεγμένες διευθύνσεις μπορούν να προστατεύονται. Εάν αυτό δεν βοηθήσει, μπορείτε να εκτελέσετε το σκίτσο του σαρωτή i2c, το οποίο σαρώνει όλες τις συνδεδεμένες συσκευές και προσδιορίζει τη διεύθυνσή τους χρησιμοποιώντας ωμή βία. Ένα παράδειγμα σκίτσου σαρωτή i2c.

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

συμπέρασμα

Σε αυτό το άρθρο, εξετάσαμε τα κύρια ζητήματα της χρήσης μιας οθόνης LCD σε πολύπλοκα έργα Arduino, όταν πρέπει να αποθηκεύσουμε δωρεάν καρφίτσες στην πλακέτα. Ένας απλός και φθηνός προσαρμογέας i2c θα σας επιτρέψει να συνδέσετε μια οθόνη LCD 1602, καταλαμβάνοντας μόνο 2 αναλογικές ακίδες. Σε πολλές περιπτώσεις αυτό μπορεί να είναι πολύ σημαντικό. Πληρωμή για ευκολία - αναγκαιότητα χρήσης πρόσθετη ενότητα– μετατροπέας και βιβλιοθήκη. Κατά τη γνώμη μας, καθόλου υψηλή τιμήγια την ευκολία του και συνιστούμε ανεπιφύλακτα τη χρήση αυτής της δυνατότητας σε έργα.

Κάθε ραδιοερασιτέχνης μετά από ένα ορισμένο ποσό απλά σπιτικά προϊόνταέρχεται στο στόχο να σχεδιάσει κάτι μεγαλειώδες χρησιμοποιώντας αισθητήρες και κουμπιά. Σε τελική ανάλυση, είναι πολύ πιο ενδιαφέρον να εμφανίζονται δεδομένα σε μια οθόνη παρά σε μια οθόνη θύρας. Αλλά τότε τίθεται το ερώτημα: ποια οθόνη να επιλέξω; Και γενικά, πώς να το συνδέσετε, τι χρειάζεται για να συνδεθείτε; Οι απαντήσεις σε αυτές τις ερωτήσεις θα συζητηθούν σε αυτό το άρθρο.

LCD 1602

Μεταξύ των πολλών επιλογών οθόνης, θα ήθελα να αναφέρω συγκεκριμένα την οθόνη LCD1602 που βασίζεται στον ελεγκτή HD4478. Υπάρχει αυτή η οθόνη σε δύο χρώματα: ανοιχτά λευκά γράμματα μπλε φόντο, μαύρα γράμματα επάνω κίτρινο φόντο. Σύνδεση LCDΤο 1602 στο Arduino επίσης δεν θα προκαλέσει προβλήματα, καθώς υπάρχει ενσωματωμένη βιβλιοθήκη και δεν χρειάζεται να κατεβάσετε τίποτα επιπλέον. Οι οθόνες διαφέρουν όχι μόνο σε τιμή, αλλά και σε μέγεθος. Συχνά, οι ραδιοερασιτέχνες χρησιμοποιούν 16 x 2, δηλαδή 2 γραμμές των 16 χαρακτήρων. Υπάρχει όμως και 20 x 4, όπου υπάρχουν 4 γραμμές των 20 χαρακτήρων. Οι διαστάσεις και το χρώμα δεν παίζουν κανένα ρόλο στη σύνδεση της οθόνης lcd 1602 με το Arduno, συνδέονται με τον ίδιο τρόπο. Η γωνία θέασης είναι 35 μοίρες, ο χρόνος απόκρισης της οθόνης είναι 250 ms. Μπορεί να λειτουργήσει σε θερμοκρασίες από -20 έως 70 βαθμούς Κελσίου. Κατά τη λειτουργία, χρησιμοποιεί 4 mA για την οθόνη και 120 mA για τον οπίσθιο φωτισμό.

Πού χρησιμοποιείται;

Αυτή η οθόνηέχει τη δημοτικότητά του όχι μόνο στους ραδιοερασιτέχνες, αλλά και μεταξύ των μεγάλους κατασκευαστές. Για παράδειγμα, οι εκτυπωτές και οι μηχανές καφέ χρησιμοποιούν επίσης LCD1602. Αυτό οφείλεται στη χαμηλή τιμή της, αυτή η οθόνη κοστίζει 200-300 ρούβλια σε κινεζικούς ιστότοπους. Αξίζει να το αγοράσετε από εκεί, καθώς στα καταστήματά μας οι σημάνσεις για αυτήν την οθόνη είναι πολύ υψηλές.

Σύνδεση στο Arduino

Σύνδεση LCD 1602 σε Arduino Nanoκαι το Uno δεν διαφέρει. Μπορείτε να εργαστείτε με την οθόνη σε δύο λειτουργίες: 4 bit και 8. Όταν εργάζεστε με 8 bit, χρησιμοποιούνται και τα bit χαμηλής και υψηλής τάξης και με τα 4 bit, μόνο τα bit χαμηλής τάξης. Δεν υπάρχει ιδιαίτερο νόημα στην εργασία με 8-bit, καθώς θα προσθέσει 4 ακόμη επαφές για σύνδεση, κάτι που δεν συνιστάται, επειδή η ταχύτητα δεν θα είναι υψηλότερη, το όριο για ενημερώσεις οθόνης είναι 10 φορές ανά δευτερόλεπτο. Γενικά, για τη σύνδεση της lcd 1602 με το Arduino, χρησιμοποιούνται πολλά καλώδια, κάτι που προκαλεί κάποια ταλαιπωρία, αλλά υπάρχουν ειδικές ασπίδες, αλλά για αυτό αργότερα. Η φωτογραφία δείχνει τη σύνδεση της οθόνης με το Arduino Uno:

Παράδειγμα κώδικα προγράμματος:

#περιλαμβάνω // Προσθήκη την απαραίτητη βιβλιοθήκη LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Ορισμός μεγέθους οθόνης lcd.setCursor(0, 0); // Ρύθμιση του δρομέα στην αρχή 1 γραμμές lcd.print("Hello, world!" // Εκτύπωση του κειμένου lcd.setCursor(0, 1) ; // Εκτύπωση του κειμένου ) void loop ()( )

Τι κάνει ο κωδικός; Το πρώτο βήμα είναι να συνδέσετε τη βιβλιοθήκη για εργασία με την οθόνη. Όπως αναφέρθηκε παραπάνω, αυτή η βιβλιοθήκη περιλαμβάνεται ήδη στο Arduino IDE και δεν χρειάζεται επιπλέον λήψη και εγκατάσταση. Στη συνέχεια, προσδιορίζονται οι επαφές που συνδέονται με τις ακίδες: RS, E, DB4, DB5, DB6, DB7, αντίστοιχα. Στη συνέχεια ρυθμίζεται το μέγεθος της οθόνης. Εφόσον εργαζόμαστε με μια έκδοση με 16 χαρακτήρες και 2 γραμμές, γράφουμε τις ακόλουθες τιμές. Τοποθετούμε τον κέρσορα στην αρχή της πρώτης γραμμής και εμφανίζουμε το πρώτο μας κείμενο Hello World. Στη συνέχεια, τοποθετήστε τον κέρσορα στη δεύτερη γραμμή και εμφανίστε το όνομα του ιστότοπου. Αυτό είναι όλο! Εξετάστηκε η σύνδεση της LCD 1602 με το Arduino Uno.

Τι είναι το I2C και γιατί χρειάζεται;

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

Σύνδεση χρησιμοποιώντας μονάδα I2C

Η σύνδεση LCD 1602 στο Arduino Nano με I2C καταλαμβάνει λίγο χώρο, μόνο 4 ακίδες: γείωση, τροφοδοσία και 2 εξόδους δεδομένων. Συνδέουμε το ρεύμα και τη γείωση στα 5V και στο GND στο Arduino, αντίστοιχα. Συνδέουμε τις υπόλοιπες δύο επαφές: SCL και SDA σε οποιαδήποτε αναλογική ακίδα. Στη φωτογραφία μπορείτε να δείτε ένα παράδειγμα σύνδεσης ενός lcd 1602 σε ένα arduino με μια μονάδα I2C:

Κωδικός προγράμματος

Εάν για να εργαστείτε με μια οθόνη χωρίς λειτουργική μονάδα ήταν απαραίτητο να χρησιμοποιήσετε μόνο μία βιβλιοθήκη, τότε για να εργαστείτε με μια ενότητα χρειάζεστε δύο βιβλιοθήκες. Ένα από αυτά περιλαμβάνεται ήδη στο Arduino IDE - Wire. Μια άλλη βιβλιοθήκη, η LiquidCrystal I2C, πρέπει να ληφθεί ξεχωριστά και να εγκατασταθεί. Για να εγκαταστήσετε τη βιβλιοθήκη στο Arduino, πρέπει να φορτωθούν τα περιεχόμενα του ληφθέντος αρχείου ριζικό φάκελοΒιβλιοθήκες. Παράδειγμα κώδικα προγράμματος με χρήση I2C:

#περιλαμβάνω #περιλαμβάνω LiquidCrystal_I2C LCD (0x27,16,2); // Ρυθμίστε την οθόνη void setup() ( lcd.init(); lcd.backlight(); // Ενεργοποιήστε τον οπίσθιο φωτισμό της οθόνης lcd..setCursor(8, 1); lcd.print("LCD 1602"); ) void loop( ) ( // Ρυθμίστε τον κέρσορα στη δεύτερη γραμμή και τον μηδενικό χαρακτήρα. lcd.setCursor(0, 1); // Εμφάνιση του αριθμού των δευτερολέπτων από την έναρξη του Arduino lcd.print(millis()/1000); )

Όπως μπορείτε να δείτε, ο κωδικός είναι σχεδόν ο ίδιος.

Πώς να προσθέσετε το δικό σας σύμβολο;

Το πρόβλημα με αυτές τις οθόνες είναι ότι δεν υπάρχει υποστήριξη για κυριλλικό αλφάβητο και σύμβολα. Για παράδειγμα, πρέπει να τοποθετήσετε κάποιο σύμβολο στην οθόνη ώστε να μπορεί να το αντικατοπτρίζει. Για να το κάνετε αυτό, η οθόνη σάς επιτρέπει να δημιουργήσετε έως και 7 δικά σας σύμβολα. Φανταστείτε τον πίνακα:

0 0 0 1 0
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
1 1 0 0 1
0 0 0 0 1
0 0 0 1 0
0 0 0 0 0

Εάν 0 - δεν υπάρχει τίποτα εκεί, αν 1 - αυτή είναι μια βαμμένη περιοχή. Στο παραπάνω παράδειγμα μπορείτε να δείτε τη δημιουργία του συμβόλου "χαμογελαστό χαμόγελο". Χρησιμοποιώντας ένα παράδειγμα προγράμματος στο Arduino θα μοιάζει με αυτό:

#περιλαμβάνω #περιλαμβάνω // Προσθέστε την απαραίτητη βιβλιοθήκη // Μάσκα bit του συμβόλου χαμόγελου byte smile = ( B00010, B00001, B11001, B00001, B11001, B00001, B00010, ); LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // (RS, E, DB4, DB5, DB6, DB7) void setup())( lcd.begin(16, 2); // Ορισμός μεγέθους οθόνης lcd.createChar(1, χαμόγελο); // Δημιουργία αριθμού χαρακτήρων 1 lcd.setCursor(0, 0 // Ρυθμίστε τον κέρσορα στην αρχή της γραμμής 1 lcd.print("\1" // Εκτύπωση ενός smiley (αριθμός χαρακτήρων 1) - "\1" ) ; ) ( )

Όπως μπορείτε να δείτε, μια bitmask δημιουργήθηκε όπως και ο πίνακας. Μόλις δημιουργηθεί, μπορεί να εμφανιστεί ως μεταβλητή στην οθόνη. Να θυμάστε ότι μπορείτε να αποθηκεύσετε μόνο 7 χαρακτήρες στη μνήμη. Καταρχήν, αυτό είναι αρκετό. Για παράδειγμα, εάν πρέπει να εμφανίσετε ένα σύμβολο βαθμού.

Προβλήματα στα οποία η οθόνη ενδέχεται να μην λειτουργεί

Υπάρχουν φορές που η οθόνη δεν λειτουργεί. Για παράδειγμα, ενεργοποιείται, αλλά δεν εμφανίζει χαρακτήρες. Ή δεν ανάβει καθόλου. Πρώτα, ελέγξτε αν έχετε συνδέσει σωστά τις ακίδες. Εάν συνδέατε την lcd 1202 στο Arduino χωρίς I2C, τότε είναι πολύ εύκολο να μπερδευτείτε στα καλώδια, κάτι που μπορεί να προκαλέσει λανθασμένη λειτουργίααπεικόνιση. Θα πρέπει επίσης να βεβαιωθείτε ότι η αντίθεση της οθόνης είναι αυξημένη, καθώς με την ελάχιστη αντίθεση δεν φαίνεται καν αν η LCD 1602 είναι ενεργοποιημένη ή όχι. Εάν αυτό δεν βοηθήσει, τότε ίσως το πρόβλημα να βρίσκεται στη συγκόλληση των επαφών, αυτό συμβαίνει όταν χρησιμοποιείτε μια μονάδα I2C. Επίσης Κοινή αιτία, στο οποίο η οθόνη ενδέχεται να μην λειτουργεί είναι λανθασμένη εγκατάστασηΔιευθύνσεις I2C. Το γεγονός είναι ότι υπάρχουν πολλοί κατασκευαστές και μπορούν να προμηθεύουν διαφορετική διεύθυνση, πρέπει να το διορθώσετε εδώ:

LiquidCrystal_I2C LCD (0x27,16,2);

Σε παρένθεση μπορείτε να δείτε δύο τιμές, 0x27 και 16,2 (16,2 είναι το μέγεθος οθόνης και 0x27 είναι η διεύθυνση I2C). Αντί για αυτές τις τιμές, μπορείτε να δοκιμάσετε να ορίσετε 0x37 ή 0x3F. Λοιπόν, ένας άλλος λόγος είναι απλώς μια ελαττωματική LCD 1602. Λαμβάνοντας υπόψη ότι σχεδόν τα πάντα για το Arduino κατασκευάζονται στην Κίνα, δεν μπορείτε να είστε 100% σίγουροι ότι το προϊόν που αγοράσατε δεν είναι ελαττωματικό.

Πλεονεκτήματα και μειονεκτήματα της LCD 1602

Ας δούμε τα πλεονεκτήματα και τα μειονεκτήματα της οθόνης LCD 1602.

  • Τιμή. Αυτή η ενότητα μπορεί να αγοραστεί στο προσιτη τιμη V Κινεζικά καταστήματα. Η τιμή είναι 200-300 ρούβλια. Μερικές φορές πωλείται ακόμη και μαζί με μια μονάδα I2C.
  • Εύκολη σύνδεση. Μάλλον κανείς δεν συνδέει LCD 1602 χωρίς I2C αυτές τις μέρες. Και με αυτήν την ενότητα, η σύνδεση διαρκεί μόνο 4 επαφές, δεν θα υπάρχουν "ιστοί" καλωδίων.
  • Προγραμματισμός. Χάρη στις έτοιμες βιβλιοθήκες, η εργασία με αυτήν την ενότητα είναι εύκολη. Και αν χρειαστεί να προσθέσετε το δικό σας σύμβολο, χρειάζονται μόνο μερικά λεπτά.
  • Κατά τη χρήση του από χιλιάδες ραδιοερασιτέχνες, δεν έχουν εντοπιστεί σημαντικά μειονεκτήματα, μόνο υπάρχουν περιπτώσεις ελαττωματικών αγορών, αφού χρησιμοποιούνται κυρίως κινέζικες εκδόσεις οθονών.

Αυτό το άρθρο εξέτασε τη σύνδεση του 1602 με το Arduino και παρείχε επίσης παραδείγματα προγραμμάτων για εργασία με αυτήν την οθόνη. Είναι πραγματικά ένα από τα καλύτερα στην κατηγορία του, δεν είναι τυχαίο που χιλιάδες ραδιοερασιτέχνες το επιλέγουν για τα έργα τους!

Σε αυτό το μάθημα θα μιλήσουμε για δείκτες υγρών κρυστάλλων που συνθέτουν χαρακτήρες, συνδέοντάς τους με την πλακέτα Arduino και ελέγχοντας τους δείκτες χρησιμοποιώντας τις βιβλιοθήκες LiquidCrystal και LiquidCrystalRus.

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

  • Είναι πρακτικά δύσκολο να συνδέσετε περισσότερα από 8 bit σε έναν μικροελεγκτή Ενδείξεις LED. Απαιτείται μεγάλος αριθμόςέξοδοι, σημαντικά ρεύματα ένδειξης, σύνθετα πλήκτρα, χαμηλή συχνότητααναγέννηση κ.λπ.
  • Είναι αδύνατο να εμφανιστούν συμβολικές πληροφορίες σε δείκτες επτά τμημάτων.

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

  • βολική διεπαφή για σύνδεση με μικροελεγκτές.
  • χαμηλή κατανάλωση ενέργειας;
  • χαμηλή τάση τροφοδοσίας?
  • αντοχή.

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

Γενικές πληροφορίες.

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

Οι πληροφορίες εμφανίζονται σε μια μήτρα υγρών κρυστάλλων με Οπίσθιος φωτισμός LED. Ο οπίσθιος φωτισμός μπορεί να είναι ο μεγαλύτερος διαφορετικά χρώματα, που ζωντανεύει σημαντικά τις μονόχρωμες πληροφορίες κειμένου.

Για τον έλεγχο της μήτρας υγρών κρυστάλλων και την οργάνωση της διεπαφής ενδείξεων, χρησιμοποιείται ο ενσωματωμένος ελεγκτής HD44780 ή τα πλήρη ανάλογά του. Αυτός ο ελεγκτής καθορίζει τα σήματα της διεπαφής ενδείξεων και τις εντολές ελέγχου.

Το HD44780 έχει γίνει το de facto πρότυπο για οθόνες υγρών κρυστάλλων (LCD). Τεχνική τεκμηρίωση για τον ελεγκτή HD44780 in Μορφή PDFΜπορείτε να το δείτε σε αυτόν τον σύνδεσμο -. Ίσως σε κάποιον αρέσει η τεκμηρίωση ενός από τα ανάλογα αυτού του ελεγκτή - SPLC780D. Σύνδεσμος σε μορφή PDF - .

Ενδείξεις LCD χαρακτήρων από την Winstar.

Γνωρίζω τις ακόλουθες επιλογές για ενδείξεις LCD από αυτήν την εταιρεία.

Τύπος ένδειξης Μορφή εμφάνισης, χαρακτήρες x γραμμές Διαστάσεις, mm Διαστάσεις ορατού εμβαδού, mm Σύνδεσμος προς τεκμηρίωση, μορφή PDF
WH0802A1 8 x 2 58 x 32 38 x 16
WH1202A 12 x 2 55,7 x 32 46 x 14,5
WH1601A 16 x 1 80 x 36 66 x 16
WH1601B 16 x 1 85 x 28 66 x 16
WH1601L 16 x 1 122 x 33 99 x 13
WH1602A 16 x 2 84 x 44 66 x 16
WH1602B 16 x 2 80 x 36 66 x 16
WH1602C 16 x 2 80 x 36 66 x 16
WH1602D 16 x 2 85 x 30 66 x 16
WH1602J 16 x 2 80 x 36 66 x 16
WH1602L1 16 x 2 122 x 44 99 x 24
WH1602M 16 x 2 85 x 32,6 66 x 16
WH1602O 16 x 2 85 x 25,2 66 x 16
WH1602P 16 x 2 85 x 25,2 66 x 16
WH1602S 16 x 2 59 x 29,3 52 x 15
WH1602T 16 x 2 65,4 x 28,2 54,8 x 19
WH1602W 16 x 2 80 x 36 66 x 16
WH1602V2 16 x 2 66,7 x 23,3 61 x 15,9
WH1604A 16 x 4 87 x 60 62 x 26
WH1604B 16 x 4 70,6 x 60 60 x 32,6
WH2002A 20 x 2 116 x 37 85 x 18,6
WH2002D 20 x 2 89 x 21,5 75 x 15
WH2002L 20 x 2 180 x 40 149 x 23
WH2002M 20 x 2 146 x 43 123 x 23
WH2004A 20 x 4 98 x 60 77 x 25,2
WH2004B 20 x 4 98 x 60 77 x 25,2
WH2004D 20 x 4 77 x 47 60 x 22
WH2004G 20 x 4 87 x 58 74,4 x 24,8
WH2004H 20 x 4 87 x 58 74,4 x 24,8
WH2004L 20 x 4 146 x 62,5 123,5 x 43
WH2402A 24 x 2 118 x 36 94,5 x 16
WH4002A 40 x 2 182 x 33,5 154,4 x 16,5
WH4004A 40 x 4 190 x 54 147 x 29,5

Σύνδεση ένδειξης LCD σε μικροελεγκτή.

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

Συνήθως, οι ενδείξεις LCD έχουν 16 ακίδες.

Αριθμός καρφίτσας Σήμα I - είσοδος O - έξοδος Σκοπός του σήματος
1 Vss - Έδαφος (κοινό)
2 Vdd - Τροφοδοτικό +5V
3 Vo - Έλεγχος αντίθεσης οθόνης. Είσοδος για τη σύνδεση του μεσαίου ακροδέκτη του διαιρέτη τάσης + 5 V. Μπορεί να χρησιμοποιηθεί περικοπή αντίστασηςαντίσταση 10-20 kOhm.
4 R.S. Εγώ Επιλογή καταχωρητή: 0 – καταχωρητής εντολών. 1 – μητρώο δεδομένων. Χαμηλό επίπεδοσήμα σημαίνει ότι έχει δημιουργηθεί μια εντολή στο δίαυλο δεδομένων, υψηλό επίπεδο– δεδομένα στο λεωφορείο.
5 R/W Εγώ Κατεύθυνση μεταφοράς δεδομένων:

0 – ρεκόρ.

1 – ανάγνωση.

Σε πολλές εφαρμογές η λειτουργία ανάγνωσης δεν χρησιμοποιείται, επομένως το σήμα συνδέεται συχνά με τη γείωση.

6 μι Εγώ Στροβοσκοπική λειτουργία λεωφορείου (στην αρνητική άκρη).
7 DB0 I/O Bit χαμηλής τάξης λειτουργίας οκτώ bit. Δεν χρησιμοποιείται με διασύνδεση τεσσάρων bit.
8 DB1 I/O
9 DB2 I/O
10 DB3 I/O
11 DB4 I/O Τα πιο σημαντικά bit της λειτουργίας οκτώ bit ή τα bit δεδομένων της διεπαφής τεσσάρων bit.
12 DB5 I/O
13 DB6 I/O
14 DB7 I/O
15 ΕΝΑ - Άνοδος ισχύος οπίσθιου φωτισμού (+).
16 κ - Κάθοδος ισχύος οπίσθιου φωτισμού (-). Το ρεύμα πρέπει να είναι περιορισμένο.

Ο αριθμός pin (πρώτη στήλη) είναι για την πιο κοινή επιλογή. Είναι καλύτερο να ελέγξετε κατεβάζοντας την τεκμηρίωση για τον τύπο του δείκτη σας από τον πίνακα της προηγούμενης ενότητας.

Οι οθόνες LCD χαρακτήρων υποστηρίζουν δύο επιλογές σύνδεσης με τον μικροελεγκτή:

  • Χρήση διαύλου δεδομένων 8-bit. Όλα τα σήματα διαύλου DB0-DB7 είναι συνδεδεμένα. Σε έναν κύκλο ανταλλαγής, μεταδίδεται ένα byte πληροφοριών.
  • Χρήση διαύλου δεδομένων 4 bit. Μόνο τα 4 πιο σημαντικά bit DB4-DB7 είναι συνδεδεμένα. Οι πληροφορίες μεταδίδονται τέσσερα bit ανά κύκλο ρολογιού διαύλου.

Η πρώτη επιλογή παρέχει μεταφορά δεδομένων στην οθόνη από μεγαλύτερη ταχύτητα. Το δεύτερο απαιτεί 4 λιγότερες ακίδες για τη σύνδεση της ένδειξης. Αναμφίβολα, είναι πιο σημαντικό να μειώσετε τον αριθμό των ακροδεκτών σύνδεσης παρά να αυξήσετε την ταχύτητα ανταλλαγής. Επιπλέον, οι ενδείξεις LCD είναι αρκετά αργές συσκευέςμε χρόνο κύκλου αναγέννησης 10-20 ms.

Σύνδεση μιας οθόνης LCD χαρακτήρων στην πλακέτα Arduino.

Θα συνδέσω την ένδειξη WH2004A (4 γραμμές των 20 χαρακτήρων η καθεμία) σε λειτουργία ανταλλαγής τεσσάρων bit σε Πλακέτα Arduino UNO R3. Μπορείτε να δείτε την τεκμηρίωση για την οθόνη LCD WH2004 σε αυτόν τον σύνδεσμο.

Το διάγραμμα μοιάζει με αυτό.

Οι αντιστάσεις R2 και R3 καθορίζουν την αντίθεση του δείκτη. Μπορείτε να συνδέσετε μια αντίσταση περικοπής και να ορίσετε την απαιτούμενη ευκρίνεια εικόνας. Συχνά χρησιμοποιώ δείκτες WH2004 και στα κυκλώματά μου επιλέγω αυτές τις τιμές αντίστασης.

Συνέδεσα τις ενδεικτικές λυχνίες οπίσθιου φωτισμού σε μια πηγή ισχύος 5 V μέσω της αντίστασης R1 (30 Ohm). Με αυτό έβαλα το ρεύμα στα 25 mA περίπου. Αχνό, αλλά λαμπερό. Μπορείτε να δείτε καλά στο σκοτάδι. Αν και οι ενδείξεις WH2004 επιτρέπουν ρεύμα οπίσθιου φωτισμού έως και 580 mA.

Βιβλιοθήκη για τον έλεγχο των ενδείξεων LCD στο σύστημα Arduino LiquidCrystal.

Υπάρχει μια τυπική βιβλιοθήκη για τον έλεγχο των ενδείξεων LCD που βασίζεται στον ελεγκτή HD44780. Θα περιγράψω λεπτομερώς τις μεθόδους της.

LiquidCrystal (…)

Κατασκευαστής τάξης. Μπορεί να έχει διαφορετικό αριθμόεπιχειρήματα.

  • LiquidCristal(rs, en, d4, d5, d6, d7) – διασύνδεση τεσσάρων bit, το σήμα RW δεν χρησιμοποιείται (συνδεδεμένο στη γείωση).
  • LiquidCristal(rs,rw, en, d4, d5, d6, d7) – χρησιμοποιείται διασύνδεση τεσσάρων bit, σήμα RW.
  • LiquidCristal(rs, en, d0, d1, d2, d3, d4, d5, d6, d7) – Διασύνδεση οκτώ bit, το σήμα RW δεν χρησιμοποιείται (συνδεδεμένο στη γείωση).
  • LiquidCristal(rs, rw, en, d0, d1, d2, d3, d4, d5, d6, d7) – χρησιμοποιείται διεπαφή οκτώ bit, σήμα RW.

Επιχειρήματα:

  • rs – αριθμός pin σήματος RS.
  • rw – αριθμός εξόδου σήματος RW.
  • en – αριθμός εξόδου σήματος E;
  • d0, d1, d2, d3, d4, d5, d6, d7 – αριθμοί ακροδεκτών διαύλου δεδομένων.

Disp LiquidCrystal (6, 7, 2, 3, 4, 5);

κενή αρχή (στήλες, σειρές)

Αρχικοποιεί τη διεπαφή ενδείξεων. Ορίζει τη διάσταση του δείκτη. Η μέθοδος πρέπει να κληθεί πρώτα, πριν χρησιμοποιηθούν άλλες συναρτήσεις κλάσης.

Επιχειρήματα:

  • cols – αριθμός χαρακτήρων στη γραμμή.
  • σειρές – αριθμός σειρών.

disp.begin(20, 4); // χρησιμοποιούμε μια οθόνη - 4 γραμμές των 20 χαρακτήρων

void clear()

Καθαρισμός της οθόνης, τοποθέτηση του δρομέα στην επάνω αριστερή γωνία.

disp.clear(); // επαναφορά της οθόνης

void home()

Τοποθετήστε τον κέρσορα στην επάνω αριστερή γωνία.

disp.home(); // στην αρχή της οθόνης

void setCursor (στήλη, σειρά)

Τοποθετεί τον κέρσορα στην καθορισμένη θέση.

  • col – X συντεταγμένη, αρίθμηση από το 0;
  • Σειρά – Συντεταγμένες Y, αρίθμηση από το 0.

setCursor(0,1); // δρομέα στην αρχή της δεύτερης γραμμής

byte εγγραφή (δεδομένα)

Εμφανίζει ένα σύμβολο στην οθόνη. Επιστρέφει τον αριθμό των byte που μεταφέρθηκαν.

Το παρακάτω σκίτσο εμφανίζει δεδομένα από σειριακή θύρα. Τα δεδομένα μπορούν να μεταδοθούν από την οθόνη Θύρα Arduino IDE.

// Έξοδος δεδομένων σειριακής θύρας σε ένδειξη LCD
#περιλαμβάνω


char δεδομένα?

void setup()
{
Serial.begin(9600); // αρχικοποιήστε τη σειριακή θύρα
disp.begin(20, 4); //
}

void loop()
{
if (Serial.available()) ( // αν υπάρχουν στοιχεία
data= Serial.read(); // διαβάστε το σύμβολο
if((data != 0xd) && (data != 0xa)) ( // feed line
disp.write(data); // εμφανίστε το σύμβολο στην οθόνη
}
}
}

Έχω μια μεγάλη ένδειξη - 4 γραμμές των 20 χαρακτήρων. Περιέχει δύο ελεγκτές HD44780. Επομένως, διαδοχικά μεταδιδόμενους χαρακτήρεςσυμπληρώστε πρώτα την πρώτη γραμμή, μετά την τρίτη, μετά τη δεύτερη και την τέταρτη. Εκείνοι. μέσω της γραμμής. Αυτή η ιδιότητα πρέπει να ληφθεί υπόψη ορισμένοι τύποιδείκτες. Η τεκμηρίωση για κάθε ένδειξη LCD υποδεικνύει την ακολουθία διευθύνσεων χαρακτήρων.

byte εκτύπωση (δεδομένα)

Εμφανίζει κείμενο στην οθόνη. Επιστρέφει τον αριθμό των byte που μεταφέρθηκαν.

Επιχειρήματα:

δεδομένα – δεδομένα που θα εμφανίζονται στην οθόνη. Μπορεί να έχει τύπους char, byte, int, long, string.

Μπορεί να υπάρχει ένα δεύτερο, προαιρετικό όρισμα.

εκτύπωση byte (δεδομένα, ΒΑΣΗ)

  • ΒΑΣΗ – καθορίζει το σύστημα αριθμών:
  • BIN – δυαδικό;
  • DEC – δεκαδικό;
  • OCT – οκταδικό:
  • HEX – δεκαεξαδικό.

Ένα παράδειγμα προγράμματος που εκτυπώνει μια συμβολοσειρά κειμένου στην οθόνη.

// εμφάνιση μιας γραμμής κειμένου στην ένδειξη LCD
#περιλαμβάνω

Disp LiquidCrystal (6, 7, 2, 3, 4, 5); // δημιουργία αντικειμένου

void setup()
{
disp.begin(20, 4); // αρχικοποιήστε την οθόνη 4 γραμμές των 20 χαρακτήρων
disp.print("Test string");
}

void loop()
{ }

void cursor()

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

disp.cursor(); // επιτρέπεται η εμφάνιση του δρομέα

void noCursor()

Απενεργοποιεί την εμφάνιση του δρομέα.

disp.noCursor(); // απενεργοποιήστε την εμφάνιση του δρομέα

void blink()

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

disp.blink(); // να επιτρέπεται ο κέρσορας που αναβοσβήνει

void noBlink()

Απενεργοποιεί τη λειτουργία του δρομέα που αναβοσβήνει.

disp.noBlink(); // απενεργοποιήστε τον κέρσορα που αναβοσβήνει

void display()

Ενεργοποιείται η οθόνη αφού έχει απενεργοποιηθεί από το noDisplay(). Στην οθόνη θα εμφανιστούν οι πληροφορίες που υπήρχαν πριν από τον τερματισμό.

display.display(); // ενεργοποιήστε την οθόνη

void noDisplay()

Απενεργοποιεί την οθόνη. Οι πληροφορίες αποθηκεύονται στη μνήμη και εμφανίζονται όταν η οθόνη είναι ενεργοποιημένη.

disp.noDisplay(); // απενεργοποιήστε την οθόνη

void scrollDisplayLeft()

Κυλάει τα περιεχόμενα της οθόνης έναν χαρακτήρα προς τα αριστερά.

διαθ. scrollDisplayLeft(); // μετακινήστε τα πάντα προς τα αριστερά

void scrollDisplayRight()

Κυλάει τα περιεχόμενα της οθόνης κατά έναν χαρακτήρα προς τα δεξιά.

διαθ. scrollDisplayRight(); // μετακινήστε τα πάντα προς τα δεξιά

void autoscroll()

Ενεργοποιήστε τη λειτουργία αυτόματης κύλισης κειμένου. Καθώς εμφανίζεται κάθε χαρακτήρας, όλο το κείμενο στην οθόνη θα μετατοπιστεί κατά έναν χαρακτήρα. Οι συναρτήσεις leftToRight() και rightToLeft() καθορίζουν ποια κατεύθυνση μετατοπίζεται η πληροφορία.

διαθ. αυτόματη κύλιση())(; // ενεργοποίηση αυτόματης κύλισης

void noAutoscroll()

Απενεργοποιήστε την αυτόματη κύλιση κειμένου.

διαθ. noAutoscroll())(; // απενεργοποιήστε την αυτόματη κύλιση

void leftToRight()

Ρυθμίζει τη δοκιμαστική λειτουργία εξόδου από αριστερά προς τα δεξιά. Τα νέα σύμβολα θα εμφανιστούν στα δεξιά των προηγούμενων.

από αριστερά προς τα δεξιά(); // λειτουργία από αριστερά προς τα δεξιά

void rightToLeft()

Ρυθμίζει τη δοκιμαστική λειτουργία εξόδου από τα δεξιά προς τα αριστερά. Τα νέα σύμβολα θα εμφανιστούν στα αριστερά από τα προηγούμενα.

δεξιά προς τα αριστερά(); // λειτουργία από δεξιά προς τα αριστερά

void createChar(αριθμός, δεδομένα)

Μέθοδος δημιουργίας προσαρμοσμένου συμβόλου. Το χειριστήριο επιτρέπει τη δημιουργία έως και 8 χαρακτήρων (0...7) 5x8 pixel. Η εικόνα συμβόλου καθορίζεται από έναν πίνακα 8 byte. Τα λιγότερο σημαντικά 5 bit κάθε byte καθορίζουν την κατάσταση των pixel στη σειρά.

Για να εξάγετε έναν προσαρμοσμένο χαρακτήρα, μπορείτε να χρησιμοποιήσετε τη συνάρτηση write() με τον αριθμό χαρακτήρα.

// δημιουργώντας ένα προσαρμοσμένο σύμβολο
#περιλαμβάνω

Disp LiquidCrystal (6, 7, 2, 3, 4, 5); // δημιουργία αντικειμένου

χαμόγελο byte = (
B00000000,
B00010001,
B00000000,
B00000000,
B00010001,
B00001110,
B00000000,
B00000000
};

void setup()
{
disp.createChar(0, χαμόγελο); // Δημιουργία συμβόλου
disp.begin(20, 4); // αρχικοποιήστε την οθόνη 4 γραμμές των 20 χαρακτήρων
disp.print("Smile");
disp.write(byte(0)); // εκτυπώστε το σύμβολο
}

void loop()
{ }

Ακολουθεί ένα παράδειγμα προγράμματος που εμφανίζει το ρωσικό αλφάβητο.

// Έξοδος ρωσικού αλφάβητου
#περιλαμβάνω

LiquidCrystalRus disp(6, 7, 2, 3, 4, 5); // δημιουργία αντικειμένου

void setup()
{
disp.begin(20, 4); // αρχικοποιήστε την οθόνη 4 γραμμές των 20 χαρακτήρων
disp.print("abvgdeezhziyklmnoprst");
disp.print("ABVGDEYOZHIYKLMNOPRST");
disp.print("γκχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχχ");

Κατηγορία: . Μπορείτε να το προσθέσετε σελιδοδείκτη.

Οθόνες LCD 1602 μεγεθών, που δημιουργήθηκαν με βάση τον ελεγκτή HD44780, εξακολουθούν να παραμένουν σήμερα από τις πιο προσιτές, απλές και απαιτητικές για την ανάπτυξη οποιουδήποτε ηλεκτρονικές συσκευές. Δεν προκαλεί έκπληξη το γεγονός ότι μπορούν να φανούν τόσο σε απλές μονάδες συναρμολογημένες κυριολεκτικά στο γόνατο όσο και σε πιο σοβαρές βιομηχανικές, για παράδειγμα, μηχανές καφέ. Με αυτήν την οθόνη συναρμολογούνται οι πιο δημοφιλείς μονάδες και ασπίδες που σχετίζονται με το Arduino, για παράδειγμα η μονάδα LCD I2C και η ασπίδα πληκτρολογίου LCD.

Αυτό το άρθρο εξηγεί λεπτομερώς με εικόνες πώς να συνδέσετε μια οθόνη LCD στο Arduino και να εμφανίσετε πληροφορίες.

1602 οθόνες έχουν δύο διαφορετικές εκδοχές:

Κίτρινος οπίσθιος φωτισμός με μαύρα γράμματα
- ή (αυτό συμβαίνει πολύ πιο συχνά) μπλε οπίσθιο φωτισμό με λευκούς.

Το μέγεθος των οθονών στον ελεγκτή HD44780 ποικίλλει πολύ, αλλά ελέγχονται με τον ίδιο τρόπο. Οι πιο συνηθισμένες διαστάσεις είναι 16 επί 02 (δηλαδή 16 χαρακτήρες σε δύο γραμμές) ή 20 επί 04. Οι ίδιοι οι χαρακτήρες έχουν ανάλυση 5 επί 8 pixel.

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

Η οθόνη διαθέτει υποδοχή 16 PIN για σύνδεση. Τα συμπεράσματα έχουν σημάδια στο πίσω μέρος του πίνακα, έχει ως εξής:

1 (VSS) – αρνητικό τροφοδοτικό για τον ελεγκτή.
2 (VDD) – θετική παροχή ρεύματος για τον ελεγκτή.
3 (VO) – ρυθμίσεις ελέγχου αντίθεσης.
4 (RS) – επιλογή εγγραφής.
5 (R/W) – ανάγνωση και γραφή, ειδικότερα, γραφή όταν είναι συνδεδεμένο στη γείωση.
6 (E) – ενεργοποίηση (ενεργοποίηση).
7–10 (DB0-DB3) – bit χαμηλής τάξης από τη διεπαφή οκτώ bit.
11–14 (DB4-DB7) – τα πιο σημαντικά bits από τη διεπαφή
15 (Α) - θετική άνοδοςγια να ενεργοποιήσετε τον οπίσθιο φωτισμό.
16 (K) – αρνητικόςγια να ενεργοποιήσετε τον οπίσθιο φωτισμό.

Βήμα 2: Συνδέστε την οθόνη LCD

Πριν συνδέσετε την οθόνη και μεταφέρετε πληροφορίες σε αυτήν, αξίζει να ελέγξετε τη λειτουργικότητά της. Πρώτα, εφαρμόστε τάση στον ελεγκτή VSS και VDD, ενεργοποιήστε τον οπίσθιο φωτισμό (A, K) και μετά προσαρμόστε την αντίθεση. Για τέτοιες ρυθμίσεις, ένα ποτενσιόμετρο 10 kOhm δεν είναι σημαντικό. Τα +5V και το GND παρέχονται στα εξωτερικά πόδια και το πόδι στο κέντρο συνδέεται με τον ακροδέκτη VO.

Όταν τροφοδοτείται το κύκλωμα, πρέπει να επιτύχετε την απαραίτητη αντίθεση, εάν ρυθμιστεί εσφαλμένα, τότε η εικόνα στην οθόνη δεν θα είναι ορατή. Για να ρυθμίσετε την αντίθεση, πρέπει να "παίξετε" με το ποτενσιόμετρο. Όταν το κύκλωμα συναρμολογηθεί σωστά και η αντίθεση ρυθμιστεί σωστά, η πάνω σειράη οθόνη πρέπει να γεμίσει με ορθογώνια.

Για να λειτουργήσει η οθόνη, το ενσωματωμένο Arduino περιβάλλον IDEειδική βιβλιοθήκη LiquidCrystal.h, για την οποία θα γράψω παρακάτω. Μπορεί να λειτουργήσει σε λειτουργία 8-bit και 4-bit. Στην πρώτη επιλογή, χρησιμοποιούνται μόνο τα λιγότερο σημαντικά και πιο σημαντικά bit (BB0-DB7), στη δεύτερη - μόνο τα λιγότερο σημαντικά (BB4-DB7).

Αλλά χρησιμοποιώντας τη λειτουργία 8-bit σε αυτήν την οθόνη - λάθος απόφαση, δεν υπάρχει σχεδόν κανένα πλεονέκτημα ταχύτητας, αφού ο ρυθμός ενημέρωσης είναι πάντα μικρότερος από 10 φορές ανά δευτερόλεπτο. Για να εμφανίσετε κείμενο, πρέπει να συνδέσετε τις ακίδες DB7, DB6, DB5, DB4, E και RS στις ακίδες του ελεγκτή. Μπορούν να συνδεθούν με οποιεσδήποτε ακίδες Arduino, το κύριο πράγμα είναι να ορίσετε τη σωστή σειρά στον κώδικα.

Εάν το απαιτούμενο σύμβολο δεν βρίσκεται ακόμη στη μνήμη του ελεγκτή, μπορείτε να το ορίσετε χειροκίνητα (έως επτά σύμβολα συνολικά). Το κελί στις οθόνες που εξετάζουμε έχει επέκταση πέντε επί οκτώ pixel. Ο στόχος της δημιουργίας ενός συμβόλου είναι να γράψετε μια μάσκα bit και να τοποθετήσετε ένα σε μέρη όπου πρέπει να ανάβουν οι τελείες και μηδενικά όπου δεν πρέπει.

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

Βήμα 3: Λύση

Ας εξερευνήσουμε μια επιλογή για να το ξεπεράσουμε και να τα βγάλουμε πέρα ​​με μόνο δύο. Χρειαζόμαστε μια πρόσθετη μονάδα μετατροπέα για LCD σε IIC/I2C. Πώς συγκολλάται στην οθόνη και συνδέεται με το Arduino μπορείτε να δείτε στις παρακάτω εικόνες.

Αλλά αυτή η επιλογή σύνδεσης λειτουργεί μόνο με μια ειδική βιβλιοθήκη, τη LiquidCrystal_I2C1602V1, η οποία, ωστόσο, είναι εύκολο να βρεθεί στο Διαδίκτυο και να εγκατασταθεί, μετά την οποία μπορείτε να τη χρησιμοποιήσετε χωρίς προβλήματα.

Βήμα 4: Βιβλιοθήκη LiquidCrystal.h

Μπορείτε να κατεβάσετε τη βιβλιοθήκη LiquidCrystal.h από επίσημος πόρος- . Μπορείτε επίσης να κατεβάσετε από τους παρακάτω συνδέσμους:

Σκίτσο

Αφού κατεβάσετε το αρχείο, αντικαταστήστε το φάκελο LiquidCrystal στο φάκελο βιβλιοθήκες του καταλόγου εγκατάστασης του Arduino.

Μπορείτε να δείτε ένα δείγμα σκίτσου Αρχείο -> Παραδείγματα -> LiquidCrystal -> HelloWorld_SPI(Αρχείο -> Παραδείγματα -> LiquidCrystal -> HelloWorld_SPI).

Αυτό ολοκληρώνει το επόμενο μάθημά μας. Σας ευχόμαστε ποιοτικά έργα!

Υπάρχει ένας μεγάλος αριθμός ποικιλιών κειμένου, ή όπως ονομάζονται επίσης οθόνες σύνθεσης χαρακτήρων, υγρών κρυστάλλων. Οι πιο συνηθισμένες οθόνες βασίζονται σε τσιπ HD44780 της Hitachi, KS0066 της Samsung ή συμβατές με αυτές. Για να δουλέψετε με τέτοιες οθόνες, υπάρχει μια τυπική βιβλιοθήκη Arduino Liquid Crystal.

Τέτοιες οθόνες περιλαμβάνουν, ειδικότερα, οθόνες κειμένου από το Melt. Αυτό το άρθρο περιγράφει λεπτομερώς το διάγραμμα σύνδεσης για αυτήν την οθόνη, αλλά είναι επίσης κατάλληλο για πολλές άλλες οθόνες κειμένου.

Το άρθρο περιγράφει γενικές αρχές. Μπορείς να πας Λεπτομερής περιγραφήη οθόνη σας:

Απαιτούμενα εξαρτήματα

Σύνδεση

Συνδέστε την οθόνη στην πλακέτα ψωμιού και συνδέστε την τροφοδοσία +5 V και τη γείωση από το Arduino στις ράγες ισχύος της πλακέτας.

Θα χρειαστείτε ρεύμα και προσγείωση περισσότερες από μία φορές, επομένως είναι πιο βολικό να τα πετάξετε στις ράγες.

Ενεργοποιήστε τον οπίσθιο φωτισμό

Ο οπίσθιος φωτισμός της οθόνης είναι ένα ξεχωριστό κύκλωμα, που δεν συνδέεται με το υπόλοιπο. Μπορείτε να το ενεργοποιήσετε εφαρμόζοντας +5 V στον 15ο ακροδέκτη της οθόνης και συνδέοντας τον 16ο ακροδέκτη στη γείωση. Συνδέοντας αυτές τις δύο ακίδες στις αντίστοιχες ράγες, μπορείτε να ενεργοποιήσετε το Arduino και να δείτε την οθόνη να ανάβει.

Λάβετε υπόψη ότι σε ορισμένα μοντέλα η αρίθμηση των επαφών δεν είναι μόνο από τα δεξιά προς τα αριστερά από την πρώτη έως τη δέκατη έκτη, αλλά κάπως πιο πονηρή. Έτσι, για παράδειγμα, σε μια οθόνη 16×2 από το Melt, η πρώτη επαφή βρίσκεται φυσικά στην 14η θέση, η δεύτερη στη 13η και ούτω καθεξής από δεξιά προς τα αριστερά μέχρι τη 14η στην πρώτη θέση και η 15η και η 15η και Το 16ο βρίσκεται στα δεξιά. Η αρίθμηση κοντά στις επαφές της οθόνης θα σας βοηθήσει να αποφύγετε τη σύγχυση.

Ενεργοποίηση της ισχύος του συνθεσάιζερ χαρακτήρων

    Το πρώτο είναι η γη. Συνδέστε το στη ράγα εδάφους.

    Το δεύτερο είναι η διατροφή. Συνδέστε το στη ράγα +5V.

    Το τρίτο είναι η αντίθεση. Για μέγιστη αντίθεση, συνδέστε το στη ράγα εδάφους. Μπορείτε να εφαρμόσετε μια αυθαίρετη τάση από 0 έως 5 V σε αυτήν την επαφή, όσο υψηλότερη είναι, τόσο πιο σκοτεινή θα είναι η εικόνα, αλλά ταυτόχρονα θα μειωθεί η κατανάλωση ενέργειας. Για να μπορέσετε να ρυθμίσετε ομαλά την αντίθεση, μπορείτε να εφαρμόσετε ένα σήμα εξόδου ποτενσιόμετρου σε αυτήν την επαφή.

Μετά τη σύνδεση, αν ενεργοποιήσετε το Arduino, μπορείτε να δείτε ορθογώνιους οικείους χώρους. Ανάλογα με τον συνδυασμό των χρωμάτων του κειμένου και του οπίσθιου φωτισμού, μπορεί να είναι είτε φωτεινά και ευδιάκριτα είτε ελάχιστα αισθητά. Αυτό είναι φυσιολογικό: σε κάθε περίπτωση, το κείμενο θα φαίνεται υπέροχο.

Σύνδεση διαύλου δεδομένων

Για την επικοινωνία μεταξύ του Arduino και της οθόνης, πρέπει να χρησιμοποιηθούν πολλές γραμμές επικοινωνίας:

    2 ή 3 για την εμφάνιση εντολών

    4 ή 8 για μετάδοση δεδομένων (κωδικοί χαρακτήρων και εντολές)

Έτσι, από 6 έως 11 επαφές και από τις δύο συσκευές θα είναι κατειλημμένες. Αν δεν χρειάζεσαι ανάγνωσηαπό την οθόνη, που ταιριάζει στα περισσότερα σενάρια χρήσης, οι εντολές θα απαιτούν 2 γραμμές.

Εάν η ταχύτητα ενημέρωσης δεδομένων δεν είναι επίσης πρόβλημα, αρκούν 4 γραμμές για τη μεταφορά δεδομένων.

Έτσι, για να συνδέσετε την οθόνη, αρκεί να χρησιμοποιήσετε 6 γραμμές, 6 ακίδες στο Arduino. Ας εξετάσουμε αυτό το συγκεκριμένο σενάριο.

Όπως αναφέρθηκε, δεν έχουμε τίποτα να διαβάσουμε από την οθόνη, θα γράψουμε μόνο σε αυτήν. Επομένως, συνδέουμε την 5η ακίδα της οθόνης, η οποία είναι υπεύθυνη για την επιλογή ανάγνωσης/εγγραφής, στη ράγα εδάφους. Αυτό σημαίνει «να γράφω πάντα».

Στη συνέχεια, συνδέουμε το Arduino και την οθόνη με τις 6 γραμμές επικοινωνίας μας. Δεν έχει σημασία ποιες επαφές θα επιλεγούν στο Arduino: θα τις καθορίσουμε στο πρόγραμμα, αλλά για το παράδειγμα επιλέξαμε την ακόλουθη διαμόρφωση:

    Η ακίδα οθόνης 6 είναι η ακίδα Arduino 5. Αυτή είναι η γραμμή άδειας πρόσβασης δεδομένων. Γνωστό ως E ή Enable. Όταν αυτή η γραμμή γίνει μία, η οθόνη εκτελεί μια εντολή ή εξάγει έναν χαρακτήρα από τη γραμμή δεδομένων.

    Η 11η, 12η, 13η, 14η ακίδα οθόνης είναι η 10η, 11η, 12η, 13η καρφίτσα Arduino αντίστοιχα. Αυτές είναι γραμμές δεδομένων. Γνωστό ως DB4, DB5, DB6, DB7.

Η οθόνη είναι συνδεδεμένη και έτοιμη για λήψη δεδομένων. Το μόνο που μένει είναι να γράψουμε ένα πρόγραμμα για το Arduino.

Προγραμματισμός

Για την έξοδο κειμένου από το Arduino, είναι πιο βολικό να χρησιμοποιήσετε την ενσωματωμένη βιβλιοθήκη Liquid Crystal. Για να εμφανίσετε τον χαιρετισμό και το χρονόμετρο, χρησιμοποιήστε τον εξής κώδικα:

Hello.pde #include lcd.begin(16, 2); // εκτυπώστε την πρώτη γραμμή lcd.print("Hello world!"); // τοποθετήστε τον κέρσορα στη στήλη 0, γραμμή 1. Δηλαδή, on // αυτή είναι στην πραγματικότητα η δεύτερη γραμμή, γιατί η αρίθμηση ξεκινά από το μηδέν lcd.setCursor(0, 1); // εκτυπώστε τη δεύτερη γραμμή lcd.print ("foo bar baz" ); ) void loop() ( )

Όλα είναι πολύ απλά και πρέπει να είναι ξεκάθαρα από τα σχόλια.

κυριλλικό

Οι πληροφορίες σε αυτήν την ενότητα ισχύουν ειδικά για οθόνες από το Melt. Οι Κινέζοι και οι Ευρωπαίοι αντίστοιχοι είναι απίθανο να έχουν κυριλλικό στο σύνολο χαρακτήρων τους, ανατρέξτε στην τεκμηρίωση για την οθόνη για να μάθετε περισσότερα σχετικά με αυτό.

Η εκτύπωση ρωσικών γραμμάτων δεν είναι εντελώς ασήμαντη: δεν μπορείτε απλώς να γράψετε lcd.print("Vasya") . Αυτό σχετίζεται με την έννοια των κωδικοποιήσεων. Γνωρίζετε ότι κάθε χαρακτήρας έχει έναν αντίστοιχο κωδικό και κατά τη μεταγλώττιση ενός προγράμματος, εάν μια συμβολοσειρά περιέχει κυριλλικό, θα μετατραπεί σε κωδικούς χρησιμοποιώντας τον utf-8, cp-1251 ή κάποιον άλλο πίνακα, ανάλογα με τις ρυθμίσεις του μεταγλωττιστή. Η οθόνη, με τη σειρά της, αναμένει να δει δεδομένα στη δική της κωδικοποίηση.

Για παράδειγμα, το γράμμα "I" αντιστοιχεί στον κωδικό B1 στο δεκαεξαδικό σύστημα. Για να μεταδώσετε τη συμβολοσειρά "Yandex" στην οθόνη, πρέπει να ενσωματώσετε ρητά τον κωδικό χαρακτήρα στη συμβολοσειρά χρησιμοποιώντας την ακολουθία \x##:

LCD.print(" \xB1 ndex") ;

Μπορείτε να αναμίξετε σε μία γραμμή κανονικούς χαρακτήρεςκαι ρητούς κωδικούς όπως θέλετε. Η μόνη προειδοποίηση είναι ότι αφού ο μεταγλωττιστής δει την ακολουθία \x σε μια γραμμή, διαβάζει όλους τους χαρακτήρες πίσω από αυτήν που μπορεί να είναι ψηφία του δεκαεξαδικού συστήματος, ακόμα κι αν υπάρχουν περισσότεροι από δύο από αυτούς. Εξαιτίας αυτού, δεν μπορείτε απλώς να χρησιμοποιήσετε χαρακτήρες από το εύρος 0-9, α-φ επόμενοπίσω από έναν διψήφιο κωδικό χαρακτήρων: αυτό θα προκαλέσει σφάλμα μεταγλώττισης. Για να ξεπεράσετε αυτό το σημείο, μπορείτε να χρησιμοποιήσετε το γεγονός ότι δύο γραμμές γραμμένες η μία δίπλα στην άλλη είναι κολλημένες μεταξύ τους. Έτσι, αν θέλετε να γράψετε "Yeee":

LCD.print(" \xB1 εεε") ; // σφάλμα lcd.print(" \xB1""εεε" ); // Σωστά

Για παράδειγμα, για να γράψετε "Χαιρετίσματα από την Amperka", χρησιμοποιήθηκε ο κωδικός:

κυριλλικό.pde #include LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() ( lcd.begin(16, 2) ; lcd.print(" \xA8 p\xB8 \xB3 ""μι \xBF") ; lcd.setCursor(0, 1); lcd.print(" o \xBF A\xBC \xBE ""επ \xBA\xB8") ; ) void loop() ( )

Εναλλαγή σελίδων δημιουργίας χαρακτήρων

Η μονάδα οθόνης αποθηκεύει δύο σελίδες δημιουργίας χαρακτήρων στη μνήμη. Εγκατεστημένο από προεπιλογή σελίδα μηδέν. Για να αλλάξετε σελίδα χρησιμοποιήστε τη μέθοδο command(0x101010) και αντίστροφα - command(0x101000).

Η οθόνη δεν μπορεί να εμφανίσει χαρακτήρες από διαφορετικές σελίδες ταυτόχρονα.

Ας δούμε ένα παράδειγμα στο οποίο η ίδια γραμμή θα αλλάξει ανάλογα με την επιλεγμένη σελίδα.

change_page.ino // Συνδέω-συωδεομαι τυπική βιβλιοθήκη LiquidCrystal#περιλαμβάνω // Εκκίνηση του αντικειμένου της οθόνης, μεταφορά του χρησιμοποιημένου // για να συνδέσετε οι ακίδες στο Arduino έχουν τη σειρά:// RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup() ( // ορίστε το μέγεθος (αριθμός στηλών και γραμμών) της οθόνης lcd.begin(16, 2); ) void loop() ( // ορίστε τη σελίδα δημιουργίας χαρακτήρων σε 0 (αυτή είναι η προεπιλογή) lcd.command(0b101000); // εκτυπώστε την πρώτη γραμμή lcd.print(" \x9b \x9c \x9d \x9e \x9f ") ; // αναμονή 1 δευτερόλεπτο καθυστέρηση (1000 ) ; // εγκατάσταση 1 σελίδας δημιουργίας χαρακτήρων lcd.command(0b101010); // αναμονή 1 δευτερόλεπτο καθυστέρηση (1000 ) ; // εκκαθάριση της οθόνης lcd.clear(); )

Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: