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

Γενική γεννήτρια χαρακτήρων (Adafruit HT16k33 Matrix): 3 βήματα
Γενική γεννήτρια χαρακτήρων (Adafruit HT16k33 Matrix): 3 βήματα

Βίντεο: Γενική γεννήτρια χαρακτήρων (Adafruit HT16k33 Matrix): 3 βήματα

Βίντεο: Γενική γεννήτρια χαρακτήρων (Adafruit HT16k33 Matrix): 3 βήματα
Βίντεο: fnirsi - 2c23T new multimeter Review - Teardown ! #fnirsi #fnirsimultimeter #oscilloscope 2024, Ιούλιος
Anonim
Γενική γεννήτρια χαρακτήρων (μήτρα Adafruit HT16k33)
Γενική γεννήτρια χαρακτήρων (μήτρα Adafruit HT16k33)

Η εκτύπωση ειδικών χαρακτήρων σε LCD και Led Matrices είναι μια μεγάλη διασκέδαση. Η διαδικασία εκτύπωσης ειδικών χαρακτήρων ή προσαρμοσμένων χαρακτήρων είναι η δημιουργία ενός πίνακα με δυαδικές τιμές για κάθε γραμμή και στήλη. Μπορεί να είναι ταραχώδης η εύρεση του σωστού κώδικα για οποιονδήποτε προσαρμοσμένο χαρακτήρα, επομένως, αυτό το έργο θα αυτοματοποιήσει και θα δημιουργήσει κώδικα για έναν πίνακα led 8x8 και θα εκτυπώσει επίσης τον προσαρμοσμένο χαρακτήρα στο Adafruit HT16k33 8x8 Bicolor Matrix.

Το Adafruit HT16k33, μια μήτρα 1,2 "8x8 Bicolor Led επικοινωνεί με το Arduino μέσω ενός πρωτοκόλλου επικοινωνίας I2C

Σύμφωνα με την Adafruit, "Αυτή η έκδοση του σακιδίου LED έχει σχεδιαστεί για τις μήτρες 1,2" 8x8. Μετρούν μόνο 1,2 "x1,2", οπότε είναι κρίμα να χρησιμοποιείτε μια τεράστια σειρά τσιπ για να τον ελέγχετε. Αυτό το σακίδιο επιλύει την ενόχληση της χρήσης 16 ακίδων ή μιας δέσμης τσιπ, κάνοντας έναν ελεγκτή μήτρας σταθερού ρεύματος I2C να κάθεται τακτοποιημένα στο πίσω μέρος του PCB. Το τσιπ ελεγκτή φροντίζει για όλα, σχεδιάζοντας και τα 64 LED στο παρασκήνιο. Το μόνο που έχετε να κάνετε είναι να γράψετε δεδομένα σε αυτό χρησιμοποιώντας τη διεπαφή I2C 2 ακίδων. Υπάρχουν δύο ακίδες επιλογής διεύθυνσης, ώστε να μπορείτε να επιλέξετε μία από τις 8 διευθύνσεις για να ελέγξετε έως και 8 από αυτές σε ένα διαύλο I2C 2 ακίδων (καθώς και ό, τι άλλο τσιπ ή αισθητήρες I2C σας αρέσει). Το τσιπ οδηγού μπορεί να "αμβλύνει" ολόκληρη την οθόνη από 1/16 φωτεινότητα έως πλήρη φωτεινότητα σε 1/16 βήματα. Δεν μπορεί να αμβλύνει μεμονωμένα LED, μόνο ολόκληρη την οθόνη ταυτόχρονα."

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

Βήμα 1: Στοιχεία

Αυτό το εκπαιδευτικό είναι ένα βασικό έργο στο Adafruit HT16k33 Matrix. Χρειάζεσαι:

  1. Adafruit HT16k33 1.2 "x 1.2" 8x8 Bicolor Led Matrix.
  2. Arduino (οποιαδήποτε παραλλαγή αλλά προτιμάται το Uno).
  3. Breadboard
  4. Παροχή ηλεκτρικού ρεύματος

Βήμα 2: Σχηματικό

Σχηματικός
Σχηματικός
Σχηματικός
Σχηματικός

Η καλωδίωση της μήτρας Adafruit HT16k33 Led είναι πολύ εύκολη καθώς πρέπει να συνδέσουμε το ρολόι και την καρφίτσα δεδομένων όπως κάνουμε συνήθως για συσκευές I2C. Οι συνδέσεις θα είναι ως εξής:

  1. SCL (καρφίτσα ρολογιού της μήτρας) συνδεδεμένο στο A5 (καρφίτσα ρολογιού του Arduino Uno. Ανατρέξτε στο φύλλο δεδομένων για άλλες παραλλαγές του Arduino)
  2. SDA (Data pin of Matrix) συνδεδεμένο στο A4. (Ανατρέξτε στο φύλλο δεδομένων για άλλες παραλλαγές του Arduino)
  3. VCC συνδεδεμένο σε 5V.
  4. GND συνδεδεμένο σε 0V.

Μπορείτε επίσης να συμβουλευτείτε το σχηματικό σχήμα που φαίνεται στο σχήμα.

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

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

Κωδικός Arduino

Πρώτον, θα συμπεριλάβουμε όλες τις βιβλιοθήκες που απαιτούνται.

  1. Wire.h:- Για επικοινωνία I2C
  2. Adafruit_LedBackpack
  3. Adafruit_GFX

Όλες αυτές οι βιβλιοθήκες είναι διαθέσιμες στο ίδιο το Arduino IDE. Απλώς πρέπει να τα εγκαταστήσετε από τη Διαχείριση βιβλιοθηκών. Σκίτσο >> Συμπερίληψη βιβλιοθήκης >> Διαχείριση βιβλιοθηκών

Λειτουργία εγκατάστασης ()

Ρύθμιση ενός μη υπογεγραμμένου ακέραιου πίνακα 8-bit σε δυαδικές τιμές strore8 για 8 σειρές, των 8 bits η κάθε μία (8 στήλες). Ορίστε τη διεύθυνση επικοινωνίας I2C.

Λειτουργία βρόχου ()

Καθώς πρέπει να εκτυπώσουμε τον χαρακτήρα, χρειαζόμαστε τον κωδικό για τον χαρακτήρα σε πραγματικό χρόνο. Η πιο βολική μέθοδος είναι η αποστολή σειριακού κωδικού και το Arduino θα διαβάσει τα σειριακά δεδομένα και θα εκτυπώσει ανάλογα τον χαρακτήρα. Η αποστολή σειριακού πίνακα μπορεί να είναι μια ταραχώδης εργασία, επομένως μπορούμε να στείλουμε μια συμβολοσειρά και με τους 8 κωδικούς (8 bit το καθένα) χωρισμένες με κόμματα.

Σειριακή συμβολοσειρά ανάγνωσης:

if (Serial.available ()> 0) {data = Serial.readStringUntil ('\ n'); Serial.println (δεδομένα); }

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

Μετατροπή συμβολοσειράς 8 bit σε δεκαδικό:

int val (String str) {int v = 0; για (int i = 0; i <8; i ++) {if (str == '1') {v = v+power (2, (7-i)); }} return v; }

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

int δύναμη (int βάση, int εκθέτης) {int c = 1; για (int i = 0; i {c = c*βάση;} επιστροφή c;}

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

void print_emoji (uint8_t emoji , String color) {matrix.clear (); if (χρώμα == "κόκκινο") {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_RED); } else {matrix.drawBitmap (0, 0, emoji, 8, 8, LED_GREEN); } matrix.writeDisplay (); καθυστέρηση (500)? }

Θα καταλάβετε εύκολα αυτόν τον κώδικα καθώς καθαρίζουμε πρώτα τη μήτρα και στη συνέχεια εμφανίζουμε τον χαρακτήρα χρησιμοποιώντας πίνακα emoji χρησιμοποιώντας τη συνάρτηση matrix.drawBitmap (). Μην ξεχάσετε να γράψετε "matrix.writeDisplay ()" μετά από κάθε μορφοποίηση, καθώς αυτή η λειτουργία θα εμφανίζει μόνο όλες τις μορφοποιήσεις που έχουν γίνει μέχρι τώρα στο matrix.

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

B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100

Αυτή η συμβολοσειρά στο Serial Monitor και μπορεί να δει τον χαρακτήρα στη μήτρα.

Τώρα, πρέπει να στείλουμε τα σειριακά δεδομένα αυτόματα από ένα λογισμικό όταν πατάμε το κουμπί "Εκτύπωση". Για να αυτοματοποιήσουμε αυτό, θα φτιάξουμε μια επίδειξη μήτρας 8x8 και θα παρέχουμε τη δυνατότητα στον χρήστη να επιλέξει ποια κελιά θα πρέπει να είναι έγχρωμα και στη συνέχεια το λογισμικό θα δημιουργήσει αυτόματα τον κώδικα και θα στείλει τα δεδομένα σειριακά στο Arduino σε μορφή συμβολοσειράς. Επέλεξα την Επεξεργασία για το υπόλοιπο της δουλειάς μου. Κατά την επεξεργασία, μπορούμε να δημιουργήσουμε έναν πίνακα χρησιμοποιώντας 64 κουμπιά (ορθογώνια με πατημένη λειτουργία) και μπορούμε να εκχωρήσουμε μια συγκεκριμένη τιμή και χρώμα στην αρχή (Ας είναι το λευκό χρώμα με τιμή 0). Τώρα κάθε φορά που πατάτε το κουμπί, μετατρέπουμε το χρώμα του κουμπιού σε μαύρο και ορίζουμε την τιμή στο 1. Εάν ο χρήστης πατήσει ξανά το ίδιο κουμπί, η τιμή του θα αλλάξει ξανά στο 0 και το χρώμα θα επανέλθει σε λευκό. Αυτό θα βοηθήσει τον χρήστη να αλλάξει τον κώδικα ξανά και ξανά εύκολα και μπορεί να κάνει εύκολα τροποποιήσεις χωρίς να διαγράψει ξανά ολόκληρο τον πίνακα. Με το κλικ του κουμπιού "Εκτύπωση", θα φτιάξουμε μια συμβολοσειρά παρόμοια με αυτήν που εμφανίζεται παραπάνω για την επίδειξη. Στη συνέχεια, η συμβολοσειρά θα σταλεί στη συγκεκριμένη σειριακή θύρα.

Μπορείτε να κατεβάσετε τον κωδικό επεξεργασίας από κάτω. Αυτός είναι ο πρώτος μου κωδικός στην επεξεργασία. Οι προτάσεις για τον ενισχυμένο τρόπο κωδικοποίησης εκτιμώνται ιδιαίτερα.

Μπορείτε να δείτε πώς μοιάζει το GUI και πώς δημιουργείται ο χαρακτήρας χρησιμοποιώντας το σύστημα. Δύσκολα θα χρειαστούν δευτερόλεπτα για να δημιουργηθεί ο ίδιος χαρακτήρας στη μήτρα.

Μπορείτε να κατεβάσετε τον κώδικα και τις εικόνες αυτού του έργου από το GitHub Repository μου.

Συνιστάται: