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

OLED I2C Display Arduino/NodeMCU Tutorial: 15 Βήματα
OLED I2C Display Arduino/NodeMCU Tutorial: 15 Βήματα

Βίντεο: OLED I2C Display Arduino/NodeMCU Tutorial: 15 Βήματα

Βίντεο: OLED I2C Display Arduino/NodeMCU Tutorial: 15 Βήματα
Βίντεο: Master OLED Displays with Arduino, ESP32: A Complete Guide 2024, Νοέμβριος
Anonim
Image
Image

Το πρώτο πρόγραμμα που γράφετε όταν αρχίζετε να μαθαίνετε α

νέα γλώσσα προγραμματισμού είναι: "Hello World!".

Το ίδιο το πρόγραμμα δεν κάνει τίποτα περισσότερο από την εκτύπωση ενός κειμένου "Hello World" στην οθόνη.

Λοιπόν, πώς κάνουμε το Arduino μας να εμφανίζει το "Hello World!";

Σε αυτό το βίντεο, θα σας δείξω πώς να ξεκινήσετε με τις μικρές οθόνες 0,91 (128x32) και 0,96 (128x64) I2C OLED.

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

Βήμα 1: Πράγματα που θα μάθουμε σήμερα

Απαίτηση υλικού
Απαίτηση υλικού

Σε αυτό το βίντεο θα μιλήσουμε για:

- Τι είναι η οθόνη OLED;

- Στη συνέχεια, θα έχουμε μια πιο προσεκτική ματιά στις οθόνες OLED I2C 0,91 (128x32) και 0,96 (128x64)

- Στη συνέχεια θα μιλήσουμε για την εγκατάσταση της βιβλιοθήκης Adafruit στο Arduino IDE

- Στη συνέχεια, θα συνδέσουμε το NodeMCU και το Arduino σε μια οθόνη OLED

- Στη συνέχεια θα ρίξουμε μια ματιά στον κώδικα και θα εμφανίσουμε μερικά γραφικά και κείμενο σε αυτόν

- Θα μιλήσουμε επίσης για την εφαρμογή προσαρμοσμένων γραμματοσειρών και την εμφάνιση εικόνων

- Στη συνέχεια, θα συνδέσουμε πολλαπλά OLED σε μικροελεγκτή χρησιμοποιώντας I2C Multiplexer

- Τέλος, θα μιλήσουμε για λίγα κοινά λάθη που κάνουν οι άνθρωποι όταν χρησιμοποιούν τις οθόνες OLED

Βήμα 2: Απαιτήσεις υλικού

Για αυτό το σεμινάριο χρειαζόμαστε:

- Ένα Breadboard

- Οθόνες OLED I2C 0,91 "(128x32) και 0,96" (128x64)

- Arduino UNO/NANO (ό, τι είναι βολικό)

- NodeMCU

- Πολυπλέκτης TCA9548A I2C

- Λίγα καλώδια σύνδεσης

- και ένα καλώδιο USB για να ανεβάσετε τον κωδικό

Βήμα 3: Τι είναι μια οθόνη OLED;

Τι είναι η οθόνη OLED
Τι είναι η οθόνη OLED
Τι είναι η οθόνη OLED
Τι είναι η οθόνη OLED

OLED ή οργανική δίοδος εκπομπής φωτός είναι μια εκπομπή φωτός

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

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

Βήμα 4:

Εικόνα
Εικόνα

Υπάρχουν πολλοί τύποι οθονών OLED που διατίθενται στο

αγορά με βάση τη δική τους

- Μεγέθη

- Χρώμα

- Μάρκες

- Πρωτόκολλο

- SPI (Serial Peripheral Interface) ή I2C

-Σχέδιο ελέγχου παθητικής μήτρας (PMOLED) ή ενεργού μήτρας (AMOLED)

Σε αυτό το σεμινάριο, θα μιλήσω για τη σύνδεση του

μπλε χρώμα 0,91 (128x32 OLED) και 0,96 (128x64 OLED) I2C OLDE εμφανίζει σε Arduino NANO και NodeMCU. Η τεχνολογία διαύλου I2C χρησιμοποιεί μόνο 2 ακίδες του MCU, ώστε να έχουμε σωρούς διαθέσιμους για άλλους αισθητήρες.

Βήμα 5: Πιο προσεκτική ματιά

Closer Look
Closer Look
Closer Look
Closer Look
Closer Look
Closer Look

Ας έχουμε πιο κοντά σε αυτές τις δύο οθόνες.

Στο πίσω μέρος αυτών των οθονών υπάρχουν σωροί πυκνωτών SMD και αντιστάσεων συγκολλημένοι επί του σκάφους. αλλά, επειδή είναι συσκευή I2C, νοιαζόμαστε μόνο για αυτές τις 2 ακίδες (SCL και SDA)

Η οθόνη συνδέεται με το Arduino χρησιμοποιώντας μόνο τέσσερα καλώδια - δύο για τροφοδοσία (VCC και GND) και δύο για δεδομένα (σειριακό ρολόι SCL και

σειριακά δεδομένα SDA), καθιστώντας την καλωδίωση πολύ απλή. Η σύνδεση δεδομένων είναι I2C (I²C, IIC ή Inter-Integrated Circuit) και αυτή η διεπαφή ονομάζεται επίσης TWI (Two Wire Interface).

- Οι καρφίτσες επί του σκάφους μπορεί να έχουν διαφορετική σειρά, οπότε πάντα τριπλάσιο έλεγχο πριν το συνδέσετε με το έργο σας.

- Η τάση λειτουργίας είναι μεταξύ 3v έως 5v αλλά, είναι καλύτερο να χρησιμοποιήσετε τις οδηγίες από το φύλλο δεδομένων του κατασκευαστή.

- Μερικές φορές χρειάζεται να χρησιμοποιήσουμε 2 οθόνες στα έργα μας. Λοιπόν, πώς μπορούμε να το πετύχουμε αυτό;

Το κόλπο είναι να έχετε μια διευθετήσιμη διεύθυνση στην οθόνη σας. Αυτή η μονάδα έχει διαμορφώσιμη διεύθυνση μεταξύ 0x78 και 0x7A. Απλώς ξεκολλώντας την αντίσταση 0Ohm από τη μία πλευρά και σπρώχνοντάς την στην άλλη πλευρά ή απλά βάζοντας μια γενική συγκόλληση μπορούμε να αλλάξουμε τη διεύθυνση. Θα μιλήσουμε για αυτό σε βάθος όταν συνδέσουμε πολλές οθόνες σε ένα Arduino στο τελευταίο τμήμα αυτού του σεμιναρίου.

Στην εικόνα αυτές οι οθόνες φαίνονται πολύ μεγάλες. Αλλά, στην πράξη, είναι μικροσκοπικά. Είναι κατασκευασμένα από 128 x 32/64 μεμονωμένα pixel OLED και δεν απαιτούν οπίσθιο φωτισμό. Απλά ρίξτε μια ματιά σε αυτό και δείτε πόσο μικρό είναι. Παρόλο που είναι μικρά, μπορεί να είναι πολύ χρήσιμα σε οποιαδήποτε ηλεκτρονικά έργα.

Βήμα 6: Βιβλιοθήκη

Βιβλιοθήκη
Βιβλιοθήκη
Βιβλιοθήκη
Βιβλιοθήκη
Βιβλιοθήκη
Βιβλιοθήκη

Υπάρχουν πολλές διαθέσιμες βιβλιοθήκες για τον έλεγχο αυτών

οθόνες. Στο παρελθόν είχα χρησιμοποιήσει τη "βιβλιοθήκη u8glib", αλλά θεωρώ ότι η βιβλιοθήκη AdaFruit είναι πολύ εύκολο να κατανοηθεί και να χρησιμοποιηθεί στα έργα μας. Έτσι, θα χρησιμοποιήσω τη βιβλιοθήκη AdaFruit σε αυτό το σεμινάριο.

Για τον έλεγχο της οθόνης OLED θα χρειαστείτε τη βιβλιοθήκη "adafruit_GFX.h" και τη βιβλιοθήκη "adafruit_SSD1306.h".

Υπάρχουν δύο τρόποι με τους οποίους μπορείτε να κατεβάσετε και να εγκαταστήσετε τη βιβλιοθήκη στο Arduino IDE.

Μέθοδος 1

Μεταβείτε στον "Διαχειριστή βιβλιοθήκης" και αναζητήστε "adafruit_SSD1306" και "adafruit_gfx"

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

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

Μέθοδος 2

Μπορείτε επίσης να κατεβάσετε αυτές τις δύο βιβλιοθήκες από το github (χρειάζεστε και τις δύο):

Θα σας δώσω τους συνδέσμους στην παρακάτω περιγραφή.

Η βιβλιοθήκη προβολής:

Η βιβλιοθήκη GFX:

Μετά τη λήψη, αντιγράψτε τον κύριο φάκελο Adafruit_SSD1306 από το αρχείο συμπιεσμένου αρχείου που έχετε κατεβάσει στο φάκελο βιβλιοθηκών Arduino. Αυτός ο φάκελος βρίσκεται συνήθως στα Έγγραφα> Arduino> βιβλιοθήκες σε συστήματα Windows. Στο Linux βρίσκεται συνήθως στον οικιακό φάκελο> Arduino> βιβλιοθήκες. Τέλος, στο φάκελο βιβλιοθήκης Arduino, μετονομάστε τον κύριο φάκελο Adafruit_SSD1306 σε Adafruit_SSD1306. Ακόμα κι αν δεν μετονομάσετε, είναι εντάξει.

Βήμα 7:

Εικόνα
Εικόνα

Τώρα, ας ρίξουμε μια ματιά στο "Adafruit_SSD1306.h"

αρχείο

Δύο πράγματα που πρέπει να γνωρίζουμε σε αυτήν τη βιβλιοθήκη:

1. Εάν θέλετε να χρησιμοποιήσετε τη μικρότερη οθόνη, χρησιμοποιήστε την προεπιλεγμένη 128_32, διαφορετικά για τη μεγαλύτερη οθόνη σχολιάστε το 128_32 και κάντε σχόλιο για το 128_64

2. Εάν έχετε κολλήσει τη διεύθυνση 0x7A στον πίνακα (για την οποία θα μιλήσουμε αργότερα), χρησιμοποιήστε τη διεύθυνση 0x3D των 7 bit για τις μεγαλύτερες οθόνες, διαφορετικά χρησιμοποιήστε την προεπιλεγμένη διεύθυνση 0x3C. Για τις μικρότερες οθόνες, η διεύθυνση είναι 0x3C.

Βήμα 8: Καλωδίωση 128 X 64/32 OLED

Καλωδίωση 128 X 64/32 OLED
Καλωδίωση 128 X 64/32 OLED

Ας ξεκινήσουμε συνδέοντας το NodeMCU στην οθόνη.

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

- NodeMCU καλωδίωση OLED

OLED VCC - NodeMCU 3.3V

OLED GND - NodeMCU GND

OLED SCL - NodeMCU D1

OLED SDA - NodeMCU D2

- Arduino Uno OLED Wiring

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino Uno A5

OLED SDA - Arduino Uno A4

- Arduino MEGA 2560 OLED Καλωδίωση

OLED VCC - Arduino 5V

OLED GND - Arduino GND

OLED SCL - Arduino MEGA 2560 pin 21

OLED SDA - Arduino MEGA 2560 pin 20

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

Κώδικας
Κώδικας
Κώδικας
Κώδικας
Κώδικας
Κώδικας
Κώδικας
Κώδικας

Η βιβλιοθήκη Adafruit έρχεται με πραγματικά καλά παραδείγματα και για τους δύο

Οθόνες 128x32 και 128x64.

Η Βιβλιοθήκη βρίσκεται στην ενότητα Αρχείο> Παραδείγματα> Adafruit SSD1306> και, στη συνέχεια, ο τύπος εμφάνισης στο Arduino IDE.

Θα χρησιμοποιήσουμε το παράδειγμα 128x32 I2C και θα το τροποποιήσουμε ώστε να λειτουργεί με γροθιά οθονών 128x64 και 128x32 συνδέοντας το σε ένα Arduino και στη συνέχεια σε μια πλακέτα NodeMCU.

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

- Αρχικά θα φορτώσουμε τον κώδικα σε ένα Arduino Nano συνδεδεμένο σε οθόνη 128x32.

Μπορούμε να χρησιμοποιήσουμε τον κώδικα ως έχει χωρίς καμία τροποποίηση.

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

- Τώρα ας συνδέσουμε την οθόνη 128x64. Όπως γνωρίζουμε, χρησιμοποιεί τη διεύθυνση 0x3C από προεπιλογή, οπότε δεν χρειάζεται να ενημερώσουμε τη διεύθυνση είτε στον κώδικα είτε στη βιβλιοθήκη.

Απλώς πρέπει να σχολιάσουμε το 128_32 και να σχολιάσουμε το 128_64 στη βιβλιοθήκη κεφαλίδων και να αλλάξουμε το LCDHEIGHT σε 64 στον κωδικό μας.

- Τώρα για να τρέξουμε τον ίδιο κώδικα σε ένα NodeMCU πρέπει να αλλάξουμε μια ακόμη γραμμή στον κώδικά μας.

Ο υπόλοιπος κώδικας "#define OLED_RESET 4"> "#define OLED_RESET LED_BUILTIN" είναι ίδιος με τον Arduino

Σχεδόν για να εμφανίσουμε οτιδήποτε χρειαζόμαστε πρώτα για να καθαρίσουμε την προηγούμενη οθόνη χρησιμοποιώντας

display.clearDisplay (); // Διαγράψτε το buffer

Στη συνέχεια, σχεδιάστε το αντικείμενο

testdrawline (); // ΖΩΓΡΑΦΙΣΕ μια γραμμη

Εμφάνιση στο υλικό

display.display (); // Κάντε τα ορατά στο υλικό της οθόνης!

Περιμένετε λίγο πριν εμφανίσετε το επόμενο στοιχείο.

καθυστέρηση (2000). // Περιμένετε 2 δευτερόλεπτα

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

Βήμα 10: Προσαρμογή κειμένου και προσθήκη εικόνων

Προσαρμογή κειμένου και προσθήκη εικόνων
Προσαρμογή κειμένου και προσθήκη εικόνων
Προσαρμογή κειμένου και προσθήκη εικόνων
Προσαρμογή κειμένου και προσθήκη εικόνων
Προσαρμογή κειμένου και προσθήκη εικόνων
Προσαρμογή κειμένου και προσθήκη εικόνων

Μερικές φορές ο κωδικός σας πρέπει να εμφανίζει προσαρμοσμένες γραμματοσειρές και

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

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

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

Προσαρμοσμένες γραμματοσειρές

Μεταβείτε στον ιστότοπο του μετατροπέα γραμματοσειρών, επιλέξτε την οικογένεια γραμματοσειρών, στυλ, μέγεθος, Έκδοση βιβλιοθήκης ως "Γραμματοσειρά Adafruit GFX" και, στη συνέχεια, πατήστε το κουμπί "Δημιουργία". Στη δεξιά πλευρά αυτής της σελίδας μπορείτε να δείτε πώς θα φαίνεται η γραμματοσειρά σας στην πραγματική οθόνη.

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

#include "modified_font.h"

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

display.setFont (& Your_Fonts_Name);

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

Η μνήμη είναι πάντα μια ανησυχία κατά τη χρήση προσαρμοσμένων γραμματοσειρών, οπότε λαμβάνετε πάντα υπόψη τα byte που θα καταναλώνονται από τη μνήμη. Απλώς θυμηθείτε ότι το Arduino UNO έχει μόνο 32K μνήμης.

Προσαρμοσμένες εικόνες

Για να εμφανίσετε μια εικόνα bitmap στην οθόνη σας, πρέπει πρώτα να δημιουργήσετε μια εικόνα μεγέθους 128 x 64/32.

Χρησιμοποιώ το παλιό καλό "MS Paint" για να δημιουργήσω μια εικόνα bitmap 128 x 64 την οποία στη συνέχεια θα ανεβάσω σε αυτόν τον ιστότοπο μετατροπής εικόνας. Ο ιστότοπος μετατρέπει εικόνες σε συμβολοσειρές byte, οι οποίες μπορούν να χρησιμοποιηθούν με οθόνες Arduino και OLED.

Ξεκινήστε ανεβάζοντας την εικόνα στον ιστότοπο. Στη συνέχεια, τοποθετήστε έναν έλεγχο στο πλαίσιο ελέγχου "Αντιστροφή χρωμάτων εικόνας" και αλλάξτε τη "Μορφή κωδικού εξόδου" σε "Κώδικας Arduino", στη συνέχεια επιλέξτε τον προσανατολισμό και πατήστε το κουμπί "Δημιουργία κώδικα" για να δημιουργήσετε τον πίνακα byte. Η ενότητα "Προεπισκόπηση" σας δείχνει πώς θα είναι η εικόνα σας στην πραγματική οθόνη.

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

Βήμα 11: Σύνδεση 2 οθονών

Σύνδεση 2 οθονών
Σύνδεση 2 οθονών
Σύνδεση 2 οθονών
Σύνδεση 2 οθονών

Η σύνδεση δύο οθονών 128 x 64 στο έργο σας είναι εύκολη.

Απλώς πρέπει να ξεκολλήσετε την αντίσταση 0Ohm από τη διεύθυνση 0x78 και να την τοποθετήσετε σε 0x7A και, στη συνέχεια, να χρησιμοποιήσετε τη διεύθυνση 0x3D στον κωδικό σας αντί για την προεπιλεγμένη τιμή 0x3C.

Πρέπει να αναρωτιέστε γιατί χρησιμοποιούμε τη διεύθυνση 0x3C και 0x3D και όχι την πραγματική 0x78 και 0x7A. Το Arduino δέχεται διεύθυνση 7 bit και όχι τις διευθύνσεις υλικού 8 bit. Έτσι, πρέπει πρώτα να μετατρέψουμε τη διεύθυνση 8-bit σε δυαδική και, στη συνέχεια, να κόψουμε το λιγότερο σημαντικό bit για να πάρουμε τα 7 bits. Στη συνέχεια, μετατρέψτε τα 7 bit σε HEX για να λάβετε τις διευθύνσεις 0x3C ή 0x3D που εισάγετε στον κωδικό σας.

Αρχικά, προετοιμάστε την οθόνη δίνοντάς της ένα μοναδικό όνομα:

Adafruit_SSD1306 display1 (OLED_REST);

Adafruit_SSD1306 display2 (OLED_REST);

Στη συνέχεια, στον κωδικό σας χρησιμοποιήστε την οθόνη 1 και την οθόνη 2 για να καλέσετε τις δηλώσεις έναρξης με τις διευθύνσεις της συσκευής σε αυτές:

display1.begin (SSD1306_SWITCHCAPVCC, 0x3C); // εμφάνιση 1 διεύθυνσης 0x3C

display2.begin (SSD1306_SWITCHCAPVCC, 0x3D); // εμφάνιση της διεύθυνσης 2 op 0x3D

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

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

Βήμα 12: Σύνδεση περισσότερων από 2 οθονών

Σύνδεση περισσότερων από 2 οθονών
Σύνδεση περισσότερων από 2 οθονών
Σύνδεση περισσότερων από 2 οθονών
Σύνδεση περισσότερων από 2 οθονών
Σύνδεση περισσότερων από 2 οθονών
Σύνδεση περισσότερων από 2 οθονών

Τώρα, τι γίνεται αν θέλετε να συνδέσετε περισσότερες από 2 οθόνες;

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

Λοιπόν, πώς μπορούμε να συνδέσουμε περισσότερες από 2 οθόνες I2C σε ένα Arduino; Το κόλπο είναι να χρησιμοποιήσετε έναν πολυπλέκτη TCA9548.

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

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

Ο πολυπλέκτης συνδέεται με γραμμές 3V3, GND, SDA και SCL του μικροελεγκτή. Οι υποτελείς αισθητήρες συνδέονται με μία από τις οκτώ θυρίδες SCL/SDA που βρίσκονται στην πλακέτα. Τα κανάλια επιλέγονται στέλνοντας στο TCA9548A τη διεύθυνση I2C (0x70 {προεπιλογή} - 0x77) ακολουθούμενη από τον αριθμό καναλιού (0b00000001 - 0b10000000). Θα μπορούσατε να έχετε το πολύ 8 από αυτούς τους πολυπλέκτες συνδεδεμένους μεταξύ τους σε διευθύνσεις 0x70-0x77, προκειμένου να ελέγχετε 64 από τα ίδια τμήματα με διεύθυνση I2C. Συνδέοντας τα τρία bits διευθύνσεων A0, A1 και A2 στο VIN μπορείτε να πάρετε διαφορετικό συνδυασμό των διευθύνσεων. Θα το εξηγήσω σε βάθος στο επόμενο σεμινάριό μου σχετικά με το TCA9548A breakout board. Προς το παρόν, ας συνδέσουμε 8 OLED σε αυτόν τον πίνακα και να ρίξουμε μια γρήγορη ματιά στον κώδικα.

Σύνδεση:

VIN έως 5V (ή 3,3V)

GND στο έδαφος

Ρολόι SCL έως I2C

Δεδομένα SDA έως I2C

Στη συνέχεια, συνδέστε τους αισθητήρες σε VIN, GND και χρησιμοποιήστε έναν από τους πολυπλεγμένους διαύλους SCn / SDn

Τώρα, Int ο κώδικας επιτρέπει να ξεκινήσετε συμπεριλαμβάνοντας τη βιβλιοθήκη "Wire" και καθορίζοντας τη διεύθυνση των πολυπλεκτών.

#include "Wire.h"

#περιλαμβάνω

#define MUX_Address 0x70 // TCA9548A Διεύθυνση κωδικοποιητών

Στη συνέχεια, πρέπει να επιλέξουμε τη θύρα στην οποία θέλουμε να επικοινωνήσουμε και να στείλουμε τα δεδομένα σε αυτήν χρησιμοποιώντας αυτήν τη λειτουργία:

void tcaselect (uint8_t i) {

εάν (i> 7) επιστροφή?

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Στη συνέχεια, θα αρχικοποιήσουμε την οθόνη στην ενότητα εγκατάστασης καλώντας "u8g.begin ();" για κάθε οθόνη προσαρτημένη στο MUX "tcaselect (i);"

Μόλις αρχικοποιηθεί, μπορούμε στη συνέχεια να κάνουμε ό, τι θέλουμε απλά καλώντας τη συνάρτηση "tcaselect (i);" όπου "i" είναι η τιμή του πολυπλεγμένου διαύλου και, στη συνέχεια, η αποστολή των δεδομένων και του ρολογιού ανάλογα.

Βήμα 13: Πλεονεκτήματα και μειονεκτήματα

Πλεονεκτήματα και μειονεκτήματα
Πλεονεκτήματα και μειονεκτήματα

Η εικόνα ενός OLED είναι όμορφη. Ωστόσο, οι OLED έχουν επίσης

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

Πλεονεκτήματα

Δεν χρειάζεται οπίσθιος φωτισμός

Οι οθόνες είναι πολύ λεπτές και ελαφριές

Χαμηλή κατανάλωση ενέργειας

Οι γωνίες θέασης είναι ευρύτερες από τις οθόνες LCD

Η φωτεινότητα και η αντίθεση είναι υπέροχα

Υψηλή ταχύτητα και χαμηλό χρόνο απόκρισης

Βαθύ μαύρο χρώμα

Μειονεκτήματα

Ακριβή τεχνολογία

Σύντομος κύκλος ζωής

Το OLEDS είναι πιο πιθανό να καεί

Υδάτινη καταστροφή

Βήμα 14: Συνήθη σφάλματα

Κοινά σφάλματα
Κοινά σφάλματα

Για να ολοκληρώσουμε το σεμινάριο, ας μιλήσουμε για μερικά κοινά σφάλματα

οι άνθρωποι κάνουν τη χρήση αυτών των οθονών:

- Ελέγχετε πάντα τρεις φορές τις καρφίτσες πριν τις χρησιμοποιήσετε στο έργο σας

- Παραλάβετε τη σωστή διεύθυνση βιβλιοθήκης στο αρχείο κεφαλίδας και στον κωδικό σας

#define SSD1306_I2C_ADDRESS 0x3C // στο Adafruit_SSD1306.h

και

display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // στον κωδικό σας

Εάν η διεύθυνση είναι λάθος, το OLED δεν θα εμφανίσει τίποτα

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

#error ("Το ύψος είναι λάθος, διορθώστε το Adafruit_SSD1306.h!");

- Εάν χρησιμοποιείτε το NodeMCU, βεβαιωθείτε ότι έχετε αντικαταστήσει το OLED_RESET από 4 σε LED_BUILTIN

#define OLED_RESET LED_BUILTIN

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

Βήμα 15: Σύνδεσμοι

- Ιστολόγιο:

- Προσθήκη εικόνας:

- Προσαρμοσμένο κείμενο:

- Βιβλιοθήκη προβολής Adafruit:

-Βιβλιοθήκη Adafruit GFX:

- βιβλιοθήκη u8glib: https://code.google.com/archive/p/u8glib/ ή

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

Συνιστάται: