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

Χρήση LED Dot Matrix With Arduino και Shift Register: 5 Βήματα
Χρήση LED Dot Matrix With Arduino και Shift Register: 5 Βήματα

Βίντεο: Χρήση LED Dot Matrix With Arduino και Shift Register: 5 Βήματα

Βίντεο: Χρήση LED Dot Matrix With Arduino και Shift Register: 5 Βήματα
Βίντεο: 74HC595 Seven Segment 2 Digits LED Display with decimal points for Arduino 2024, Νοέμβριος
Anonim
Χρήση LED Dot Matrix Με Arduino και Shift Register
Χρήση LED Dot Matrix Με Arduino και Shift Register
Χρήση LED Dot Matrix Με Arduino και Shift Register
Χρήση LED Dot Matrix Με Arduino και Shift Register
Χρήση LED Dot Matrix Με Arduino και Shift Register
Χρήση LED Dot Matrix Με Arduino και Shift Register

Το Siemens DLO7135 Dot matrix LED είναι ένα εκπληκτικό κομμάτι οπτοηλεκτρονικής. Τιμολογείται ως έξυπνη οθόνη 5x7 Dot Matrix (r) με μνήμη/αποκωδικοποιητή/πρόγραμμα οδήγησης. Μαζί με αυτήν τη μνήμη, διαθέτει οθόνη ASCII 96 χαρακτήρων με κεφαλαία και πεζά γράμματα, ενσωματωμένη γεννήτρια χαρακτήρων και πολυπλέκτη, τέσσερα επίπεδα έντασης φωτός και όλα λειτουργούν με 5V. Αυτό είναι πολλά για να ζήσετε, και στα $ 16 το ποπ, σίγουρα θα έπρεπε. Ενώ περνούσα τη μισή μέρα στο αγαπημένο μου τοπικό κατάστημα ηλεκτρονικών ειδών, βρήκα έναν κάδο γεμάτο με 1,50 $ το τεμάχιο. Έφυγα από το κατάστημα με αρκετούς. Αυτό το διδακτικό θα σας δείξει πώς μπορείτε να συνδεθείτε με αυτά τα LED με κουκκίδες και να εμφανίσετε χαρακτήρες χρησιμοποιώντας ένα Arduino που βασίζεται σε AVR. Αν έχετε διαβάσει οποιονδήποτε από τους προηγούμενους οδηγούς μου, μπορεί να έχετε την ιδέα ότι είμαι συχνά υπέρ της πιο φειδωλής λύσης και δεν θα έχετε άδικο, ακόμη και αν κατά καιρούς υπολείπονται του στόχου Το Ως εκ τούτου, θα κάνω επίσης ένα άλλο βήμα σε αυτό το διδακτικό και θα σας δείξω πώς μπορείτε να μειώσετε τον αριθμό των θυρών εισόδου/εξόδου που απαιτούνται για να οδηγήσετε αυτά τα μεγάλα LED με πίνακες κουκκίδων.

Βήμα 1: Αποκτήστε τα αγαθά…

Πάρτε τα Αγαθά…
Πάρτε τα Αγαθά…

Για αυτό το σύντομο μικρό έργο, θα χρειαστείτε:

  • έναν μικροελεγκτή βασισμένο σε AVR, όπως ένα Arduino ή οποιοδήποτε άλλο παρόμοιο. Αυτές οι οδηγίες θα μπορούσαν πιθανώς να προσαρμοστούν στο MCU της επιλογής σας.
  • ένα LED DLO7135 dot matrix ή άλλο στην ίδια οικογένεια
  • έναν καταχωρητή αλλαγής 8 bit όπως το 74LS164, 74C299 ή 74HC594
  • μια σανίδα ψωμιού
  • σύρμα σύνδεσης, κόπτες σύρματος κ.λπ.

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

Βήμα 2: Συνδέστε απευθείας στην οθόνη LED

Συνδέστε απευθείας στην οθόνη LED
Συνδέστε απευθείας στην οθόνη LED
Συνδέστε απευθείας στην οθόνη LED
Συνδέστε απευθείας στην οθόνη LED
Συνδέστε απευθείας στην οθόνη LED
Συνδέστε απευθείας στην οθόνη LED

Σχεδιάστε τη μικρή λίστα με τα μέρη σας και πιάστε το LED. Τοποθετήστε το πάνω στο ψωμί με το κέντρο κάπως, περιπλανώνοντας το αυλάκι της μεσαίας γραμμής. Το πρώτο μέρος της σύνδεσης πραγματοποιείται στην αριστερή πλευρά του LED. Το pin #1 βρίσκεται πάνω αριστερά όπως υποδεικνύεται από το τρίγωνο/βέλος. Βάζω τις λειτουργίες καρφιτσών σε μια εικόνα για αναφορά σας καθώς διαβάζετε ή συνδέετε το LED σας.

Η αριστερή πλευρά

Θετικά και αρνητικά Ξεκινώντας από πάνω αριστερά, συνδέστε το Vcc σε 5V. Maybeσως είναι καλή ιδέα να μην τροφοδοτείτε τον πίνακα μέχρι να ολοκληρώσετε ολόκληρη την αριστερή πλευρά. η λυχνία LED μπορεί να είναι φωτεινή εάν προσπαθείτε να δείτε μικρές τρύπες να εισχωρήσουν στα καλώδια. Συνδέστε το κάτω αριστερό GND στη γείωση. Δοκιμή λαμπτήρα, ενεργοποίηση τσιπ και εγγραφή Το 2ο και το 3ο από πάνω στα αριστερά είναι το Lamp Test και το Chip Enable. Και οι δύο είναι αρνητική λογική, που σημαίνει ότι είναι ενεργοποιημένες όταν βρίσκονται στο λογικό 0 αντί για 1. Η εικόνα μου παρακάτω θα πρέπει να έχει μπάρες πάνω τους, αλλά δεν το σχολίασα για κανένα από αυτά. Ο ακροδέκτης LT όταν είναι ενεργοποιημένος ανάβει κάθε κουκκίδα στον πίνακα κουκίδων σε 1/7η φωτεινότητα. Είναι περισσότερο μια δοκιμή εικονοστοιχείων, αλλά το ενδιαφέρον με την καρφίτσα LT είναι ότι δεν αντικαθιστά κανέναν χαρακτήρα που υπάρχει στη μνήμη, οπότε αν έχετε αρκετούς από αυτούς μαζί (έχουν απόσταση προβολής 20 ποδιών), χαϊδεύοντας το LT μπορεί να το κάνει να μοιάζει με δρομέα. Για να διασφαλίσετε ότι είναι απενεργοποιημένο, συνδέστε το σε 5V. Οι ακίδες CE και WR είναι επίσης αρνητική λογική και πρέπει να είναι ενεργοποιημένες για την εγγραφή αυτής της έξυπνης συσκευής. Μπορείτε να κάνετε μικροδιαχείριση αυτών των ακίδων με εφεδρικές θύρες εισόδου/εξόδου στον μικροελεγκτή σας, αλλά δεν θα ασχοληθούμε εδώ. Απλώς συνδέστε τα στη γείωση για να παραμείνουν ενεργοποιημένα. Επίπεδα φωτεινότητας Υπάρχουν τέσσερα προγραμματιζόμενα επίπεδα φωτεινότητας στην οικογένεια LED DLO:

  • Κενό
  • 1/7 Φωτεινότητα
  • 1/2 Φωτεινότητα
  • Πλήρης Φωτεινότητα

Το BL1 HIGH και το BL0 LOW είναι 1/2 φωτεινότητα. Και τα δύο Υ HIGHΗΛΑ είναι πλήρης φωτεινότητα. Ρυθμίστε το σε ό, τι σας αρέσει. Και πάλι, εάν έχετε θύρες εισόδου/εξόδου που πρέπει να διαθέσετε και είναι αρκετά σημαντικές για εσάς, αυτό μπορεί επίσης να ελεγχθεί από το Arduino σας. Αυτό τυλίγει την αριστερή πλευρά. Εάν φέρετε ρεύμα στον πίνακα, θα πρέπει να δείτε το LED να ανάβει. Παίξτε με τα χειριστήρια φωτεινότητας και τη δοκιμή λάμπας για να εξοικειωθείτε με αυτό, αν είστε περίεργοι.

Η δεξιά πλευρά

Η δεξιά πλευρά αποτελείται από εξ ολοκλήρου θύρες δεδομένων. Κάτω δεξιά, ο ακροδέκτης 8 ή D0 για την ακρίβεια, αντιπροσωπεύει το Ελάχιστο Σημαντικό Μπιτ στον χαρακτήρα 7-bit. Επάνω δεξιά, ο ακροδέκτης 14 ή D6 αντιπροσωπεύει το πιο σημαντικό bit. Αυτό σας επιτρέπει να γνωρίζετε με ποια σειρά ανακατεύετε τα κομμάτια σας όταν γράφετε στο LED. Όταν έχετε συνδέσει τις θύρες εισόδου δεδομένων, βρείτε επτά άδειες ψηφιακές θύρες εισόδου/εξόδου στο Arduino ή το AVR και συνδέστε τις. Πιθανότατα θα θέλετε να θυμάστε ποια θύρα εξόδου δεδομένων στο AVR σας πηγαίνει σε ποια θύρα εισόδου δεδομένων στο LED. Τώρα είστε έτοιμοι να προωθήσετε κάποια δεδομένα σε αυτό το έξυπνο LED. Τρέμεις ακόμα από ενθουσιασμό; Ξέρω οτι είμαι…

Βήμα 3: Καθορισμός χαρακτήρα προς εμφάνιση

Καθορισμός χαρακτήρα προς εμφάνιση
Καθορισμός χαρακτήρα προς εμφάνιση

Το σύνολο χαρακτήρων που χρησιμοποιείται σε αυτό το LED CMOS είναι το ASCII που ξεκινάει από το μηχάνημα, ξεκινώντας από 0x20 (δεκαδικό 32, κενό διάστημα) και τελειώνει σε 0x7F (δεκαδικό 127, διαγραφή, αν και αντιπροσωπεύεται στο LED ως γραφικό δρομέα) Το Επομένως, η εμφάνιση ενός χαρακτήρα LED δεν συνεπάγεται τίποτα περισσότερο από το να πιέσετε το λογικό 1 ή 0 στις καρφίτσες εξόδου δεδομένων, συνήθως ακολουθείται από παλμό WR, αλλά το λέω για αυτήν την άσκηση. Έτσι, έχετε γράψει ή θυμήθηκες τι ακίδες πηγαίνουν σε τι λιμάνια, σωστά; Επέλεξα PD [2..7] και PB0 (ψηφιακές ακίδες 2 έως 8 στο Arduino-talk). Κανονικά δεν προτείνω τη χρήση PD [0..1] επειδή το αφιερώνω στη σειριακή επικοινωνία μου πίσω σε ένα κουτί FreeBSD και τους Arduino's et al. αντιστοιχίστε αυτούς τους ακροδέκτες στο κανάλι επικοινωνίας USB FTDI τους, και παρόλο που "αυτοί" λένε ότι οι καρφίτσες 0 και 1 θα λειτουργήσουν εάν δεν ξεκινήσετε σειριακή επικοινωνία, δεν μπόρεσα ποτέ να χρησιμοποιήσω αυτές τις ακίδες ως κανονικές ψηφιακές εισόδους/εξόδους. Στην πραγματικότητα, πέρασα δύο ημέρες προσπαθώντας να διορθώσω ένα πρόβλημα όταν προσπάθησα να χρησιμοποιήσω PD0 και PD1 και διαπίστωσα ότι ήταν πάντα Υ HIGHΗΛΑ. * ανασήκωσε τους ώμους* Πιθανότατα θα ήταν καλό να έχουμε κάποιο είδος εξωτερικής εισόδου, όπως ίσως ένα πληκτρολόγιο, έναν διακόπτη ώθησης ή έναν αντίχειρα, ή ίσως ακόμη και είσοδο από ένα τερματικό (το ArduinoTerm μου δεν είναι ακόμη έτοιμο για την πρώτη ώρα ακόμα…). Η επιλογή είναι δική σου. Προς το παρόν, απλώς θα δείξω πώς να πάρετε τον κώδικα για να αποκτήσετε τον χαρακτήρα που θέλετε στο LED. Υπάρχει ένα αρχείο zip για λήψη, συμπεριλαμβανομένου του πηγαίου κώδικα και του Makefile και υπάρχει επίσης μια ταινία μικρού μήκους που δείχνει το LED να εκτυπώνει το σύνολο χαρακτήρων του. Συγγνώμη για την άθλια ποιότητα του βίντεο. Ο παρακάτω κώδικας εκτυπώνει τη συμβολοσειρά "Welcome to my Instructable!" τότε περνάει ολόκληρο το σύνολο χαρακτήρων που υποστηρίζει το LED.

DDRD = 0xFF; // ΈξοδοςDDRB = (1 << DDB0); char msg = "Καλώς ορίσατε στο Instructable μου!"; uint8_t i; για (;;) {για (i = 0; i <27; i ++) {Print2LED (msg ); _delay_ms (150); } για (i = 0x20; i <0x80; i ++) {Print2LED (i); _delay_ms (150); } Print2LED (& apos*& apos);}Η έξοδος της θύρας λαμβάνεται υπόψη στη λειτουργία Print2Led ()

voidPrint2LED (uint8_t i) {PORTD = (i << 2); εάν (i & 0b01000000) PORTB = (1 <

Ο κωδικός και το Makefile περιλαμβάνονται σε ένα αρχείο zip παρακάτω.

Βήμα 4: Εξοικονομήστε θύρες εισόδου/εξόδου με μητρώο μετατόπισης

Εξοικονομήστε θύρες εισόδου/εξόδου με Shift Register
Εξοικονομήστε θύρες εισόδου/εξόδου με Shift Register
Εξοικονομήστε θύρες εισόδου/εξόδου με Shift Register
Εξοικονομήστε θύρες εισόδου/εξόδου με Shift Register
Εξοικονομήστε θύρες εισόδου/εξόδου με Shift Register
Εξοικονομήστε θύρες εισόδου/εξόδου με Shift Register

Έτσι, τώρα ο μικροελεγκτής μας μπορεί να στείλει δεδομένα στο LED της κουκκίδας, αλλά χρησιμοποιεί οκτώ θύρες εισόδου/εξόδου. Αυτό αποκλείει τη χρήση ενός ATtiny σε ένα πακέτο DIP 8 ακίδων, και ακόμη και με ένα νεότερο Arduino που διαθέτει ATmega328p που είναι πολλές θύρες εισόδου/εξόδου για ένα LED. Μπορούμε να το ξεπεράσουμε, ωστόσο, χρησιμοποιώντας ένα IC που ονομάζεται καταχωρητής βάρδιας. Μια στιγμή για να "αλλάξετε" ταχύτητες … Ένας καταχωρητής αλλαγής μπορεί να γίνει κατανοητός καλύτερα σκεπτόμενος τις δύο λέξεις που συνθέτουν το όνομά του: "shift" και "register". Η λέξη shift αναφέρεται στον τρόπο με τον οποίο τα δεδομένα κινούνται μέσω του καταχωρητή. Εδώ (όπως στο Arduino και στους μικροελεγκτές μας, γενικά) ένας καταχωρητής είναι μια τοποθεσία που περιέχει δεδομένα. Το κάνει αυτό εφαρμόζοντας μια γραμμική αλυσίδα ψηφιακών λογικών κυκλωμάτων που ονομάζεται "σαγιονάρες" που έχει δύο σταθερές καταστάσεις που μπορούν να αναπαρασταθούν είτε με 1 είτε 0. Έτσι, βάζοντας οκτώ σαγιονάρες μαζί έχετε μια συσκευή που μπορεί να συγκρατήσει και αντιπροσωπεύει ένα 8-bit byte. Ακριβώς όπως υπάρχουν διάφοροι τύποι σαγιονάρων και αρκετές παραλλαγές σε ένα θέμα των καταχωρητών βάρδιας (σκεφτείτε τους μετρητές πάνω/κάτω και τους μετρητές Johnson), υπάρχουν επίσης διάφοροι τύποι καταχωρητών αλλαγής με βάση τον τρόπο δεδομένων είναι κλειδωμένο στο μητρώο και πώς εξάγονται αυτά τα δεδομένα. Με βάση αυτό, λάβετε υπόψη τους ακόλουθους τύπους καταχωρητών βάρδιας:

  • Σειριακή είσοδος / παράλληλη έξοδος (SIPO)
  • Serial In / Serial Out (SISO)
  • Παράλληλη είσοδος/ σειριακή έξοδος (PISO)
  • Παράλληλη είσοδος / παράλληλη έξοδος (PIPO)

Δύο από αυτά είναι τα SIPO και PISO. Οι καταχωρητές SIPO λαμβάνουν δεδομένα σειριακά, δηλαδή το ένα μετά το άλλο, μεταθέτοντας το προηγούμενο bit εισαγωγής στο επόμενο flip flop και στέλνοντας τα δεδομένα σε όλες τις εισόδους ταυτόχρονα. Αυτό κάνει έναν ωραίο μετατροπέα σειρών σε παράλληλους. Αντίθετα, οι καταχωρητές μετατόπισης PISO έχουν παράλληλες εισόδους, οπότε όλα τα bit εισάγονται ταυτόχρονα, αλλά εξάγονται ένα κάθε φορά. Και μαντέψατε, αυτό κάνει έναν ωραίο παράλληλο με σειριακό μετατροπέα. Ο καταχωρητής βάρδιας που θέλουμε να χρησιμοποιήσουμε για να μειώσουμε τον αριθμό των ακίδων εισόδου/εξόδου θα μας επιτρέψει να πάρουμε αυτούς τους 8 ακροδέκτες IO που χρησιμοποιήσαμε νωρίτερα και να τους μειώσουμε σε έναν, ή ίσως μόνο σε δύο, λαμβάνοντας υπόψη ότι μπορεί να χρειαστεί να ελέγξουμε τον τρόπο εισαγωγής τα κομμάτια. Επομένως, ο καταχωρητής αλλαγής που θα χρησιμοποιήσουμε είναι Serial In / Parallel Out. Συνδέστε τον καταχωρητή βάρδιας μεταξύ της λυχνίας LED και του Arduino Η χρήση ενός καταχωρητή βάρδιας είναι εύκολη. Το πιο δύσκολο μέρος είναι να απεικονίσετε μόνο τις ακίδες εξόδου δεδομένων και πώς θα καταλήξουν τα δυαδικά ψηφία στο IC και πώς τελικά θα εμφανιστούν στο LED. Αφιερώστε λίγο χρόνο για να το σχεδιάσετε. 1. Συνδέστε το 5V στον πείρο 14 (πάνω δεξιά) και πάρτε τον πείρο 7 (κάτω αριστερά) προς τα κάτω στο έδαφος. Ο καταχωρητής αλλαγής έχει δύο σειριακές εισόδους, αλλά θα χρησιμοποιούμε μόνο μία, οπότε συνδέστε τον πείρο δύο στο 5V3. Δεν θα χρησιμοποιήσουμε το διαφανές pin (χρησιμοποιείται για να μηδενίσει όλες τις εξόδους), οπότε αφήστε το να επιπλέει ή επιτεθείτε στο 5V4. Συνδέστε μία ψηφιακή θύρα IO για να καρφιτσώσετε ένα από το μητρώο αλλαγής ταχυτήτων. Αυτό είναι το σειριακό pin.5. Συνδέστε μία ψηφιακή θύρα IO στο pin 8 (κάτω δεξιά). Αυτό είναι το pin του ρολογιού.6. Συνδέστε τις γραμμές δεδομένων σας από το Q0 στο Q6. Χρησιμοποιούμε μόνο 7 bit επειδή το σύνολο χαρακτήρων ASCII χρησιμοποιεί μόνο επτά bit. Χρησιμοποίησα το PD2 για την έξοδο των σειριακών μου δεδομένων και PD3 για το σήμα του ρολογιού. Για τις ακίδες δεδομένων, συνέδεσα το Q0 με το D6 στο LED και συνέχισα με αυτόν τον τρόπο (Q1 σε D5, Q2 σε D4, κλπ). Δεδομένου ότι στέλνουμε δεδομένα σειριακά, θα πρέπει να εξετάσουμε τη δυαδική αναπαράσταση κάθε χαρακτήρα που θέλουμε να στείλουμε, κοιτάζοντας 1 και 0 και βγάζοντας κάθε bit στη σειριακή γραμμή. Έχω συμπεριλάβει μια δεύτερη έκδοση της πηγής dotmatrixled.c μαζί με ένα Makefile παρακάτω. Κυκλοφορεί μέσα από το σύνολο χαρακτήρων και εμφανίζει όλους τους ζυγούς χαρακτήρες (αν είναι περίεργο να σκεφτείτε ότι ένα γράμμα μπορεί να είναι μονό ή ζυγό, σκεφτείτε τη δυαδική αναπαράσταση για μια στιγμή). Προσπαθήστε να καταλάβετε πώς να το κάνετε να εμφανίζεται σε όλους τους περίεργους χαρακτήρες. Μπορείτε να πειραματιστείτε περαιτέρω με τις συνδέσεις μεταξύ του καταχωρητή αλλαγής ταχυτήτων, του πίνακα LED και του Arduino. Υπάρχουν πολλές δυνατότητες ελέγχου μεταξύ της λυχνίας LED και του καταχωρητή που μπορούν να σας επιτρέψουν να ρυθμίσετε λεπτομερώς τον έλεγχό σας σχετικά με το πότε εμφανίζονται τα δεδομένα. Έτσι….έχουμε περάσει από την ανάγκη χρήσης οκτώ θυρών εισόδου/εξόδου σε δύο μόνο!

Βήμα 5: Περίληψη

Περίληψη
Περίληψη
Περίληψη
Περίληψη

Σε αυτό το διδακτικό, έχω παρουσιάσει το DLO7135 dot matrix LED και πώς να το κάνω να λειτουργεί. Έχω συζητήσει περαιτέρω πώς να μειώσω τον αριθμό των απαιτούμενων θυρών εισόδου/εξόδου από οκτώ σε δύο μόνο χρησιμοποιώντας έναν καταχωρητή βάρδιας. Το DLO7135 dot matrix LED μπορεί να συνδεθεί για να κάνει πολύ εντυπωσιακά και ενδιαφέροντα σημεία. Ελπίζω να διασκεδάσατε διαβάζοντας αυτό το διδακτικό! Εάν υπάρχουν κάποιες βελτιώσεις που νομίζετε ότι θα μπορούσα να κάνω ή προτάσεις που θα θέλατε να δώσετε σε αυτό ή σε οποιοδήποτε από τα "ελάφια" μου, χαίρομαι που τις ακούω! Καλό AVR'ing!

Συνιστάται: