Κάντο μόνος σου
Life hacks, master classes, χρήσιμες συμβουλές, συνταγές.
Σπίτι » ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ » Ηλεκτρονικά DIY » Πώς να συνδέσετε μια οθόνη OLED I2C στο ARDUINO
Εισαγωγή: Εισαγωγή στην οθόνη OLED I2C 128*64 / 128*32.
Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Γειά σου! Όντας ερασιτέχνης λάτρης των ηλεκτρονικών, είμαι σίγουρος ότι ό,τι κάνουμε - ηλεκτρονικά παιχνίδια - σπιτικά προϊόντα ή μεγάλα έργα - είναι όλα από περιέργεια και τεμπελιά. Το Curiosity προσπαθεί να κατανοήσει και να κατανοήσει το τεράστιο, άγνωστο, για να καταλάβει πώς λειτουργεί εκεί, τι κάνει, πώς κινείται. Και η τεμπελιά επινοεί κάτι να σκαρφιστεί, για να μην σηκωθεί, να μην πλησιάσει, να μην σηκώσει, να μη λερωθεί ή οτιδήποτε άλλο σημαντικό.

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

Για όσους έχουν επίσης παρόμοια επιθυμία, εδώ είναι ένας σύντομος οδηγός για τη σύνδεση και τη δοκιμή μικρών και φθηνών οθονών OLED.
Στη συνέχεια, θα μιλήσουμε για ένα από τα ευρέως διαθέσιμα μοντέλα οθόνης OLED για ραδιοερασιτέχνες, που ελέγχεται από το τσιπ SSD1306, με μέγεθος οθόνης 0,96 ίντσες και ανάλυση 128 * 64 ή 128 * 32 pixel. Αυτές οι οθόνες είναι ιδανικές για μικρά σχέδια ραδιοερασιτεχνών και σπιτικά έργα.
Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Βήμα 1: Βασικές Έννοιες


Θα το συνδέσουμε στο Arduino UNO / NANO και θα το προγραμματίσουμε επίσης μέσω του Arduino.
  • Το OLED είναι μια οργανική δίοδος εκπομπής φωτός, δηλαδή μια συσκευή ημιαγωγών κατασκευασμένη από οργανικές ενώσεις που αρχίζει να εκπέμπει φως όταν το ηλεκτρικό ρεύμα περνά μέσα από αυτό.
  • Το ARDUINO είναι μια πλατφόρμα εκπαίδευσης και κατασκευής συστημάτων αυτοματισμού και ρομποτικής.
  • ArduinoIDE - περιβάλλον ανάπτυξης. Αυτό είναι ένα δωρεάν πρόγραμμα προγραμματισμού Arduino.
  • I2C – Inter-Integrated Circuits, γραμμή επικοινωνίας μεταξύ chip.
  • Σκίτσο, κωδικός aka, πρόγραμμα aka - ορολογία Arduino.

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

Βήμα 2: Αξεσουάρ


Χρειαζόμαστε μόνο τέσσερα πράγματα:
  • 1. Η ίδια η οθόνη OLED είναι 0,96” (μπορείτε να την αγοράσετε στο Aliexpress ή στο Ebay, είναι μεγάλη, αλλά φθηνή!).
  • 2. Arduino UNO / Nano (ίδια θέση με την οθόνη).
  • 3. Καλώδια σύνδεσης (ό.π.).
  • 4. Υπολογιστής ή φορητός υπολογιστής με εγκατεστημένο το ArduinoIDE.

Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Γενικά, η αγορά ανταλλακτικών για διάφορα έργα στο Aliexpress και στο Ebay είναι πολύ ωραίο πράγμα, ενώ εργάζεστε σε ένα έργο, ανταλλακτικά για ένα άλλο είναι ήδη στο δρόμο. Το κύριο πράγμα είναι να μην ξεχάσετε να κάνετε μια παραγγελία.

Βήμα 3: Σύνδεση της οθόνης


Η οθόνη ελέγχεται από ένα τσιπ SSD1306, το οποίο υποστηρίζει πέντε πρωτόκολλα επικοινωνίας, ένα από τα οποία είναι το I2C. Τα δεδομένα που χρησιμοποιούν αυτό το πρωτόκολλο μεταδίδονται μόνο μέσω δύο καλωδίων και όσο λιγότερα καλώδια στη θήκη, τόσο το καλύτερο, επομένως μας ταιριάζει αρκετά.Αλλά! Υπάρχουν ενότητες με το πρωτόκολλο SPI και ακόμη και με εναλλαγή πρωτοκόλλου, οπότε να είστε προσεκτικοί όταν αγοράζετε αυτήν την ενότητα.
Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Καρφίτσες που χρησιμοποιούνται:
Οθόνη OLED - SCL/SCK (ρολόι) και SDA (δεδομένα), ισχύς «Plus» (VCC) και ισχύς «Μείον» (GND).
Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Καρφίτσες που χρησιμοποιούνται:
Arduino UNO - SCL/SCK σε A5 και SSD σε A4, ισχύς «Plus» (+5V) και ισχύς «Μείον» (GND).
Σύνδεση της οθόνης στο Arduino:
  • Vcc - 5V
  • GND - GND
  • SDA-A4
  • SCL-A5

Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Βήμα 4: Σαρωτής I2C


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

Συνολικά, μπορούν να χρησιμοποιηθούν έως και 127 διευθύνσεις στο λεωφορείο - 119 για συσκευές και 8 διευθύνσεις υπηρεσιών. Η επικοινωνία πραγματοποιείται σε αυτές τις διευθύνσεις. Υπάρχει ένα κύριο, γνωστός και ως Master, και υπάρχει ένας σκλάβος, γνωστός και ως Slave - οι Δάσκαλοι ρωτούν, οι σκλάβοι απαντούν, όλα είναι απλά.
Δεδομένου ότι η οθόνη OLED μας χρησιμοποιεί το πρωτόκολλο επικοινωνίας I2C και η διεύθυνση μπορεί να μην έχει καθοριστεί, θα προσπαθήσουμε να μάθουμε μόνοι μας αυτή τη διεύθυνση.

Μπορείτε να το κάνετε αυτό ανεβάζοντας ένα σύντομο σκίτσο στην πλακέτα Arduino με συνδεδεμένο το OLED. ΑΛΛΑ!
Μη βιαστείτε να ανεβάσετε το σκίτσο στο Arduino αμέσως! Ας κατεβάσουμε πρώτα τα “drivers”, δηλ. Ας συνδέσουμε τις βιβλιοθήκες και για να το κάνουμε αυτό θα πάμε αμέσως στο "Βήμα Νο. 5" και μετά θα επιστρέψουμε και θα συνεχίσουμε.

Βήμα 4: Συνέχεια:


Κατεβάστε το CODE Finder_I2C_Hex_Address.ino, μεταφορτώστε το στο Arduino.
Ανοίξτε το "Port Monitor", ρυθμίστε την ταχύτητα στο 9600 και εάν όλα είναι συνδεδεμένα σωστά, το πρόγραμμα θα εμφανίσει τη διεύθυνση της συσκευής, στην περίπτωσή μου OLED με διεύθυνση 0x3F.
Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Βήμα 5: Λήψη και σύνδεση βιβλιοθηκών


Για να λειτουργούν όλα σωστά και δεν χρειάζεται να εφεύρετε ξανά τον τροχό, πρέπει να συνδέσετε μερικές βιβλιοθήκες στο περιβάλλον ArduinoIDE, συγκεκριμένα: ADAFRUIT GFX και ADAFRUIT SSD1306, είναι απαραίτητες για το Arduino να μπορεί να επικοινωνεί ανεξάρτητα με την οθόνη OLED.
Μπορείτε να συμπεριλάβετε αυτές τις βιβλιοθήκες ακολουθώντας αυτά τα βήματα.
  • 1. Στο ArduinoIDE, μεταβείτε στο μενού Σκίτσο.
  • 2. Επιλέξτε «Συμπερίληψη βιβλιοθηκών».
  • 3.Επιλέξτε «Διαχείριση βιβλιοθηκών».
  • 4. Βρείτε το ADAFRUIT GFX και εγκαταστήστε το.
  • 5. Βρείτε το ADAFRUIT SSD1306 και εγκαταστήστε το.

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

Ένας άλλος τρόπος εγκατάστασης βιβλιοθηκών είναι να βρείτε, να κατεβάσετε και να εγκαταστήσετε αυτές τις βιβλιοθήκες μόνοι σας.
Για παράδειγμα Github:
https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit_SSD1306

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

Βήμα 6: Δοκιμή οθόνης


Για να ελέγξετε εάν όλα λειτουργούν όπως αναμένεται, εκτελέστε το παράδειγμα δοκιμής από το ArduinoIDE.
Για αυτό:
Μεταβείτε στο FILE > EXAMPLES > SSD 1306 > Επιλέξτε 128x64 i2c
Εάν εμφανιστεί "Σφάλμα", δοκιμάστε να επιλέξετε SSD 1306 > 128x32 i2c.
Εάν εμφανιστεί ξανά "Σφάλμα", δοκιμάστε να αλλάξετε τη διεύθυνση I2C στη γραμμή 61 του κώδικα επίδειξης και αντικαταστήστε την με τη διεύθυνση της οθόνης σας που καθορίσατε στο βήμα #4.
Εάν το σφάλμα παρουσιαστεί ξανά, μπορείτε να προσπαθήσετε να επεξεργαστείτε το αρχείο Adafruit_SSD1306.h, το οποίο βρίσκεται στο φάκελο βιβλιοθήκες Arduino.
Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Ανοίξτε το αρχείο Adafruit_SSD1306.h σε ένα πρόγραμμα επεξεργασίας κειμένου και βρείτε τις γραμμές:
//#define SSD1306_128_64
#define SSD1306_128_32
// #define SSD1306_96_16 

Καταργήστε το σχόλιο της γραμμής:
#define SSD1306_128_64. 

Θα πρέπει να μοιάζει με αυτό:
#define SSD1306_128_64
//#define SSD1306_128_32
// #define SSD1306_96_16

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

Όταν έχετε απολαύσει πλήρως αυτό το κινούμενο σχέδιο, μπορείτε να προχωρήσετε στο επόμενο βήμα.

Βήμα 7: Γράψτε το δικό σας μήνυμα


Για να γράψετε το δικό σας μήνυμα, δημιουργήστε πρώτα ένα νέο σκίτσο στο περιβάλλον προγραμματισμού ArduinoIDE.
Στην κεφαλίδα περιλαμβάνουμε 4 βιβλιοθήκες:
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

Στη συνέχεια γράφουμε το πρωτόκολλο επαναφοράς:
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

Στο VOID SETUP υποδεικνύουμε τη δεκαεξαδική διεύθυνση της οθόνης μας 0x3C, την οποία μάθαμε στο "Βήμα Νο. 4".
Στη συνέχεια, αρχικοποιούμε την οθόνη και την καθαρίζουμε:
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();

Στη συνέχεια, στο VOID LOOP γράφουμε τον κύριο κωδικό, δηλαδή το μήνυμά μας που θέλουμε να εμφανίσουμε στην οθόνη.
Για να γίνει αυτό, περιγράφουμε το μέγεθος του κειμένου, το χρώμα του κειμένου, τη θέση του δρομέα και, τέλος, εμφανίζουμε το μήνυμα χρησιμοποιώντας την εντολή println:
display.setTextSize(2);
display.setTextColor(ΛΕΥΚΟ);
display.setCursor(0,0);
display.println("Μπράβο!");
display.display();

Στο τέλος μην ξεχάσετε να γράψετε εμφάνιση.εμφάνισηέτσι ώστε η εικόνα να εμφανίζεται στην οθόνη, διαφορετικά θα έχετε κενό.
Εάν τα κάνατε όλα σωστά, θα εμφανιστεί ένα μήνυμα στις οθόνες.
Πώς να συνδέσετε την οθόνη OLED I2C στο ARDUINO

Εδώ είναι ο ΚΩΔΙΚΟΣ Starting_with_Arduino_OLED.ino του προγράμματός μας:
code.zip [946 b] (λήψεις: 4908)
Σχόλιο
  • παπιγιόχαμόγελογέλιοκοκκινίζωχαμογελαστόςχαλαρός χαλαρόςχαζό χαμόγελο
    καρδιά_μάτιαφιλί_καρδιάφιλώντας_κλειστά_μάτιακοκκινισμένοςανακουφισμένοςικανοποιημένοιγκριμάτσα
    κλείσιμο ματιούκολλήσει έξω τη γλώσσα κλείνοντας το μάτι μάτικολλημένα_γλώσσα_κλειστά_μάτιαχαμογελώνταςασπασμόςκολλημένος_έξω_γλώσσακοιμάμαι
    ανήσυχοςσυνοφρυωμένοςαγωνίαανοιχτό στόμαγκριμάτσεςταραγμένοςσιωπηλός
    ανέκφραστοςαδιάφοροςιδρώτας_χαμόγελοιδρώταςαπογοητευμένος_ανακουφισμένοςκουρασμένοςπαθητικός
    απογοητευμένοςκαταραμένοςφοβερόςκρύος ιδρώταςεπιμένωκραυγήλυγμός
    Χαράέκπληκτοςκραυγήκουρασμένος_πρόσωποθυμωμένοςοργήθρίαμβος
    νυσταγμένοςναιμάσκαγυαλιά ηλίουζαλισμένος_πρόσωποδιαβολάκιsmiling_imp
    ουδέτερο_πρόσωποno_mouthαθώος
4 μείον ένα =
Σχόλια (10)
  1. Τατόσκα
    #1 Τατόσκα Καλεσμένοι 14 Νοεμβρίου 2018 21:18
    9
    Ευχαριστώ φίλε! Αυτό είναι το πρώτο μου σκίτσο και εισαγωγή στο Arduino. Εκτός από το αναβοσβήνει Blink))
  2. Άλισερ
    #2 Άλισερ Καλεσμένοι 28 Ιουλίου 2019 19:35
    8
    Πού μπορώ να κατεβάσω αυτόν τον κωδικό Finder_I2C_Hex_Address.ino;
    1. Ο Αλ
      #3 Ο Αλ Καλεσμένοι 14 Αυγούστου 2019 12:51
      11
      κάτω από την εικόνα υπάρχει ένας σύνδεσμος "Εδώ είναι ο ΚΩΔΙΚΟΣ Starting_with_Arduino_OLED.ino του προγράμματός μας:"
  3. Άλεξ
    #4 Άλεξ Καλεσμένοι 13 Νοεμβρίου 2019 20:01
    9
    Όχι VOID SETUP ή VOID LOOP, αλλά void setup(); και void loop(); Η γλώσσα C είναι μια γλώσσα με διάκριση πεζών-κεφαλαίων.
  4. Επισκέπτης Άλεξ
    #5 Επισκέπτης Άλεξ Καλεσμένοι 14 Ιανουαρίου 2020 03:00
    6
    >Βήμα 4: ... στην περίπτωσή μου OLED με διεύθυνση 0x3F.
    και μετά
    >Στο VOID SETUP... η διεύθυνση της οθόνης μας 0x3C, που μάθαμε στο “Step #4”.
    Πώς είναι αυτό?
  5. Επισκέπτης Άλεξ
    #6 Επισκέπτης Άλεξ Καλεσμένοι 14 Ιανουαρίου 2020 03:10
    9
    Ευχαριστώ! Έκανα τα πάντα σύμφωνα με τις οδηγίες στο Atmega328 Pro Mini και έλεγξα το 0,96 που αγόρασα". Αποδείχθηκε ότι και τα δύο λειτουργούσαν. Arduino IDE 1.8.10
  6. Αναγνώστης
    #7 Αναγνώστης Καλεσμένοι 3 Μαρτίου 2020 21:50
    4
    Ευχαριστώ, διδακτικό, όλα λειτουργούν!
  7. Ildar Xafizov
    #8 Ildar Xafizov Καλεσμένοι 19 Απριλίου 2020 19:15
    5
    Εχω μία ερώτηση. Υπάρχουν 2 οθόνες OLED πανομοιότυπες με τις δικές σας στη φωτογραφία (δεύτερη φωτογραφία). Δεν μπορώ να καταλάβω ποια jumpers να χρησιμοποιήσω για να αλλάξω τη διεύθυνση;
  8. Επισκέπτης Maxim
    #9 Επισκέπτης Maxim Καλεσμένοι 31 Οκτωβρίου 2020 18:53
    11
    Ευχαριστώ για το άρθρο.Αλλά έχω ένα πρόβλημα: τα pixel στα γράμματα ανάβουν μεταξύ τους και η γραμματοσειρά είναι μεγαλύτερη από όσο θα έπρεπε. Προφανώς το Arduino δεν αναγνωρίζει την ανάλυση της οθόνης. Αν κάποιος έχει το ίδιο πρόβλημα, δείτε πώς να το λύσετε:
    #define SCREEN_WIDTH 128 // Πλάτος οθόνης OLED, σε pixel
    #define SCREEN_HEIGHT 64 // Ύψος οθόνης OLED, σε pixel
    Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
  9. Ντμίτρι
    #10 Ντμίτρι Καλεσμένοι 9 Μαΐου 2021 19:35
    7
    Ευχαριστώ! Δεν λειτούργησαν όλα αμέσως. Πράγματι, η διεύθυνση στην οθόνη ήταν 128*64, όχι 0x3D, αλλά 0x3C. Και αναδιάταξη των Βιβλιοθηκών «από τη μέση» των εκδόσεων. Όχι το πιο πρόσφατο, γιατί... υπήρχε ένα μήνυμα σχετικά με την κρίσιμη αξία της μνήμης (έχω ένα Arduino Uno).

Κόκκινο κρεμμύδι τουρσί (για καναπεδάκια, σαλάτες, μπιφτέκια και πιλάφι)

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

DIY βιβλίο ευχών για αγόρι | Κάντο μόνος σου

Πώς να αποσυναρμολογήσετε και να λιπάνετε ένα τσοκ τρυπανιού

«Κάντε το μόνοι σας - με τα χέρια σας» - ένας ιστότοπος με ενδιαφέροντα σπιτικά προϊόντα φτιαγμένα από παλιοσίδερα και αντικείμενα στο σπίτι. Βήμα-βήμα master classes με φωτογραφίες και περιγραφές, τεχνολογίες, life hacks - όλα όσα χρειάζεται ένας πραγματικός δάσκαλος ή απλώς ένας τεχνίτης για κεντήματα. Χειροτεχνίες οποιασδήποτε πολυπλοκότητας, μεγάλη ποικιλία από κατευθύνσεις και ιδέες για δημιουργικότητα.

Συνιστούμε να διαβάσετε

Κωδικοί σφαλμάτων πλυντηρίου ρούχων