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

5x4 LED Display Matrix Using a Basic Stamp 2 (bs2) and Charlieplexing: 7 Steps
5x4 LED Display Matrix Using a Basic Stamp 2 (bs2) and Charlieplexing: 7 Steps

Βίντεο: 5x4 LED Display Matrix Using a Basic Stamp 2 (bs2) and Charlieplexing: 7 Steps

Βίντεο: 5x4 LED Display Matrix Using a Basic Stamp 2 (bs2) and Charlieplexing: 7 Steps
Βίντεο: 5x4 LED Matrix Charlieplexing wtih Basic Stamp 2 (bs2) 2024, Ιούλιος
Anonim
5x4 LED Display Matrix Using a Basic Stamp 2 (bs2) and Charlieplexing
5x4 LED Display Matrix Using a Basic Stamp 2 (bs2) and Charlieplexing

Έχετε μια βασική σφραγίδα 2 και μερικές επιπλέον λυχνίες LED που κάθονται γύρω; Γιατί να μην παίξετε με την έννοια του charlieplexing και να δημιουργήσετε μια έξοδο χρησιμοποιώντας μόνο 5 ακίδες.

Για αυτό το διδακτικό θα χρησιμοποιήσω το BS2e αλλά οποιοδήποτε μέλος της οικογένειας BS2 πρέπει να δουλέψει.

Βήμα 1: Charlieplexing: Τι, γιατί και πώς

Ας πάρουμε πρώτα το γιατί. Γιατί να χρησιμοποιήσετε το charlieplexing με μια βασική σφραγίδα 2; --- Απόδειξη της ιδέας: Μάθετε πώς λειτουργεί το charlieplexing και μάθετε κάτι για το BS2. Αυτό μπορεί να μου φανεί χρήσιμο αργότερα χρησιμοποιώντας ταχύτερα τσιπ 8 ακίδων (μόνο 5 από αυτά θα είναι i/o).--- Χρήσιμος λόγος: Βασικά δεν υπάρχει. Το BS2 είναι πολύ αργό για εμφάνιση χωρίς αισθητή τρεμοπαίξιμο. Τι είναι το charlieplexing; --- Το Charlieplexing είναι μια μέθοδος οδήγησης μεγάλου αριθμού LED με μικρό αριθμό εισόδων μικροεπεξεργαστή. Έμαθα για το charlieplexing από το www.instructables.com και μπορείτε επίσης: Charlieplexing LEDs- The theory Πώς να οδηγήσετε πολλά LED από μερικές ακίδες μικροελεγκτή. Επίσης στη wikipedia: CharlieplexingΠώς μπορώ να οδηγήσω 20 led με 5 καρφίτσες i/o; --- Διαβάστε τους τρεις συνδέσμους στην ενότητα "Τι είναι το charlieplexing;". Αυτό το εξηγεί καλύτερα από ποτέ. Το Charlieplexing διαφέρει από την παραδοσιακή πολυπλεξία που χρειάζεται έναν πείρο εισόδου/εξόδου για κάθε σειρά και κάθε στήλη (αυτό θα ήταν συνολικά 9 ακίδες εισόδου/εξόδου για μια οθόνη 5/4).

Βήμα 2: Υλικό και σχηματικό

Υλικό και σχηματική
Υλικό και σχηματική

Λίστα υλικών: 1x - Βασική σφραγίδα 220x - δίοδοι εκπομπής φωτός (LED) ίδιου τύπου (πτώση χρώματος και τάσης) 5x - αντιστάσεις (βλ. Παρακάτω σχετικά με την τιμή της αντίστασης) Βοηθητικό/Προαιρετικό: Μέθοδος προγραμματισμού του BS2 σας Κινητικό κουμπί πίεσης ως διακόπτης επαναφοράς 6v -9vΤροφοδοσία ρεύματος ανάλογα με την έκδοση του BS2 (διαβάστε το εγχειρίδιό σας) Το Σχηματικό: Αυτό το σχήμα συνδυάζεται με τη μηχανική διάταξη που έχετε υπόψη σας. Θα δείτε το πλέγμα των LED που έχει ρυθμιστεί στα αριστερά, αυτός είναι ο προσανατολισμός για τον οποίο έχει γραφτεί ο κωδικός BS2. Παρατηρήστε ότι κάθε ζεύγος LED έχει την άνοδο συνδεδεμένη με την κάθοδο του άλλου. Στη συνέχεια συνδέονται με μία από τις πέντε ακίδες εισόδου/εξόδου. Τιμές αντίστασης: Θα πρέπει να υπολογίσετε τις δικές σας τιμές αντίστασης. Ελέγξτε το φύλλο δεδομένων για τα LED σας ή χρησιμοποιήστε τη ρύθμιση LED στο ψηφιακό σας πολύμετρο για να βρείτε την πτώση τάσης των LED σας. Ας κάνουμε μερικούς υπολογισμούς: Τάση τροφοδοσίας - Πτώση τάσης / Επιθυμητό ρεύμα = Τιμή αντίστασης του ρεύματος. Τα LED μου έχουν πτώση 1,6v και λειτουργούν στα 20ma.5v - 1.6v /.02amps = 155ohmsΓια να προστατέψετε το BS2 σας, θα πρέπει να χρησιμοποιήσετε την επόμενη υψηλότερη τιμή αντίστασης από αυτό που λαμβάνετε με τον υπολογισμό, σε αυτή την περίπτωση πιστεύω ότι θα ήταν 180ohms. Χρησιμοποίησα 220ohms επειδή ο πίνακας ανάπτυξης έχει αυτήν την τιμή αντίστασης ενσωματωμένη για κάθε πείρο εισόδου/εξόδου. ΣΗΜΕΙΩΣΗ: Πιστεύω ότι δεδομένου ότι υπάρχει αντίσταση σε κάθε πείρο, αυτό διπλασιάζει αποτελεσματικά την αντίσταση σε κάθε led, καθώς ο ένας πείρος είναι V+ και ο άλλος είναι Gnd. Εάν συμβαίνει αυτό, θα πρέπει να μειώσετε τις τιμές της αντίστασης στο μισό. Η αρνητική επίδραση της πολύ μεγάλης τιμής αντίστασης είναι μια φωτεινή ένδειξη LED. Μπορεί κάποιος να το επαληθεύσει και να μου αφήσει ένα PM ή ένα σχόλιο για να ενημερώσω αυτές τις πληροφορίες; Προγραμματισμός: Έχω χρησιμοποιήσει έναν πίνακα ανάπτυξης που έχει μια υποδοχή DB9 για να προγραμματίσει το τσιπ ακριβώς στον πίνακα. Χρησιμοποιώ επίσης αυτό το τσιπ στο ψωμί μου χωρίς συγκόλληση και έχω συμπεριλάβει μια επικεφαλίδα In Circuit Serial Programming (ICSP). Η κεφαλίδα είναι 5 ακίδες, οι ακίδες 2 έως 5 συνδέονται με τις καρφίτσες 2-5 σε σειριακό καλώδιο DB9 (η καρφίτσα 1 δεν χρησιμοποιείται). Λάβετε υπόψη ότι για να χρησιμοποιήσετε αυτήν την κεφαλίδα ICSP, οι ακίδες 6 και 7 στο καλώδιο DB9 πρέπει να είναι συνδεδεμένες μεταξύ τους. Επαναφορά: Ένα κουμπί στιγμιαίας επαναφοράς είναι προαιρετικό. Αυτό απλώς τραβάει τον πείρο 22 στη γείωση όταν πιέζεται.

Βήμα 3: Breadboarding

Breadboarding
Breadboarding
Breadboarding
Breadboarding

Τώρα είναι καιρός να χτίσουμε τη μήτρα σε μια σανίδα. Χρησιμοποίησα μια τερματική λωρίδα για να συνδέσω το ένα πόδι από κάθε ζεύγος led και ένα μικρό καλώδιο άλματος για να συνδέσω τα άλλα πόδια. Αυτό περιγράφεται λεπτομερώς στη φωτογραφία closeup και εξηγείται σε βάθος εδώ: 1. Προσανατολίστε το ψωμί σας για να ταιριάζει με τη μεγαλύτερη εικόνα2. Τοποθετήστε τη λυχνία LED 1 με την Άνοδο (+) προς εσάς και την Κάθοδο (-) μακριά από εσάς. Τοποθετήστε το LED 2 στον ίδιο προσανατολισμό με το Anode (+) στη συνδετική τερματική ταινία της καθόδου LED 1. Χρησιμοποιήστε ένα μικρό καλώδιο βραχυκυκλωτήρα για να συνδέσετε την άνοδο του LED 1 με την κάθοδο του LED 2.5. Επαναλάβετε μέχρι να προστεθεί κάθε ζεύγος LED στην πλακέτα. Χρησιμοποιώ αυτό που συνήθως θα ήταν οι λωρίδες διαύλου ισχύος της σανίδας ψωμιού ως λωρίδες διαύλου για τις ακίδες εισόδου/εξόδου BS2. Επειδή υπάρχουν μόνο 4 λωρίδες διαύλου, χρησιμοποιώ μια τερματική ταινία για το P4 (η πέμπτη σύνδεση εισόδου/εξόδου). Αυτό φαίνεται στη μεγαλύτερη εικόνα παρακάτω. Συνδέστε την τερματική ταινία για την κάθοδο LED 1 στη λωρίδα διαύλου P0. Επαναλάβετε για κάθε μονό αριθμημένο LED αντικαθιστώντας το κατάλληλο P* για κάθε ζεύγος (δείτε το σχηματικό).7. Συνδέστε την τερματική ταινία για την κάθοδο LED 2 στη λωρίδα διαύλου P1. Επαναλάβετε για κάθε μονό αριθμημένο LED αντικαθιστώντας το κατάλληλο P* για κάθε ζεύγος (δείτε το σχηματικό).8. Συνδέστε κάθε λωρίδα διαύλου στον κατάλληλο πείρο εισόδου/εξόδου στο BS2 (P0-P4).9. Ελέγξτε όλες τις συνδέσεις για να βεβαιωθείτε ότι ταιριάζουν με το σχηματικό.10. Γιορτάστε. ΣΗΜΕΙΩΣΗ: Στο κοντινό πλάνο θα δείτε ότι δεν φαίνεται ότι ακολούθησα το βήμα 7 καθώς η σύνδεση με τη δεύτερη ακίδα εισόδου/εξόδου είναι στην Άνοδο των περιττών αριθμημένων λυχνιών LED. Θυμηθείτε ότι η κάθοδος των ζυγών αριθμημένων λυχνιών LED είναι συνδεδεμένη με την άνοδο των μονών αριθμημένων λυχνιών LED, οπότε η σύνδεση είναι η ίδια με κάθε τρόπο. Εάν αυτή η σημείωση σας μπερδεύει, απλώς αγνοήστε την.

Βήμα 4: Βασικά Προγραμματισμός

Για να λειτουργήσει το charlieplex, ενεργοποιείτε μόνο ένα led κάθε φορά. Για να λειτουργήσει αυτό με το BS2 μας χρειαζόμαστε δύο βασικά βήματα: 1. Ορίστε τις λειτουργίες εξόδου για τις ακίδες χρησιμοποιώντας την εντολή OUTS. Πείτε στο BS2 ποιες καρφίτσες θα χρησιμοποιηθούν ως έξοδοι χρησιμοποιώντας την εντολή DIRS Προσπαθώντας να αναβοσβήνει η λυχνία LED 1. Αν κοιτάξετε το σχηματικό, μπορείτε να δείτε ότι το P0 είναι συνδεδεμένο με την κάθοδο (-) του LED 1 και το P1 είναι συνδεδεμένο με την άνοδο της ίδιας λυχνίας LED. Αυτό σημαίνει ότι θέλουμε να οδηγήσουμε P0 χαμηλά και P1 υψηλά. Αυτό μπορεί να γίνει ως εξής: "OUTS = % 11110" που οδηγεί το P4-P1 ψηλά και P0 χαμηλά. (% Υποδεικνύει ότι θα ακολουθήσει δυαδικός αριθμός. Το χαμηλότερο δυαδικό ψηφίο είναι πάντα στα δεξιά. 0 = ΧΑΜΗΛΟ, 1 = Υ HIGHΟΣ) Το BS2 αποθηκεύει αυτές τις πληροφορίες, αλλά δεν θα τις ενεργήσει μέχρι να δηλώσουμε ποιες καρφίτσες είναι έξοδοι. Αυτό το βήμα είναι βασικό καθώς μόνο δύο ακίδες πρέπει να είναι έξοδοι ταυτόχρονα. Τα υπόλοιπα πρέπει να είναι είσοδοι, που θέτουν αυτές τις ακίδες σε λειτουργία υψηλής αντίστασης, ώστε να μην βυθίζουν κανένα ρεύμα. Πρέπει να οδηγήσουμε τα P0 και P1, οπότε θα τα ορίσουμε σε εξόδους και τα υπόλοιπα σε εισόδους όπως: "DIRS = % 00011". (% Υποδεικνύει ότι θα ακολουθήσει δυαδικός αριθμός. Το χαμηλότερο δυαδικό ψηφίο είναι πάντα στα δεξιά. 0 = ΕΙΣΟΔΟΣ 1 P1 ως έξοδοι και P2-P4 ως είσοδοι PAUSE 250 'Παύση για να παραμείνει το LED στο DIRS = 0' Ρυθμίστε όλους τους πείρους στην είσοδο. Αυτό θα απενεργοποιήσει το LED PAUSE 250 'Pause για να παραμείνει σβηστό το LEDLOOP

Βήμα 5: Ο κύκλος ανάπτυξης

Τώρα που είδαμε έναν χρόνο λειτουργίας καρφιτσών για να βεβαιωθούμε ότι λειτουργούν όλοι.20led_Zig-Zag.bseΑυτός ο συνημμένος κώδικας θα πρέπει να φωτίζει κάθε ένα από τα 20 LEDS σε μοτίβο ζιγκ-ζαγκ. Θα παρατηρήσετε ότι αφού ανάψει ο κάθε πείρος χρησιμοποιώ το "DIRS = 0" για να μετατρέψω όλους τους πείρους σε εισόδους. Εάν αλλάξετε το OUTS χωρίς να απενεργοποιήσετε τους πείρους εξόδου, μπορεί να εμφανιστεί κάποιο "ghosting" όπου ένα led που δεν πρέπει να ανάβει μπορεί να αναβοσβήνει μεταξύ των κύκλων. Εάν αλλάξετε τη μεταβλητή W1 στην αρχή αυτού του κώδικα σε "W1 = 1" εκεί θα γίνει παύση μόνο 1 χιλιοστού του δευτερολέπτου μεταξύ κάθε αναλαμπής LED. Αυτό θα προκαλέσει ένα φαινόμενο εμμονής της όρασης (POV) που θα κάνει να φαίνεται ότι όλες οι λυχνίες LED είναι αναμμένες. Αυτό έχει το αποτέλεσμα να κάνει τα LED πιο αμυδρά, αλλά είναι η ουσία του τρόπου με τον οποίο θα εμφανίζουμε χαρακτήρες σε αυτήν τη μήτρα. LED σε ένα μοτίβο που μπορεί να χρησιμοποιηθεί. Αυτό το αρχείο είναι η πρώτη μου προσπάθεια. Θα δείτε ότι στο κάτω μέρος του αρχείου οι χαρακτήρες αποθηκεύονται σε τέσσερις γραμμές 5ψήφιων δυαδικών. Κάθε γραμμή διαβάζεται, αναλύεται και καλείται μια υπορουτίνα κάθε φορά που χρειάζεται να ανάψει ένα led. Αυτός ο κώδικας λειτουργεί, περνώντας από τους αριθμούς 1-0. Εάν προσπαθήσετε να το εκτελέσετε, παρατηρήστε ότι μαστίζεται από έναν πολύ αργό ρυθμό ανανέωσης προκαλώντας τους χαρακτήρες να αναβοσβήνουν σχεδόν πολύ αργά για να αναγνωριστούν. Αυτός ο κωδικός είναι κακός για πολλούς λόγους. Πρώτα απ 'όλα, πέντε ψηφία του δυαδικού καταλαμβάνουν το ίδιο χώρο στην EEPROM με 8 ψηφία του δυαδικού δεδομένου ότι όλες οι πληροφορίες αποθηκεύονται σε ομάδες των τεσσάρων δυαδικών ψηφίων. Δεύτερον, το SELECT CASE που χρησιμοποιείται για να αποφασίσει ποια ακίδα πρέπει να φωτιστεί απαιτεί 20 θήκες. Το BS2 περιορίζεται σε 16 περιπτώσεις ανά λειτουργία SELECT. Αυτό σημαίνει ότι έπρεπε να κάνω hack αυτόν τον περιορισμό με μια δήλωση IF-THEN-ELSE. Πρέπει να υπάρχει καλύτερος τρόπος. Μετά από μερικές ώρες ξύσιμο κεφαλιού το ανακάλυψα.

Βήμα 6: Ένας καλύτερος διερμηνέας

Κάθε σειρά της μήτρας μας αποτελείται από 4 LED, η κάθε μία μπορεί να είναι ενεργοποιημένη ή απενεργοποιημένη. Το BS2 αποθηκεύει πληροφορίες στο EEPROM του σε ομάδες των τεσσάρων bits. Αυτός ο συσχετισμός θα μας διευκολύνει πολύ. Εκτός από αυτό το γεγονός, τέσσερα bit αντιστοιχούν στους δεκαδικούς αριθμούς 0-15 για συνολικά 16 δυνατότητες. Αυτό καθιστά ή ΕΠΙΛΟΓΗ ΥΠΟΘΕΣΗΣ πολύ πιο εύκολη. Ακολουθεί ο αριθμός 7 όπως είναι αποθηκευμένος στο EEPROM: «7 %1111, %1001, %0010, %0100, %0100, Κάθε σειρά έχει δεκαδικό ισοδύναμο σε 0-15, οπότε διαβάζουμε πληκτρολογήστε από τη μνήμη και τροφοδοτήστε την απευθείας στη συνάρτηση SELECT CASE. Αυτό σημαίνει ότι ο αναγνώσιμος από τον άνθρωπο δυαδικός πίνακας που χρησιμοποιείται για τη δημιουργία κάθε χαρακτήρα (1 = led on, 0 = led off) είναι το κλειδί για τον διερμηνέα. Για να χρησιμοποιήσω την ίδια SELECT CASE για καθεμία από τις 5 σειρές, χρησιμοποίησα άλλη επιλεγμένη περίπτωση για να ορίσετε τα DIRS και OUTS ως μεταβλητές. Διάβασα πρώτα σε κάθε μία από τις πέντε γραμμές του χαρακτήρα στις μεταβλητές ROW1-ROW5. Στη συνέχεια, το κύριο πρόγραμμα καλεί το υποπρόγραμμα για να εμφανίσει τον χαρακτήρα. Αυτή η υπορουτίνα παίρνει την πρώτη σειρά και εκχωρεί τους τέσσερις πιθανούς συνδυασμούς OUTS σε μεταβλητή outp1-outp4 και τους δύο πιθανούς συνδυασμούς DIRS σε direc1 & direc2. Οι λυχνίες LED αναβοσβήνουν, ο μετρητής σειρών αυξάνεται και η ίδια διαδικασία εκτελείται για καθεμία από τις άλλες τέσσερις σειρές. Αυτό είναι πολύ γρηγορότερο από το πρώτο πρόγραμμα διερμηνέα. Τούτου λεχθέντος, υπάρχει ακόμα αξιοσημείωτο τρεμόπαιγμα. Ρίξτε μια ματιά στο βίντεο, η κάμερα κάνει το τρεμόπαιγμα να φαίνεται πολύ χειρότερο, αλλά καταλαβαίνετε την ιδέα. Η μεταφορά αυτής της ιδέας σε ένα πολύ γρηγορότερο τσιπ, όπως ένα picMicro ή ένα τσιπ AVR θα επέτρεπε την εμφάνιση αυτών των χαρακτήρων χωρίς αξιοσημείωτο τρεμόπαιγμα.

Βήμα 7: Πού να πάτε από εδώ

Δεν έχω μύλο cnc ή προμήθειες χάραξης για να φτιάξω πλακέτες, οπότε δεν θα κάνω καλωδίωση σε αυτό το έργο. Αν έχετε μύλο και ενδιαφέρεστε να συνεργαστείτε για να προχωρήσετε από εδώ, στείλτε μου ένα μήνυμα. Θα ήμουν ευτυχής να πληρώσω για υλικά και αποστολές ακόμη πιο χαρούμενος για να δείξω κάτι από ένα τελικό προϊόν για αυτό το έργο.

Άλλες δυνατότητες: 1. Μεταφέρετε αυτό σε άλλο τσιπ. Αυτός ο σχεδιασμός μήτρας μπορεί να χρησιμοποιηθεί με οποιοδήποτε τσιπ που διαθέτει 5 ακίδες εισόδου/εξόδου που είναι ικανές τριπλής κατάστασης (ακίδες που μπορεί να είναι υψηλές, χαμηλές ή εισόδους (υψηλή σύνθετη αντίσταση)). 2. Χρησιμοποιώντας ένα γρηγορότερο τσιπ (ίσως AVR ή picMicro) μπορείτε να αυξήσετε την κλίμακα. Με ένα τσιπ 20pin θα μπορούσατε να χρησιμοποιήσετε 14 καρφίτσες για να εμφανίσετε μια οθόνη 8x22 και να χρησιμοποιήσετε τις υπόλοιπες ακίδες για να λάβετε σειριακές εντολές από υπολογιστή ή άλλο χειριστήριο. Χρησιμοποιήστε άλλα τρία τσιπ 20 ακίδων και μπορείτε να έχετε μια οθόνη κύλισης 8x88 για συνολικά 11 χαρακτήρες ταυτόχρονα (ανάλογα φυσικά με το πλάτος κάθε χαρακτήρα). Καλή επιτυχία, καλή διασκέδαση!

Συνιστάται: