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

LCD COG για Arduino Nano: 3 βήματα
LCD COG για Arduino Nano: 3 βήματα

Βίντεο: LCD COG για Arduino Nano: 3 βήματα

Βίντεο: LCD COG για Arduino Nano: 3 βήματα
Βίντεο: Arduino LCD Tutorial ST7920 2024, Ιούλιος
Anonim
LCD COG για Arduino Nano
LCD COG για Arduino Nano

Αυτό το Instructable περιγράφει τον τρόπο χρήσης μιας οθόνης COG LCD με ένα Arduino Nano.

Οι οθόνες COG LCD είναι φθηνές αλλά είναι ελαφρώς δυσκολότερες στη διασύνδεση. (Το COG σημαίνει "Chip On Glass".) Αυτό που χρησιμοποιώ περιέχει ένα τσιπ οδηγού UC1701. Απαιτούνται μόνο 4 ακίδες του Arduino: SPI-ρολόι, δεδομένα SPI, επιλογή τσιπ και εντολή/δεδομένα.

Το UC1701 ελέγχεται από το δίαυλο SPI και λειτουργεί στα 3.3V.

Εδώ περιγράφω πώς να το χρησιμοποιήσω με ένα Arduino Nano. Θα πρέπει επίσης να λειτουργεί με Arduino Mini ή Uno - θα το δοκιμάσω σύντομα.

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

Βήμα 1: Δημιουργία υλικού

Δημιουργία υλικού
Δημιουργία υλικού
Δημιουργία υλικού
Δημιουργία υλικού
Δημιουργία υλικού
Δημιουργία υλικού

Αγοράστε μια οθόνη LCD COG που περιέχει ένα τσιπ UC1701. Θα πρέπει να χρησιμοποιεί το δίαυλο SPI και όχι παράλληλη διεπαφή. Θα έχει περίπου 14 ακίδες που θα φέρουν ετικέτα με ονόματα όπως αυτά που αναφέρονται παρακάτω. (Δεν θέλετε παράλληλη διεπαφή με πολλές περισσότερες καρφίτσες με ετικέτα D0, D1, D2…)

Αυτό που αγόρασα είναι: https://www.ebay.co.uk/itm/132138390168 Or μπορείτε να αναζητήσετε στο eBay το "12864 LCD COG".

Επιλέξτε ένα που έχει αρκετά φαρδιά ουρά με καρφίτσες σε απόσταση 1,27 mm - οι λεπτές καρφίτσες θα συγκολληθούν δύσκολα. Βεβαιωθείτε ότι έχει ένα τσιπ UC1701. Παρατηρήστε πώς στην έκτη εικόνα στη σελίδα ebay, γράφει "CONNECTOR: COG/UC1701".

Η οθόνη είναι διαφανής και είναι δύσκολο να γνωρίζουμε ποιο είναι το μπροστινό και το πίσω μέρος. Μελετήστε προσεκτικά τις φωτογραφίες μου. Παρατηρήστε πού βρίσκονται οι ακίδες 1 και 14 - σημειώνονται στην ουρά.

Η εύκαμπτη ουρά είναι πολύ εύκολο να κολληθεί, αλλά απαιτεί έναν προσαρμογέα για να την συνδέσετε σε μια σανίδα ψωμιού. Αγόρασα: https://www.ebay.co.uk/itm/132166865767 Or μπορείτε να αναζητήσετε στο eBay το "Adapter Smd SSOP28 DIP28".

Ο προσαρμογέας παίρνει ένα τσιπ SOP 28 ακίδων στη μία πλευρά ή ένα τσιπ SSOP 28 ακίδων στην άλλη πλευρά. Ένα τσιπ SOP έχει απόσταση πείρου 0,05 (1,27 mm) που είναι το ίδιο με την ουρά της οθόνης LCD.

Θα χρειαστείτε επίσης μερικές καρφίτσες κεφαλίδας. Κάθε φορά που αγοράζω ένα Arduino ή άλλη μονάδα, έρχεται με περισσότερες καρφίτσες κεφαλίδας από όσες χρειάζονται, οπότε μάλλον έχετε ήδη μερικές. Διαφορετικά, αναζητήστε το eBay για "καρφίτσες κεφαλίδας 2,54mm".

Συγκολλήστε 14 τις καρφίτσες της κεφαλίδας στον προσαρμογέα. Μην τα σπρώχνετε μέχρι τέλους - είναι πιο ωραίο αν το πίσω μέρος του προσαρμογέα είναι επίπεδο. Βάλτε το στον πάγκο σας έτσι ώστε οι καρφίτσες να μην μπορούν να σπρωχτούν πολύ στις τρύπες. Βεβαιωθείτε ότι οι καρφίτσες βρίσκονται στην πλευρά SOP του πίνακα (δηλαδή το μεγαλύτερο τσιπ).

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

Δέστε ένα νήμα μέσα από τις τρύπες του προσαρμογέα για να λειτουργήσει ως ανακούφιση από την καταπόνηση. (Χρησιμοποίησα "σύρμα μετασχηματιστή").

Εάν το κολλήσετε με λάθος τρόπο, μην προσπαθήσετε να ξεκολλήσετε την ουρά. Βγάλτε τις καρφίτσες μία μία και μετακινήστε τις στην άλλη πλευρά του πίνακα. (Ναι, έκανα αυτό το λάθος και ξανακόλλησα την ουρά, γι 'αυτό είναι λίγο χάος στη φωτογραφία.)

Βήμα 2: Σύνδεση στο Arduino

Σύνδεση με το Arduino
Σύνδεση με το Arduino
Σύνδεση με το Arduino
Σύνδεση με το Arduino

Αυτή η ενότητα εξηγεί τον τρόπο σύνδεσης με ένα Arduino Nano. Θα είναι πολύ παρόμοιο για ένα Mini ή Uno αλλά δεν το έχω δοκιμάσει ακόμα.

Μελετήστε το διάγραμμα κυκλώματος.

Ένα Arduino Nano που είναι συνδεδεμένο σε θύρα USB λειτουργεί στα 5V. Η οθόνη LCD λειτουργεί στα 3.3V. Έτσι, πρέπει να τροφοδοτήσετε την οθόνη LCD από τον ακροδέκτη 3V3 του Nano και να μειώσετε την τάση σε κάθε ακίδα ελέγχου από 5V σε 3,3V.

Το pinout της οθόνης LCD είναι:

  • 1 CS
  • 2 RST
  • 3 CD
  • 4
  • 5 CLK
  • 6 SDA
  • 7 3V3
  • 8 0V Gnd
  • 9 VB0+
  • 10 VB0-
  • 11
  • 12
  • 13
  • 14

Το CS είναι Chip-Select. Τραβείται χαμηλά για να επιλέξετε (ενεργοποιήσετε) το τσιπ UC1701. (Το CS μπορεί να ονομαστεί CS0 ή En ή παρόμοιο.)

Το RST είναι Επαναφορά. Τραβείται χαμηλά για επαναφορά του τσιπ. (Το RST μπορεί να ονομάζεται Επαναφορά.)

Το CD είναι εντολή/δεδομένα. Τραβείται χαμηλά κατά την αποστολή εντολών στο τσιπ μέσω SPI. Είναι υψηλό κατά την αποστολή δεδομένων. (Το CD μπορεί να ονομάζεται A0.)

Τα CLK και SDA είναι οι ακίδες του διαύλου SPI. (Το SDA μπορεί να ονομάζεται SPI-Data. Το CLK μπορεί να είναι SCL ή SPI-Clock.)

Τα VB0+ και VB0- χρησιμοποιούνται από την εσωτερική αντλία φόρτισης του UC1701. Η αντλία φόρτισης δημιουργεί τις περίεργες τάσεις που απαιτούνται από την οθόνη LCD. Συνδέστε έναν πυκνωτή 100n μεταξύ VB0+ και VB0-. Η τεκμηρίωση UC1701 συνιστά 2uF, αλλά δεν μπορούσα να δω διαφορά με τη συγκεκριμένη οθόνη LCD.

Εάν η οθόνη LCD σας διαθέτει ακίδες VB1+ και VB1, συνδέστε επίσης έναν πυκνωτή 100n μεταξύ τους. (Εάν η οθόνη LCD σας διαθέτει πείρο VLCD, μπορείτε να δοκιμάσετε να συνδέσετε έναν πυκνωτή 100n μεταξύ VLCD και Gnd. Δεν έκανε καμία διαφορά με την οθόνη LCD μου.)

Συνδέστε την οθόνη LCD στο Nano ως εξής:

  • 1 CS = D10 *
  • 2 RST = D6 *
  • 3 CD = D7 *
  • 5 CLK = D13 *
  • 6 SDA = D11 *
  • 7 3V3 = 3V3
  • 8 0V = Gnd

("*" σημαίνει ότι χρησιμοποιείτε έναν δυνητικό διαιρέτη για να μειώσετε την τάση. Εάν το Arduino λειτουργεί στα 3V3 από ανεξάρτητη τροφοδοσία, δεν θα χρειαστείτε τις αντιστάσεις.)

3.3V εξέρχεται από το Nano και μπορεί να παρέχει επαρκές ρεύμα για την οθόνη LCD. (Η οθόνη αντλεί περίπου 250uA.)

5V εξάγεται επίσης από το Nano και μπορεί να χρησιμοποιηθεί για την τροφοδοσία του οπίσθιου φωτισμού. Περιορίστε το ρεύμα στον οπίσθιο φωτισμό με αντίσταση 100ohm.

Εάν δεν έχετε καρφίτσες στο Nano, μπορείτε να συνδέσετε το RST στο 3V3 - τότε μπορείτε να χρησιμοποιήσετε το D6 για κάτι άλλο. Το U1701 μπορεί να επαναφερθεί στο λογισμικό με μια εντολή στο SPI. Δεν είχα ποτέ κανένα πρόβλημα με αυτό, αλλά εάν χρησιμοποιείτε το δικό σας κύκλωμα σε θορυβώδες περιβάλλον, ίσως είναι καλύτερο να χρησιμοποιήσετε μια επαναφορά υλικού.

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

Λογισμικό
Λογισμικό

Θεωρητικά, μπορείτε να οδηγήσετε το UC1701 από τη βιβλιοθήκη U8g2 (ή το Ucglib ή τις άλλες διαθέσιμες βιβλιοθήκες). Πάλεψα για μέρες για να λειτουργήσει και απέτυχα. Η βιβλιοθήκη U8g2 είναι ένα τέρας γιατί μπορεί να οδηγήσει μια τεράστια ποικιλία τσιπ και είναι πολύ δύσκολο να ακολουθήσεις τον κώδικα. Έτσι τα παράτησα και έγραψα τη δική μου μικρότερη βιβλιοθήκη. Καταλαμβάνει πολύ λιγότερο χώρο στο Arduino (περίπου 3400 byte συν γραμματοσειρές).

Μπορείτε να κατεβάσετε τη βιβλιοθήκη μου από εδώ (το κουμπί Λήψη σε αυτήν τη σελίδα). Περιλαμβάνονται ένα δείγμα σκίτσου και ένας οδηγός χρήσης. Η ιστοσελίδα https://www.arduino.cc/en/Guide/Libraries περιγράφει τον τρόπο εισαγωγής μιας βιβλιοθήκης. μεταβείτε στην ενότητα "Εισαγωγή βιβλιοθήκης.zip".

Αρχικοποιήστε την οθόνη LCD με

UC1701Begin ();

Το UC1701Begin μπορεί να λάβει παραμέτρους για να αλλάξει τους πείρους ή να αγνοήσει τον πείρο RST. Η βιβλιοθήκη χρησιμοποιεί μόνο SPI υλικού (δεν παρέχεται SPI λογισμικού). Η οθόνη μπορεί να αναποδογυριστεί στους άξονες x και y. Αυτό είναι χρήσιμο εάν θέλετε να τοποθετήσετε την οθόνη LCD σε διαφορετικό προσανατολισμό.

Πολλές διαδικασίες έχουν αντιγραφεί από τη βιβλιοθήκη U8g2:

  • DrawLine
  • DrawPixel
  • DrawHLine
  • DrawVLine
  • DrawBox
  • DrawFrame
  • DrawCircle
  • DrawDisc
  • DrawFilledEllipse
  • DrawEllipse
  • DrawTriangle
  • UC1701SetCursor
  • UC1701ClearDisplay

Ορισμένες διαδικασίες είναι ελαφρώς διαφορετικές:

  • άκυρο DrawChar (uint8_t c, word Font);
  • άκυρο DrawString (char * s, word Font);
  • void DrawInt (int i, word Font);

Οι διαδικασίες σχεδίασης συμβολοσειράς περνούν στο ευρετήριο μιας γραμματοσειράς. Οι γραμματοσειρές δηλώνονται στη μνήμη flash του Arduino, ώστε να μην καταλαμβάνουν πολύτιμο SRAM. Παρέχονται τρεις γραμματοσειρές (μικρές, μεσαίες και μεγάλες). Συνδέονται και καταλαμβάνουν μνήμη flash εάν τα χρησιμοποιείτε (περίπου 500 έως 2000 byte το καθένα).

Ο χειρισμός του "χρώματος" γίνεται διαφορετικά από τη βιβλιοθήκη U8g2. Όταν καθαρίσει η οθόνη LCD έχει σκούρο φόντο. Εάν το MakeMark (μια καθολική μεταβλητή) είναι αληθινό, η σχεδίαση γίνεται με λευκό χρώμα. Εάν το MakeMark είναι ψευδές, η σχεδίαση γίνεται στο σκοτάδι.

Ορισμένες διαδικασίες είναι μοναδικές για το UC1701:

Το SetInverted σχεδιάζει σε μαύρο-άσπρο και όχι λευκό-σε-μαύρο.

void SetInverted (bool inv)?

Η φωτεινότητα και η αντίθεση του UC1701 καθορίζονται από:

  • void SetContrast (τιμή uint8_t); // προτείνεται είναι 14
  • void SetResistor (τιμή uint8_t); // προτείνεται είναι 7

Συνεργάζονται με έναν μάλλον μη ικανοποιητικό τρόπο.

Το SetEnabled ενεργοποιεί την οθόνη LCD:

void SetEnabled (bool en);

Η οθόνη παίρνει 4uA όταν κοιμάστε. Θα πρέπει επίσης να απενεργοποιήσετε τον οπίσθιο φωτισμό - οδηγήστε τον από μια καρφίτσα του Nano. Μετά την επανενεργοποίηση, το UC1701 θα έχει επαναφερθεί. η οθόνη διαγράφεται και η αντίθεση και η αντίσταση θα έχουν επαναφερθεί στις προεπιλεγμένες τιμές τους.

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

Συνιστάται: