Πίνακας περιεχομένων:
- Βήμα 1: Τι είναι λοιπόν τα Shift Registers;
- Βήμα 2: Βασική καλωδίωση και λειτουργία
- Βήμα 3: Έργα
- Βήμα 4: Έργο 1 [pt 1]: Υλικό ελεγκτή οθόνης LED "2 Wire" Bargraph
- Βήμα 5: Έργο 1 [pt 2]: Λογισμικό ελεγκτή οθόνης LED Bargraph '2 Wire'
- Βήμα 6: Έργο 2: "2 Wire" 7 Segment Display Controller
- Βήμα 7: Έργο 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
- Βήμα 8: Έργο 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
- Βήμα 9: Συμπέρασμα
Βίντεο: Το 74HC164 Shift Register και το Arduino σας: 9 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:39
Οι καταχωρητές μετατόπισης είναι ένα πολύ σημαντικό μέρος της ψηφιακής λογικής, λειτουργούν ως κόλλα μεταξύ του παράλληλου και του σειριακού κόσμου. Μειώνουν τον αριθμό των καλωδίων, τη χρήση καρφιτσών και ακόμη βοηθούν στην απομάκρυνση του φορτίου από την CPU σας, διατηρώντας τα δεδομένα τους. Έρχονται σε διαφορετικά μεγέθη, με διαφορετικά μοντέλα για διαφορετικές χρήσεις και διαφορετικά χαρακτηριστικά. Αυτό που θα συζητήσω σήμερα είναι το 74HC164 8 bit, σειριακά παράλληλα έξω, μη κλειδωμένο, μητρώο αλλαγών. Γιατί; Λοιπόν για ένα είναι ένα από τα πιο βασικά καταχωρητικά βάρδια εκεί έξω, το οποίο κάνει πιο εύκολο να το μάθεις, αλλά έτυχε να είναι το μόνο που είχα (lol!) Αυτό το διδακτικό καλύπτει πώς λειτουργεί αυτό το τσιπ, πώς να το συνδέσετε, και συνδέστε το με ένα arduino που περιλαμβάνει μερικά δείγματα σκίτσων και κυκλωμάτων led. Ελπίζω να απολαύσετε όλοι!
Βήμα 1: Τι είναι λοιπόν τα Shift Registers;
Όπως αναφέρθηκε νωρίτερα, έρχονται σε όλες τις διαφορετικές γεύσεις και ανέφερα επίσης ότι χρησιμοποιώ 74HC164 8 bit, σειριακά παράλληλα έξω, μη κλειδωμένα, μητρώα βάρδιας τι σημαίνει αυτό;!; Πρώτον, το όνομα 74-σημαίνει ότι ανήκει στην οικογένεια λογικών 74xx και επειδή η λογική του δεν μπορεί να ελέγξει άμεσα το πολύ ρεύμα (16-20ma για ολόκληρο το τσιπ είναι συνηθισμένο), περνά μόνο σήματα γύρω, αλλά αυτό δεν σημαίνει αυτό το σήμα δεν πηγαίνει σε ένα τρανζίστορ που μπορεί να αλλάξει υψηλότερο φορτίο ρεύματος. HC σημαίνει ότι είναι μια συσκευή cmos υψηλής ταχύτητας, μπορείτε να διαβάσετε σχετικά στον παρακάτω σύνδεσμο, αλλά αυτό που βασικά πρέπει να γνωρίζετε είναι ότι είναι χαμηλό τροφοδοτικό και θα λειτουργεί από 2 έως 5 βολτ (οπότε αν χρησιμοποιείτε arduino 3,3 βολτ είναι εντάξει) Επίσης μπορεί να λειτουργήσει σωστά σε υψηλές ταχύτητες, το συγκεκριμένο τσιπ έχει τυπική ταχύτητα 78mhz, αλλά μπορείτε να πάτε τόσο αργά ή τόσο γρήγορα (έως ότου αρχίσει να κοροϊδεύει) όπως θέλετε Ένας καταχωρητής βάρδιας αποτελείται από κυκλώματα flip flop, ένα flip flop είναι 1 bit μνήμης, αυτό το ένα εκτάριο s 8 (ή 1 byte μνήμης). Δεδομένου ότι είναι μνήμη, εάν δεν χρειάζεται να ενημερώσετε το μητρώο, μπορείτε απλά να σταματήσετε να "μιλάτε" σε αυτό και θα παραμείνει σε όποια κατάσταση το αφήσατε, μέχρι να το "μιλήσετε" ξανά ή να επαναφέρετε την ισχύ. άλλοι καταχωρητές μετατόπισης λογικής σειράς 7400 μπορούν να μεταβούν σε σειριακή σειρά 16 bit παράλληλα. Αυτό σημαίνει ότι το arduino σας στέλνει δεδομένα σειριακά (σε παλμούς απενεργοποίησης το ένα μετά το άλλο) και ο καταχωρητής αλλαγής τοποθετεί κάθε bit στο σωστό pin pin εξόδου. Αυτό το μοντέλο απαιτεί μόνο 2 καλώδια για έλεγχο, ώστε να μπορείτε να χρησιμοποιήσετε 2 ψηφιακές ακίδες στο arduino και να τις σπάσετε σε άλλες 8 ψηφιακές εξόδους, ενώ άλλα μοντέλα είναι παράλληλα σε σειριακή έξοδο, κάνουν το ίδιο πράγμα αλλά ως είσοδοι στο arduino (για παράδειγμα ένα gamepad NES) μη κλειδωμένο Αυτό μπορεί να είναι μια πτώση αυτού του τσιπ εάν το χρειάζεστε. Καθώς τα δεδομένα εισέρχονται σε έναν καταχωρητή αλλαγής μέσω σειριακού, εμφανίζονται στον πρώτο πείρο εξόδου, όταν μπαίνει ένας παλμός ρολογιού, το πρώτο bit μετατοπίζεται πάνω από 1 θέση, δημιουργώντας ένα εφέ κύλισης στις εξόδους, για παράδειγμα το 00000001 θα εμφανιστεί στις εξόδους ως 101001000100001000001000000100000001Αν μιλάτε με άλλες λογικές συσκευές που μοιράζονται το ίδιο ρολόι και δεν το περιμένουν αυτό, θα μπορούσε να προκαλέσει προβλήματα. Οι καταχωρητές αλλαγής βάρους έχουν ένα επιπλέον σύνολο μνήμης, οπότε μόλις τελειώσουν τα δεδομένα εισάγοντας τον καταχωρητή, μπορείτε να αναστρέψετε έναν διακόπτη και να εμφανίσετε τις εξόδους, αλλά προσθέτει ένα άλλο καλώδιο, λογισμικό και πράγματα για να συμβαδίσετε. Στην περίπτωση αυτού του οδηγού ελέγχουμε τις οθόνες LED, το φαινόμενο κύλισης συμβαίνει τόσο γρήγορα που δεν μπορείτε να το δείτε (εκτός από την πρώτη ενεργοποίηση του τσιπ) και μόλις το byte βρίσκεται στον καταχωρητή βάρδιας δεν υπάρχει πλέον κύλιση Θα ελέγχουμε τον τύπο bargraph, 7 τμήμα, και μια μήτρα κουκκίδων 16LED 4x4 με αυτό το τσιπ και λογισμικό στο arduino χρησιμοποιώντας μόνο 2 ψηφιακές ακίδες (+ ισχύς και γείωση)
Βήμα 2: Βασική καλωδίωση και λειτουργία
Καλωδίωση Το 74HC164 είναι ένα τσιπ 14 ακίδων, έχει 4 ακίδες εισόδου, 8 ακίδες εξόδου, ισχύ και γείωση, οπότε ας ξεκινήσουμε από την κορυφή. Οι ακίδες 1 και 2 είναι και οι δύο σειριακές είσοδοι, ρυθμίζονται ως λογική AND πύλη, που σημαίνει ότι Και τα δύο πρέπει να είναι λογικά υψηλά (δηλ. 5 βολτ) προκειμένου το bit να θεωρείται ως 1, μια χαμηλή κατάσταση (0 βολτ) και στα δύο θα διαβάζεται ως μηδέν. Δεν το χρειαζόμαστε πραγματικά και είναι πιο εύκολο να το αντιμετωπίσουμε στο λογισμικό, οπότε επιλέξτε ένα και συνδέστε το στο V+, ώστε να διαβάζεται πάντα ψηλά. Επιλέγω να χρησιμοποιήσω έναν βραχυκυκλωτήρα από τον πείρο 1 έως τον ακροδέκτη 14 (V+), καθώς μπορείτε απλά να σκάσετε έναν βραχυκυκλωτήρα πάνω από το τσιπ. Η εναπομένουσα σειριακή είσοδος (το pin 2 στα σχήματά μου) θα μεταβεί στον ψηφιακό pin 2 του arduino. Οι ακίδες 3, 4, 5 και 6 του 74HC164 είναι τα πρώτα 4 byte εξόδου Το pin 7 συνδέεται με τη γείωση Μετάβαση προς τα δεξιά, pin 8 είναι ο ακροδέκτης ρολογιού, έτσι ο καταχωρητής αλλαγής γνωρίζει ότι το επόμενο σειριακό bit είναι έτοιμο για ανάγνωση, αυτό πρέπει να συνδεθεί με τον ψηφιακό ακροδέκτη 3 στο arduino. Το pin 9 είναι να καθαρίσει ολόκληρος ο καταχωρητής ταυτόχρονα, εάν μειωθεί, έχετε την επιλογή να το χρησιμοποιήσετε, αλλά τίποτα σε αυτό το αδιόρατο δεν το κάνει, γι 'αυτό συνδέστε το με τις καρφίτσες V+10, 11 12 και 13 είναι τα τελευταία 4 byte της εξόδου Το pin 14 είναι η ισχύς των τσιπ Λειτουργία Πρώτα πρέπει να ορίσετε τη σειριακή είσοδο του καταχωρητή (ψηφιακός ακροδέκτης 2 στο arduino) ψηλά ή χαμηλά, στη συνέχεια πρέπει να αναστρέψετε τον πείρο του ρολογιού (ψηφιακό pin 3) από χαμηλό σε υψηλό, ο καταχωρητής βάρδιας θα διαβάσει τα δεδομένα της σειριακής εισόδου και θα μετατοπίσει τους πείρους εξόδου κατά 1, επαναλάβετε 8 φορές και έχετε ορίσει και τις 8 εξόδους. Αυτό μπορεί να γίνει με το χέρι για βρόχους και ψηφιακές εγγραφές στο arduino IDE, αλλά από είναι μια πολύ κοινή επικοινωνία επιπέδου υλικού (SPI), έχουν μια ενιαία λειτουργία που το κάνει για εσάς. shiftOut (dataPin, clockPin, bitOrder, value) Απλώς πείτε του πού συνδέονται τα δεδομένα και οι ακίδες ρολογιού στο arduino, ποιος τρόπος αποστολής των δεδομένων και τι πρέπει να στείλετε, και φροντίζεται για εσάς (βολικό)
Βήμα 3: Έργα
Εντάξει, αρκετή διάλεξη και θεωρία, ας κάνουμε μερικά διασκεδαστικά πράγματα με αυτό το τσιπ! Υπάρχουν 3 έργα που πρέπει να δοκιμάσετε σε αυτό το διδακτικό, τα 2 πρώτα είναι εύκολα και μπορούν να ξεπεραστούν σε στιγμές. Η τρίτη, η μήτρα led 4x4, απαιτεί περισσότερο χρόνο και σκέψη για κατασκευή, λόγω της καλωδίωσης led. Λίστα μερών Project 1: Ελεγκτής οθόνης LED bargraph '2 Wire' 1 * 74HC164 Shift register1 * solderless breadboard1 * arduino, ή arduino συμβατό (5v) 1 * 330 ohm 1/4 watt αντίσταση 8 * κανονική έξοδο κόκκινων LED 12 * καλώδια jumper Project 2: '2 Wire' 7 segment controller display 1 * 74HC164 Shift Register 1 * solderless breadboard1 * arduino, ή arduino συμβατό (5v) Αντίσταση 1 * 330 ohm 1/4 watt 1 * κοινή κάθοδος επτά τμημάτων επίδειξης 9 * καλώδια βραχυκυκλωτήρων Project 3: '2 Wire' 4x4 led matrix display 1 * 74HC164 Shift register1 * arduino, ή arduino συμβατό (5v) 4 * 150 ohm 1 Αντίσταση 1/4 watt 8 * 1Kohm 1/8 watt αντίσταση (ή μεγαλύτερη) 8 * NpN τρανζίστορ (2n3904 ή καλύτερη) 16 * κανονική κόκκινη έξοδος LED είναι ένα μέσο για την κατασκευή της και ρυθμιζόμενη ισχύς 5 volt που μπορεί να χειριστεί 160+ma (μπορείτε ανάψτε όλα τα LED ταυτόχρονα σαν φως φρένων)
Βήμα 4: Έργο 1 [pt 1]: Υλικό ελεγκτή οθόνης LED "2 Wire" Bargraph
Συνδέστε το arduino και το shift shift σύμφωνα με το σχηματικό, έχω ήδη μια ένδειξη bargraph 10 τμημάτων έτοιμη για χρήση σε breadboard και αυτό είναι που θα δείτε στην εικόνα, αλλά μπορείτε να κάνετε το ίδιο με μεμονωμένα led στη δεύτερη σελίδα Ανέφερα ότι αυτές δεν ήταν συσκευές οδήγησης, ότι ήταν συσκευές λογικής, με μικροσκοπικές ποσότητες ρεύματος να μπορούν να περάσουν από αυτές. Για να εκτελέσετε 8 LED, ενώ διατηρείτε το κύκλωμα απλό και δεν μαγειρεύετε το μηχάνημα αλλαγής ταχυτήτων, απαιτεί να περιορίσουμε αρκετά το ρεύμα. Τα LED είναι ενσύρματα παράλληλα και μοιράζονται ένα κοινό έδαφος (κοινή κάθοδος), πριν μπείτε στο ρεύμα πρέπει να περάσουν από μια αντίσταση 330 ohm, περιορίζοντας τη συνολική ποσότητα ρεύματος που θα μπορούσαν να χρησιμοποιήσουν όλα τα LED στα 10ma (στα 5 βολτ). Αυτό αφήνει τα LED σε άρρωστη εμφάνιση, αλλά ανάβουν και έτσι λειτουργούν αυτό το παράδειγμα, για να οδηγήσετε τις λυχνίες LED στο σωστό ρεύμα, θα χρειαστεί να εισαγάγετε ένα τρανζίστορ όπου ο καταχωρητής αλλαγής ταχυτήτων μπορεί να ενεργοποιήσει / απενεργοποιήσει μια υψηλότερη πηγή ρεύματος (βλ. έργο 3) Ο πείρος δεδομένων του καταχωρητή αλλαγής ταχυτήτων (ακίδα 2) χρειάζεται για σύνδεση στο ψηφιακό pin arduino # 2 Ο ακροδέκτης ρολογιού του καταχωρητή shift (pin 8) πρέπει να συνδεθεί με τον ψηφιακό pin του arduino # 3
Βήμα 5: Έργο 1 [pt 2]: Λογισμικό ελεγκτή οθόνης LED Bargraph '2 Wire'
Παράδειγμα 1: Ανοίξτε το αρχείο "_164_bas_ex.pde" Μέσα στο arduino IDE, είναι ένα απλό σκίτσο που σας επιτρέπει να ορίσετε ενεργοποίηση ή απενεργοποίηση των LED στην οθόνη bargraphΟι πρώτες 2 γραμμές καθορίζουν τους αριθμούς pin που θα χρησιμοποιήσουμε για δεδομένα και ρολόι, I χρησιμοποιήστε το #define over const ακεραίο, το βρίσκω πιο εύκολο να το θυμάμαι και δεν υπάρχει κανένα πλεονέκτημα για το ένα ή το άλλο μετά τη σύνταξη #προσδιορίστε τα δεδομένα 2 #καθορίστε το ρολόι 3 στη συνέχεια είναι η λειτουργία κενής ρύθμισης, εκτελείται μόνο μία φορά, οπότε το arduino γυρίζει on, ρυθμίζει τον καταχωρητή βάρδιας και δεν έχει τίποτα άλλο να κάνει. Μέσα στη συνάρτηση void setup ορίζουμε το ρολόι και τις καρφίτσες δεδομένων ως ακροδέκτες OUTPUT, στη συνέχεια χρησιμοποιώντας τη συνάρτηση shiftOut στέλνουμε τα δεδομένα στο shift register void setup () {pinMode (clock, OUTPUT); // κάνει το pin ρολογιού pinMode εξόδου (δεδομένα, OUTPUT); // κάνει το pin των δεδομένων μια έξοδο shiftOut (δεδομένα, ρολόι, LSBFIRST, B10101010); // αποστολή αυτής της δυαδικής τιμής στον καταχωρητή shift} Στη συνάρτηση shiftOut μπορείτε να δείτε τα ορίσματά της τα δεδομένα είναι η καρφίτσα δεδομένων, το ρολόι είναι η καρφίτσα ρολογιού LSBFIRST αναφέρεται σε ποια σειρά βρίσκεται, όταν τη γράφετε με δυαδική σημειολογία (Bxxxxxxxx) την 7η Στο παρελθόν, το B είναι το μικρότερο σημαίνον bit Πρώτον, αυτό τροφοδοτείται πρώτα, έτσι καταλήγει στην τελευταία έξοδο όταν τροφοδοτηθούν και τα 8 bits in, δοκιμάστε να παίξετε με διαφορετικές τιμές για να ενεργοποιήσετε ή να απενεργοποιήσετε διαφορετικά μοτίβα και τέλος έναν κενό κενό βρόχο (γιατί τον χρειάζεστε ακόμα κι αν δεν τον χρησιμοποιείτε) void loop () {} // κενός βρόχος προς το παρόν Παράδειγμα 2: οι πρώτες 8 γραμμές είναι το ίδιο με τις πρώτες 8 γραμμές του πρώτου παραδείγματος, στην πραγματικότητα δεν θα αλλάξουν για κανένα άλλο έργο, οπότε #καθορίστε τα δεδομένα 2 #καθορίστε το ρολόι 3void setup () {pinMode (clock, OUTPUT); // κάνει το pin ρολογιού pinMode εξόδου (δεδομένα, OUTPUT); // κάνει την καρφίτσα δεδομένων μια έξοδο Αλλά τώρα στο void setup υπάρχει ένας αριθμός 8 για τον βρόχο, παίρνει ένα κενό byte και αλλάζει 1 bit κάθε φορά ξεκινώντας από το αριστερό bit και κινείται δεξιά. Αυτό είναι αντίστροφο από το πρώτο παράδειγμα όπου ξεκινήσαμε από το πιο δεξιό κομμάτι και δουλέψαμε αριστερά, αλλά χρησιμοποιώντας το MSBFIRST η συνάρτηση shift out στέλνει τα δεδομένα με τον σωστό τρόπο. Επίσης προσθέτουμε μια καθυστέρηση στον βρόχο for έτσι ώστε να επιβραδύνεται αρκετά για να είναι ορατός. για (int i = 0; i <8; ++ i) // για 0 - 7 do {shiftOut (δεδομένα, ρολόι, MSBFIRST, 1 << i); // bit μετατόπιση μιας λογικής υψηλής (1) τιμής κατά i καθυστέρηση (100). // καθυστέρηση 100ms διαφορετικά δεν θα μπορούσατε να το δείτε}} void loop () {} // κενό βρόχο για τώρα ανεβάστε το σενάριο και τώρα θα πρέπει να βλέπετε το bargraph να ανάβει κάθε φως ένα κάθε φορά
Βήμα 6: Έργο 2: "2 Wire" 7 Segment Display Controller
Κοιτάξτε το pinout της οθόνης των 7 τμημάτων σας (είχα μόνο ένα διπλό αλλά χρησιμοποιούσα μόνο το μισό) και χρησιμοποιήστε το παρακάτω σχέδιο για να συνδέσετε κάθε τμήμα στο σωστό δυαδικό ψηφίο στο shift registbitbit 1 = pin 3bit 2 = pin 4bit 3 = pin 5bit 4 = pin 6bit 5 = pin 10bit 6 = pin 11bit 7 = pin 12bit 8 = pin 13 (αν θέλετε να χρησιμοποιήσετε το δεκαδικό σημείο) Και η κάθοδος της οθόνης μέσω της αντίστασης 330ohm και τροφοδοσίας στη γη ανοίξτε τώρα το heft_seg_demo.pde στο arduino ID Πρώτα βλέπετε πού καθορίζουμε τα δεδομένα και τις καρφίτσες του ρολογιού #καθορίστε τα δεδομένα 2 #καθορίστε το ρολόι 3 Στη συνέχεια, ορίζουμε όλα τα μοτίβα χαρακτήρων σε δυαδικό σχήμα, αυτό είναι αρκετά εύκολο, κοιτάξτε το παρακάτω σχέδιο, εάν χρειάζεστε το μεσαίο τμήμα πληκτρολογήστε ένα, μετά χρειάζεστε το επάνω τμήμα, αν ναι πληκτρολογήστε ένα άλλο, συνεχίστε να το κάνετε μέχρι να καλύψετε και τα 8 τμήματα, παρατηρήστε ότι το πιο σωστό μου κομμάτι (bit 8) είναι πάντα 0, επειδή δεν ενεργοποιώ ποτέ το δεκαδικό σημείο. byte zero = B01111110; byte one = B00000110; byte two = B11011010; byte three = B11010110; byte four = B10100110; byte five = B11110100; byte six = B11111100; byte επτά = B01000110; byte οκτώ = B11111110 Στη συνέχεια, στο void setup ρυθμίζουμε τα δεδομένα και τις καρφίτσες του ρολογιού μας για έξοδο void setup () {pinMode (clock, OUTPUT); // κάνει το pin του ρολογιού pinMode εξόδου (δεδομένα, OUTPUT); // κάνει το pin των δεδομένων μια έξοδο3} στη συνέχεια στον κενό βρόχο χρησιμοποιούμε shiftOut για να εμφανίσουμε κάθε μοτίβο (αριθμό) περιμένουμε 1/2 του δευτερολέπτου και εμφανίζουμε το επόμενο, 0 έως 9, αφού γίνει στη λειτουργία του κενού βρόχου που θα μετρήσει 0-9 και επαναλάβετε για πάντα. void loop () {shiftOut (δεδομένα, ρολόι, LSBFIRST, μηδέν); καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, ένα). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, δύο). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, τρία). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, τέσσερα). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, πέντε). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, έξι). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, επτά). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, οκτώ). καθυστέρηση (500)? shiftOut (δεδομένα, ρολόι, LSBFIRST, εννέα). καθυστέρηση (500);}
Βήμα 7: Έργο 3 [pt 1]: '2 Wire' 4x4 Led Matrix Display
Το έργο μήτρας 4x4 LED είναι αρκετά πιο περίπλοκο, αλλά είναι σχεδόν όλα στην κατασκευή, επιλέγω να κάνω τη δική μου να κολληθεί σε σανίδα, αλλά θα πρέπει να είναι δυνατή η αναπαραγωγή της σε ένα breadboard, πολύ πιο μακριά. Το κύκλωμα επίσης διαφέρει στο ότι ο καταχωρητής μετατόπισης δεν οδηγεί άμεσα τα led, αλλά οι έξοδοι του καταχωρητή μεταφοράς αποστέλλονται μέσω αντίστασης 1Kohm στη βάση ενός τρανζίστορ NpN, όταν η έξοδος του bit είναι υψηλή, αφήνει αρκετό ρεύμα και τάση να περάσει στο τρανζίστορ για να αλλάξετε τη σύνδεση μεταξύ του συλλέκτη και του πομπού, οι συλλέκτες είναι συνδεδεμένοι με ένα "στιβαρό" ρυθμιζόμενο 5 βολτ. Οι εκπομπές των τρανζίστορ συνδέονται με αντιστάσεις 150 ohm και οι αντιστάσεις είναι συνδεδεμένες με τους ατράκτους των 4 led στη σειρά και περιορίζει τη σειρά στα 20ma, αν και κατά την κατάρτιση εικόνων στην οθόνη είναι μόνο 1 led ανά πάσα στιγμή, και ως εκ τούτου σχεδόν σε πλήρη φωτεινότητα (σχεδόν επειδή ενεργοποιούνται και απενεργοποιούνται πολύ γρήγορα για να σχηματίσουν ολόκληρη την εικόνα) Υπάρχουν 4 σειρές και 4 στήλες, η κάθε μία Η σειρά παίρνει μια αντίσταση και ένα τρανζίστορ, σε κάθε στήλη οι κάθοδοι των LED είναι δεμένες μεταξύ τους, πέφτουν στον συλλέκτη ενός τρανζίστορ, του οποίου η βάση ελέγχεται επίσης από τον καταχωρητή αλλαγής ταχυτήτων και τέλος στη γείωση. Μεγάλη έκδοση του σχηματικού www.instructables.com/files/orig/F7J/52X0/G1ZGOSRQ/F7J52X0G1ZGOSRQ.jpg
Βήμα 8: Έργο 3 [pt 2]: '2 Wire' 4x4 Led Matrix Display
Ο καταχωρητής μετατόπισης ελέγχει τόσο την άνοδο όσο και τις καθόδους των LED σε μορφή YX, κοιτάξτε το ακόλουθο bit 1 = στήλη 1 (δεξιά) bit 2 = στήλη 2bit 3 = στήλη 3bit 4 = στήλη 4bit 5 = γραμμή 1 (κορυφαίο) bit 6 = σειρά 2bit 7 = σειρά 3bit 8 = σειρά 4Για να κάνετε μια εικόνα να σχεδιάσετε ένα τετράγωνο 4x4 σε χαρτί γραφήματος και να συμπληρώσετε ποια θέλετε να εμφανίζονται, στη συνέχεια φτιάξτε έναν πίνακα YX. Παρακάτω θα δείτε μια αντιστοίχιση για μια παρομοίωση, καθώς και το καλύτερο που μπορείτε να κάνετε σε 4x4 "εικονοστοιχεία" Για κάθε συμπληρωμένη ενότητα γράφω σε ποια στήλη (Υ) είναι, στη συνέχεια σε ποια σειρά είναι (Χ) Τώρα ανοίξτε το αρχείο _4x4.pde στο arduino IDE θα δείτε τους παλιούς μας 2 φίλους #καθορίστε τα δεδομένα 2 #καθορίστε το ρολόι 3 και στη συνέχεια μια σειρά από ακέραιους αριθμούς int img = {1, 1, 4, 1, 1, 3, 4, 3, 2, 4, 3, 4}; Αν κοιτάξετε είναι απλώς μια λίστα με τις συντεταγμένες YX που έχω γράψει, θα ήταν μεγάλο πόνο να μετατρέψετε αυτές τις τιμές με το χέρι και έχουμε έναν υπολογιστή… αφήστε το να το κάνει! το ρολόι μας και οι ακίδες δεδομένων OUTPUTS void setup () {pinMode (clock, OUTPUT); // κάνει το pin του ρολογιού pinMode εξόδου (δεδομένα, OUTPUT); // να κάνει το pin των δεδομένων μια έξοδο3} Και ένα μπερδεμένο κενό βρόχο, για να ξεκινήσουμε τα πράγματα πρέπει να δηλώσουμε μερικές τοπικές μεταβλητές void loop () {int Y; int X; byte out? Στη συνέχεια, ένας βρόχος for, αυτός ο βρόχος πρέπει να είναι όσο ο αριθμός των καταχωρήσεων στον πίνακα img, για αυτήν την εικόνα χρησιμοποίησα μόνο 6 εικονοστοιχεία, έτσι ώστε να κάνει 12 συντεταγμένες YX. Το κάνω να παραλείπει κάθε άλλο αριθμό χρησιμοποιώντας i += 2, επειδή διαβάζουμε 2 συντεταγμένες ανά βρόχο για (int i = 0; i <12; i += 2) // αριθμός σημείων στον πίνακα img, αυτή η περίπτωση 12 {Τώρα διαβάζουμε την καταχώριση Υ στο του πίνακα και αφαιρούμε ένα από την τιμή του, επειδή τα byte δεν ξεκινούν από το ένα, ξεκινούν από το μηδέν, αλλά μετράμε από το 1 // παίρνουμε το πρώτο ζεύγος καλωδίων YX Y = (img - 1); // αφαιρέστε ένα δεδομένου ότι η καταμέτρηση των δυαδικών ψηφίων ξεκινά στο 0 Στη συνέχεια διαβάζουμε την καταχώρηση Χ στο [i + 1] του πίνακα και αφαιρούμε ένα από την τιμή του, για τον ίδιο λόγο X = (img [i + 1] - 1); Αφού έχουμε τις τιμές YX του εικονοστοιχείου, κάνουμε κάποιες δυαδικές ή μαθηματικές και μετατοπίζουμε προς τα αριστερά. Πρώτα πρέπει να διαβάσουμε την τιμή Χ και όποια κι αν είναι η τιμή της, την μετατοπίζουμε σε πολλά σημεία + 4, οπότε αν το Χ είναι 4 και προσθέστε 4 είναι bit 8 (MSB), κοιτάζοντας ξανά το γράφημα … bit 1 = στήλη 1 (δεξιά) bit 2 = στήλη 2bit 3 = στήλη 3bit 4 = στήλη 4bit 5 = γραμμή 1 (κορυφαίο) bit 6 = σειρά 2bit 7 = σειρά 3bit 8 = σειρά 4Bit 8 είναι η τελευταία σειρά Στη συνέχεια, η τιμή Y μετατοπίζεται επίσης προς τα αριστερά, αυτή τη φορά μόνο από μόνη της, τίποτα δεν προστίθεται. Τέλος, τα δύο είναι or'ed μαζί σε 1 byte αντί για 2 μισά bytes (τσιμπάει), χρησιμοποιώντας bitwise ή (το σύμβολο |) παίρνει δύο byte και τα προσθέτει βασικά μαζί, ας υποθέσουμε ότι X = 10000000Y = 00000001 -------------------- OR = 10000001row 4 στήλη 1 έξω = 1 << (X + 4) | 1 << Υ? Και, τέλος, αλλαγή του καταχωρητή βάρδιας στείλτε το πρώτα. shiftOut (δεδομένα, ρολόι, MSBFIRST, out); // μεταφέρετε το byte έξω στην καθυστέρηση καταχώρισης (1). // καθυστερήστε το να παραμείνει έτσι ώστε να έχει την ευκαιρία να αφήσει ένα σημείο φωτός στα μάτια σας Μη διστάσετε να δημιουργήσετε τις δικές σας εικόνες και εφέ, Υπάρχουν 3 δείγματα αρχείων, το χαμογελαστό πρόσωπο και μια σκακιέρα (που μοιάζει περισσότερο με λωρίδες), και τέλος ένας τυχαίος κατασκευαστής λάμψης
Βήμα 9: Συμπέρασμα
Πάνω απ 'όλα αυτό είναι ένα αρκετά εύχρηστο μικρό τσιπ και χαίρομαι που το αφαίρεσα από ένα παλιό κομμάτι ηλεκτρονικών που κατευθυνόταν στα σκουπίδια. Μπορεί να χρησιμοποιηθεί για άλλα πράγματα εκτός από τα συστήματα οθόνης, αλλά σε όλους αρέσουν τα φώτα και η άμεση ανατροφοδότηση Αυτό που συμβαίνει είναι εξαιρετικά χρήσιμο για τους οπτικούς στοχαστές όπως ο Ι. Επίσης, παρακαλώ συγχωρήστε τον κωδικό μου, είχα μόνο το arduino από την τρίτη εβδομάδα του Οκτωβρίου και ήταν μια αρκετά μεγάλη πορεία συντριβής. Αλλά αυτό είναι το σπουδαίο πράγμα για το σύστημα, αν κάθεσαι και δουλεύεις με αυτό, είναι γεμάτο από τακτοποιημένα χαρακτηριστικά που κάνουν τον έλεγχο του κόσμου με έναν μικροελεγκτή 8 bit αρκετά εύκολο να γίνει. Όπως πάντα οι ερωτήσεις και τα σχόλια είναι ευπρόσδεκτα, και ευχαριστώ για διαβάζοντας, ελπίζω να μάθατε πολλά
Συνιστάται:
Έλεγχος επίδειξης επτά τμημάτων χρησιμοποιώντας Arduino και 74HC595 Shift Register: 6 βήματα
Έλεγχος επίδειξης επτά τμημάτων χρησιμοποιώντας Arduino και 74HC595 Shift Register: Γεια, τι συμβαίνει, παιδιά! Akarsh εδώ από το CETech. Επτά οθόνες τμημάτων είναι καλό να δούμε και είναι πάντα ένα εύχρηστο εργαλείο για την εμφάνιση δεδομένων με τη μορφή ψηφίων, αλλά υπάρχει ένα μειονέκτημα σε αυτά, το οποίο είναι ότι όταν ελέγχουμε μια επίδειξη επτά τμημάτων σε πραγματικό
Arduino Με CD4015B Shift Register: 3 Βήματα
Arduino Με καταχωρητή αλλαγής CD4015B: Το CD4015B είναι ένας διπλός 4 σταδίου στατικός καταχωρητής αλλαγής ταχυτήτων με σειριακή είσοδο και παράλληλη έξοδο. Είναι ένα IC 16 ακίδων και περιέχει δύο πανομοιότυπους καταχωρητές 4 σταδίων με ανεξάρτητες εισόδους δεδομένων, ρολογιού και επαναφοράς. Το λογικό επίπεδο που υπάρχει στην είσοδο κάθε st
Διασύνδεση οθόνης 7 τμημάτων με Shift Register Χρησιμοποιώντας μικροελεγκτή CloudX: 5 βήματα
Διασύνδεση οθόνης 7 τμημάτων με Shift Register Χρησιμοποιώντας μικροελεγκτή CloudX: Σε αυτό το έργο δημοσιεύουμε ένα σεμινάριο για τον τρόπο διασύνδεσης επίδειξης LED επτά τμημάτων με τον μικροελεγκτή CloudX. Επτά οθόνες τμημάτων χρησιμοποιούνται σε πολλές ενσωματωμένες εφαρμογές συστήματος και βιομηχανικών εφαρμογών, όπου το εύρος των εξόδων που πρέπει να εμφανίζονται είναι γνωστό
Συνδέστε τις οδηγίες σας, τα θέματα του φόρουμ και τα αγαπημένα σας στο Twitter και το Facebook: 3 βήματα
Συνδέστε τις οδηγίες σας, τα θέματα του φόρουμ και τα αγαπημένα σας στο Twitter και το Facebook: Χρησιμοποιώντας τις ροές RSS από τον λογαριασμό σας και μερικές χρήσιμες ιστοσελίδες, μπορείτε να κοινοποιήσετε και να μοιραστείτε τις οδηγίες σας, θέματα φόρουμ, τα αγαπημένα σας και όλη την υπόλοιπη δραστηριότητά σας στο Οδηγίες προς το Facebook ή το Twitter. Αυτός είναι ένας πολύ καλός τρόπος
Χρήση LED Dot Matrix With Arduino και Shift Register: 5 Βήματα
Χρήση Dot Matrix LED Με Arduino και Shift Register: Το Siemens DLO7135 Dot matrix LED είναι ένα εκπληκτικό κομμάτι οπτοηλεκτρονικής. Τιμολογείται ως έξυπνη οθόνη 5x7 Dot Matrix (r) με μνήμη/αποκωδικοποιητή/πρόγραμμα οδήγησης. Μαζί με αυτήν τη μνήμη, διαθέτει οθόνη ASCII 96 χαρακτήρων με άνω και κάτω