Inhaltsverzeichnis:
- Ziele
- Erfahrung und Fähigkeiten
- Haftungsausschluss und Kredit
- Schritt 1: Teile
- Liste der Einzelteile
- Allgemeine Teile
- Spezifische hier verwendete Teile
- Hinweise zu Teilen
- Schritt 2: Die Matrix
- Konstruktionsüberlegungen
- Aufbau der Matrix
- Wichtig
- Schritt 3: Die Steuerungshardware
- Aufbau der Steuerungshardware
- Schritt 4: Software
- Der Trick
- Schieberegister: So geht's
- Adressierung des Displays
- Programmierung
- In Aktion
- Schritt 5: Modulare Konzepte
- Mathematik
- Kaskadierende Schieberegister
- Treiber für mehrere Reihen
- Zum Beispiel
- Schritt 6: Fazit
- Mögliche Ergänzungen
- Schritt 7: Nachfassen
- Leiterplattenfunktionen
- Montage
Video: LED-Matrix mit Schieberegistern - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:22
Dieses instructable soll eine vollständigere Erklärung sein als andere online verfügbar. Insbesondere wird dies mehr Hardware-Erläuterungen bieten, als in dem von led555 anweisbaren LED-Marquee verfügbar ist.
Ziele
Dieses anweisbare präsentiert die Konzepte, die mit Schieberegistern und High-Side-Treibern verbunden sind. Durch die Veranschaulichung dieser Konzepte mit einer 8x8 LED-Matrix hoffe ich, Ihnen die Werkzeuge zur Verfügung zu stellen, die Sie benötigen, um sich an die Größe und das Layout Ihres Projekts anzupassen und zu erweitern.
Erfahrung und Fähigkeiten
Ich würde dieses Projekt als mittelschwer einstufen:
- Wenn Sie bereits Erfahrung in der Programmierung von Mikrocontrollern und der Arbeit mit LEDs haben, sollte dieses Projekt für Sie ziemlich einfach zu vervollständigen und auf größere Lichtfelder zu skalieren sein.
- Wenn Sie gerade erst mit Mikrocontrollern anfangen und ein oder zwei LEDs geblinkt haben, sollten Sie dieses Projekt mit Hilfe unseres Freundes Google abschließen können.
- Wenn Sie wenig oder keine Erfahrung mit Mikrocontrollern oder der Programmierung haben, ist dies wahrscheinlich nicht das, worauf Sie sich einlassen sollten. Probieren Sie ein paar andere Anfängerprojekte aus und kommen Sie wieder, wenn Sie mehr Erfahrung beim Schreiben von Programmen für Mikrocontroller haben.
Haftungsausschluss und Kredit
Erstens bin ich kein Elektroingenieur. Wenn Sie feststellen, dass etwas falsch ist oder keine bewährte Methode ist, lassen Sie es mich bitte wissen und ich werde die Korrektur vornehmen. Tun Sie dies auf eigene Gefahr! Sie sollten wissen, was Sie tun, sonst können Sie Ihrem Computer, Ihrem Mikrocontroller und sogar sich selbst Schaden zufügen. Ich habe viel aus dem Internet gelernt, insbesondere aus den Foren unter: https://www.avrfreaks.net ein Schriftsatz, der mit der universellen C-Bibliothek ks0108 geliefert wurde. Überprüfen Sie das hier:
Schritt 1: Teile
Liste der Einzelteile
Allgemeine Teile
Um ein 8x8-Raster aus LEDs zu erstellen und zu steuern, benötigen Sie:
- 64 LEDs Ihrer Wahl
- 8 Widerstände für die LEDs
- 1 Schieberegister für die Spalten
- 1 Treiber-Array für die Zeilen
- 8 Widerstände zum Schalten des Treiberarrays
- 1 Mikrocontroller
- 1 Taktquelle für Mikrocontroller
- 1 Prototyping-Board
- 1 Netzteil
- Anschlusskabel
Spezifische hier verwendete Teile
Für dieses instructable habe ich Folgendes verwendet:
- 64 grüne LEDs (Mouser-Teilenummer 604-WP7113GD)
- 8 220 Ohm 1/4 Watt Widerstände für die LEDs (Mouser-Teil #660-CFS1/4CT52R221J)
- 1 HEF4794 LED-Treiber mit Schieberegister (Mouser-Teilenummer 771-HEF4794BPN)
- 1 mic2981 Hochspannungs-Hochstromquellentreiber-Array (Digikey-Teil Nr. 576-1158-ND)
- 8 3,3kOhm 1/4 Watt Widerstände zum Schalten des Treiberarrays (Radio Shack Teil #271-1328)
- 1 Atmel ATmega8 Mikrocontroller (Mouser-Teil #556-ATMEGA8-16PU)
- 1 12-MHz-Quarz für die Taktquelle des Mikrocontrollers (Mouser-Teil #815-AB-12-B2)
- 1 2200-Loch-Prototyping-Platine (Radio Shack Teil #276-147)
- Konvertiertes ATX-Netzteil: Siehe diese Anleitung
- 22-awg-Anschlusskabel mit festem Kern (Radio Shack Teil Nr. 278-1221)
- Lötfreies Steckbrett (Radio Shack Teil #276-169 (nicht mehr verfügbar, versuchen Sie es: 276-002)
- AVR Dragon (Mouser-Teil Nr. 556-ATAVRDRAGON)
- Dragon Rider 500 von Ecros Technologies: Siehe diese Anleitung
Hinweise zu Teilen
Zeilen- und Spaltentreiber: Der wahrscheinlich schwierigste Teil dieses Projekts ist die Auswahl der Zeilen- und Spaltentreiber. Zunächst einmal glaube ich nicht, dass ein Standard-Schieberegister 74HC595 hier eine gute Idee ist, da sie die Art von Strom nicht verarbeiten können, die wir durch die LEDs senden möchten. Aus diesem Grund habe ich den Treiber HEF4794 gewählt, da er den vorhandenen Strom leicht senken kann, wenn alle 8 LEDs in einer Reihe eingeschaltet sind. Das Schieberegister befindet sich auf der Low-Side (dem Massestift der LEDs). Wir benötigen einen Zeilentreiber, der genug Strom liefern kann, um mehrere Spalten aneinanderzureihen. Das mic2981 kann bis zu 500mA liefern. Das einzige andere Teil, das ich gefunden habe, das diese Aufgabe erfüllt, ist das UDN2981 (Digikey-Teil #620-1120-ND), das dasselbe Teil von einem anderen Hersteller ist. Bitte senden Sie mir eine Nachricht, wenn Sie andere High-Side-Treiber kennen, die in dieser Anwendung gut funktionieren würden. LED-Matrix: Diese Matrix ist 8x8, da die Zeilen- und Spaltentreiber jeweils 8 Pins haben. Ein größeres LED-Array kann durch Aneinanderreihen mehrerer Matrizen aufgebaut werden und wird im Schritt "Modulare Konzepte" diskutiert. Wenn Sie ein großes Array wünschen, bestellen Sie alle benötigten Teile auf einmal. Es sind 8x8, 5x7 und 5x8 LED-Matrizen in einem praktischen Paket erhältlich. Diese sollten leicht für eine DIY-Matrix zu ersetzen sein. Ebay ist eine gute Quelle dafür. Mouser bietet einige 5x7-Einheiten an, z. B. Teil #604-TA12-11GWA. Ich habe billige grüne LEDs verwendet, weil ich nur herumspiele und Spaß habe. Wenn Sie mehr für hochhelle, hocheffiziente LEDs ausgeben, können Sie ein viel spektakuläreres Display erzielen … das ist jedoch gut genug für mich! Steuerungshardware: Die Matrix wird von einem Atmel AVR-Mikrocontroller gesteuert. Dazu benötigen Sie einen Programmierer. Da ich Prototypen bin, verwende ich den Dragon Rider 500, für den ich sowohl Montage- als auch Gebrauchsanleitungen geschrieben habe. Dies ist ein einfaches Werkzeug für das Prototyping und ich kann es nur empfehlen.
Schritt 2: Die Matrix
Ich werde für dieses Projekt meine eigene LED-Matrix mit 5 mm LEDs und einem Prototyping-Board von Radio Shack bauen. Es sollte beachtet werden, dass Sie 8x8-Punktmatrix-LED-Module von verschiedenen Quellen kaufen können, einschließlich ebay. Sie sollten mit diesem instructable gut funktionieren.
Konstruktionsüberlegungen
AusrichtungDie LEDs müssen so ausgerichtet werden, dass sie im gleichen Winkel in die gleiche Richtung zeigen. Ich fand die einfachste Möglichkeit für mich, den Körper der LED bündig auf die Platine zu legen und dort mit einem kleinen Stück Plexiglas und einer Klemme zu halten. Ich habe ein paar LEDs ein paar Zentimeter von der Reihe entfernt, an der ich arbeitete, angebracht, um sicherzustellen, dass das Plexiglas parallel zur Prototyping-Platine war. Reihen und Spalten Wir benötigen eine gemeinsame Verbindung für jede Reihe sowie jede Spalte. Aufgrund unserer Zeilen- und Spaltentreiberauswahl müssen wir die Anode (positive Leitung der LED) zeilenweise und die Kathode (negative Leitung der LED) spaltenweise verbinden. SteuerdrähteFür diesen Prototyp verwende ich Festkern (Einzelleiter) Anschlussdraht. Dies ist sehr einfach mit einem lötfreien Steckbrett zu verbinden. Sie können gerne einen anderen Steckertyp verwenden, der zu Ihrem Projekt passt.
Aufbau der Matrix
1. Platzieren Sie die erste LED-Säule in der Prototyping-Platine.2. Überprüfen Sie noch einmal, ob Ihre Polarität für jede LED korrekt ist. Dies wird sehr schwer zu beheben sein, wenn Sie es später bemerken.3. Löten Sie beide Leitungen der LED auf die Platine. Stellen Sie sicher, dass sie richtig ausgerichtet sind (nicht in seltsamen Winkeln) und klemmen Sie die Kathodenleitungen ab. Stellen Sie sicher, dass Sie das Anodenkabel nicht abklemmen, wir werden es später brauchen, also lassen Sie es einfach nach oben zeigen.4. Entfernen Sie die Isolierung von einem Stück massivem Kerndraht. Löten Sie dieses Stück Draht an jede Kathode direkt auf Platinenebene.
- Ich heftete dies an jedem Ende an, ging dann zurück und fügte an jeder Verbindung ein bisschen Lötmittel hinzu.
- Dieser Draht sollte an Ihrer letzten LED vorbeilaufen, um eine einfache Schnittstelle zu gewährleisten, wenn wir Steuerdrähte hinzufügen.
5. Wiederholen Sie die Teile 1-4, bis Sie alle LEDs an Ort und Stelle und alle Säulenbusse gelötet haben.6. Um einen Reihenbus zu erstellen, biegen Sie mehrere der Anodenleitungen in einem 90-Grad-Winkel, sodass sie die anderen Anodenleitungen in derselben Reihe berühren.
- Detaillierte Bilder dazu gibt es weiter unten.
- Achten Sie darauf, dass diese nicht mit den Säulenbussen in Berührung kommen und einen Kurzschluss verursachen.
7. Löten Sie die Leitungen an jeder Verbindung und klemmen Sie die überschüssigen Anodenleitungen ab.
Lassen Sie die letzte Anode hinter der letzten LED kleben. Dies wird verwendet, um die Steuerkabel des Reihentreibers anzuschließen
8. Wiederholen Sie die Teile 6 und 7, bis alle Reihenbusse gelötet sind.9. Steuerkabel anbringen.
- Ich habe roten Vollkerndraht für die Zeilen und schwarz für die Spalten verwendet.
- Schließen Sie einen Draht für jede Spalte und einen für jede Reihe an. Dies kann problemlos am Ende jedes Busses erfolgen.
Wichtig
Diese LED-Matrix hat keine Strombegrenzungswiderstände. Wenn Sie dies ohne Widerstände testen, werden Sie wahrscheinlich Ihre LEDs durchbrennen und all diese Arbeit wird umsonst sein.
Schritt 3: Die Steuerungshardware
Wir müssen die Spalten und Zeilen unserer LED-Matrix steuern. Die Matrix wurde so konstruiert, dass die Anoden (Spannungsseite der LED) die Zeilen bilden und die Kathoden (Masseseite der LED) die Spalten bilden. Dies bedeutet, dass unser Zeilentreiber Strom liefern und unser Spaltentreiber ihn senken muss. Um Pins zu sparen, verwende ich ein Schieberegister, um die Spalten zu steuern. Auf diese Weise kann ich mit nur vier Mikrocontroller-Pins eine fast unbegrenzte Anzahl von Spalten ansteuern. Es ist möglich, nur drei zu verwenden, wenn der Enable Output-Pin direkt mit Spannung verbunden ist. Ich habe den HEF4794 LED-Treiber mit Schieberegister ausgewählt. Dies ist eine bessere Option als ein Standard 74HC595, da er den vorhandenen Strom leicht senken kann, wenn alle 8 LEDs gleichzeitig leuchten. Auf der hohen Seite (Stromquelle für die Reihen) verwende ich ein mic2981. Der Schaltplan zeigt einen UDN2981, ich glaube, diese beiden sind austauschbar. Dieser Treiber kann bis zu 500 mA Strom liefern. Da wir jeweils nur 1 Zeile ansteuern, bietet dies viele Erweiterungsmöglichkeiten, bis zu 33 Spalten für diesen Chip (mehr dazu im Schritt "Modulare Konzepte").
Aufbau der Steuerungshardware
Für dieses instructable habe ich gerade diese Schaltung gebohrt. Für eine dauerhaftere Lösung möchten Sie entweder Ihre eigene Leiterplatte ätzen oder Prototyping-Board verwenden.1. Reihenfahrer
- Platzieren Sie das mic2981 (oder UDN2981) im Steckbrett
- Verbinden Sie Pin 9 mit Spannung (Dies ist im Schaltplan verwirrend)
- Verbinden Sie Pin 10 mit Masse (Dies ist im Schaltplan verwirrend)
- fügen Sie 3k3-Widerstände ein, die an die Pins 1-8 angeschlossen sind
- Verbinden Sie Port D des ATmega8 (PD0-PD8) mit den 8 Widerständen
- Verbinden Sie die 8-reihigen Steuerdrähte der LED-Matrix mit den Pins 11-18 (beachten Sie, dass ich die unterste Reihe von LEDs mit Pin 18 und die höchste Reihe mit Pin 11 verbunden habe).
2. Säulentreiber
- Legen Sie den hef4794 in das Steckbrett
- Verbinden Sie Pin 16 mit Spannung
- Verbinden Sie Pin 8 mit Masse
- Schließen Sie 220-Ohm-Widerstände an die Pins 4-7 und 11-14 an.
- Verbinden Sie die 8 Spaltensteuerdrähte von der LED-Matrix mit den 8 Widerständen, die Sie gerade angeschlossen haben.
- Verbinden Sie Pin1 (Latch) mit PC0 des ATmega8
- Verbinden Sie Pin2 (Daten) mit PC1 des ATmega8
- Verbinden Sie Pin3 (Uhr) mit PC2 des ATmega8
- Verbinden Sie Pin15 (Enable Output) mit PC3 des ATmega8
3. Uhrkristall
Schließen Sie einen 12-MHz-Quarz an und laden Sie die Kondensatoren wie im Schaltplan gezeigt
4. ISP
Schließen Sie den Programmierkopf wie im Schaltplan gezeigt an
5. Filterkondensator und Pull-up-Widerstand
- Filtern Sie am besten die dem ATmega8 zugeführte Spannung. Verwenden Sie einen 0.1uf Kondensator zwischen Pin 7 & 8 des ATmega8
- Der Reset-Pin sollte nicht schwebend gelassen werden, da er zufällige Resets verursachen kann. Verwenden Sie einen Widerstand, um es an Spannung anzuschließen, alles über 1k sollte gut sein. Ich habe im Schaltplan einen 10k-Widerstand verwendet.
6. Stellen Sie sicher, dass Sie +5V geregelten Strom verwenden. Es liegt an Ihnen, den Regler zu entwerfen.
Schritt 4: Software
Der Trick
Ja, wie bei allem gibt es einen Trick. Der Trick ist, dass nie mehr als 8 LEDs gleichzeitig leuchten. Damit dies gut funktioniert, ist ein wenig schlaue Programmierung erforderlich. Das Konzept, das ich gewählt habe, ist die Verwendung eines Timer-Interrupts. So funktioniert der Display-Interrupt im Klartext:
- Der Timer zählt bis zu einem bestimmten Punkt, bei dessen Erreichen die Interrupt-Service-Routine ausgeführt wird.
- Diese Routine entscheidet, welche Zeile als nächstes angezeigt werden soll.
- Die Informationen für die nächste Zeile werden aus einem Puffer nachgeschlagen und in den Spaltentreiber verschoben (diese Informationen sind nicht "zwischengespeichert" und werden daher noch nicht angezeigt).
- Der Reihentreiber ist ausgeschaltet, derzeit leuchten keine LEDs.
- Der Spaltentreiber ist "gelatcht" um in den von uns in zwei Schritten verschobenen Informationen die aktuellen Informationen anzuzeigen.
- Der Zeilentreiber liefert dann Strom für die neue Zeile, die wir anzeigen.
- Die Interrupt-Service-Routine endet und das Programm kehrt bis zum nächsten Interrupt zum normalen Fluss zurück.
Dies geschieht sehr sehr schnell. Der Interrupt wird alle 1 ms ausgelöst. Dies bedeutet, dass wir die gesamte Anzeige etwa alle 8 ms aktualisieren. Dies bedeutet eine Anzeigerate von etwa 125 Hz. Es gibt einige Bedenken hinsichtlich der Helligkeit, da wir die LEDs im Wesentlichen mit einem 1/8-Arbeitszyklus betreiben (sie sind 7/8 der Zeit ausgeschaltet). In meinem Fall erhalte ich ein ausreichend helles Display ohne sichtbares Blinken. Die volle LED-Anzeige ist in einem Array abgebildet. Zwischen Interrupts kann das Array geändert werden (Atomizität beachten) und wird beim nächsten Interrupt auf dem Display angezeigt von diesem instructable. Ich habe den Quellcode (in C geschrieben und mit AVR-GCC kompiliert) sowie die Hex-Datei zum direkten Programmieren eingefügt. Ich habe den gesamten Code kommentiert, damit Sie dies verwenden können, um alle Fragen zum Einlesen von Daten in das Schieberegister und zur Funktionsweise der Zeilenaktualisierung zu klären. Bitte beachten Sie, dass ich eine Schriftartdatei verwende, die mit dem ks0108 universelle C-Bibliothek. Diese Bibliothek finden Sie hier:
Schieberegister: So geht's
Ich habe beschlossen, ein wenig darüber hinzuzufügen, wie man mit Schieberegistern programmiert. Ich hoffe, dies klärt die Dinge für diejenigen, die noch nicht damit gearbeitet haben. Was sie tunSchieberegister nehmen ein Signal von einem Draht und geben diese Informationen an viele verschiedene Pins aus. In diesem Fall gibt es eine Datenleitung, die die Daten aufnimmt und 8 Pins, die abhängig von den empfangenen Daten gesteuert werden. Um die Sache zu verbessern, gibt es für jedes Schieberegister einen Ausgangspin, der mit dem Eingangspin eines anderen Schieberegisters verbunden werden kann. Dies wird als Kaskadierung bezeichnet und macht das Erweiterungspotential nahezu unbegrenzt. Die SteuerpinsSchieberegister haben 4 Steuerpins:
- Latch - Dieser Pin teilt dem Schieberegister mit, wann es Zeit ist, auf neu eingegebene Daten umzuschalten
- Daten - Die Einsen und Nullen, die dem Schieberegister mitteilen, welche Pins aktiviert werden sollen, werden an diesem Pin empfangen.
- Clock - Dies ist ein vom Mikrocontroller gesendeter Impuls, der das Schieberegister anweist, Daten zu lesen und zum nächsten Schritt im Kommunikationsprozess zu wechseln
- Ausgang aktivieren - Dies ist ein Ein/Aus-Schalter, High=On, Low=Off
Machen Sie es Ihren Geboten:Hier ist ein Crash-Kurs in der Bedienung der oben genannten Steuerstifte:Schritt 1: Setzen Sie Latch, Data und Clock auf niedrig
Das Setzen des Latch auf einen niedrigen Wert teilt dem Schieberegister mit, dass wir darauf schreiben werden
Schritt 2: Setzen Sie den Data-Pin auf den Logikwert, den Sie an das Schieberegister senden möchten Schritt 3: Setzen Sie den Clock-Pin auf hoch und weisen Sie das Schieberegister an, den aktuellen Daten-Pin-Wert einzulesen
Alle anderen Werte, die sich derzeit im Schieberegister befinden, werden um 1 Stelle verschoben, wodurch Platz für den aktuellen logischen Wert des Datenpins geschaffen wird
Schritt 4: Setzen Sie den Clock-Pin auf Low und wiederholen Sie die Schritte 2 und 3, bis alle Daten an das Schieberegister gesendet wurden.
Der Clock-Pin muss auf Low gesetzt werden, bevor zum nächsten Datenwert gewechselt wird. Das Umschalten dieses Pins zwischen High und Low erzeugt den "Taktimpuls", den das Schieberegister wissen muss, wann es zum nächsten Schritt im Prozess übergehen muss
Schritt 5: Latch hoch einstellen
Dies weist das Schieberegister an, alle eingeschobenen Daten zu nehmen und sie zum Aktivieren der Ausgangspins zu verwenden. Dies bedeutet, dass Sie keine Daten sehen, während sie sich verschieben; keine Änderung an den Ausgangspins erfolgt, bis der Latch auf hoch gesetzt ist
Schritt 6: Aktivieren Sie den Ausgang hoch
- Es erfolgt keine Pin-Ausgabe, bis Enable Output auf High gesetzt ist, egal was mit den anderen drei Steuerpins passiert.
- Dieser Pin kann immer hoch gelassen werden, wenn Sie möchten
KaskadierungEs gibt zwei Pins, die Sie für die Kaskadierung verwenden können, Os und Os1. Os ist für schnell ansteigende Takte und Os1 ist für langsam ansteigende Takte. Haken Sie diesen Pin an den Datenpin des nächsten Schieberegisters und der Überlauf von diesem Chip wird in den nächsten eingetragen. Ende des Updates
Adressierung des Displays
Im Beispielprogramm habe ich ein Array von 8 Bytes namens row_buffer erstellt. Jedes Byte entspricht einer Zeile der 8x8-Anzeige, wobei Zeile 0 unten und Zeile 7 oben ist. Das niedrigstwertige Bit jeder Zeile befindet sich rechts, das höchstwertige Bit links. Das Ändern der Anzeige ist so einfach wie das Schreiben eines neuen Werts in dieses Datenarray, die Interrupt-Service-Routine kümmert sich um die Aktualisierung der Anzeige.
Programmierung
Auf die Programmierung wird hier nicht näher eingegangen. Ich würde Sie davor warnen, ein DAPA-Programmierkabel zu verwenden, da Sie den Chip meiner Meinung nach nicht mehr programmieren können, sobald er mit 12 MHz läuft. Alle anderen Standardprogrammierer sollten funktionieren (STK500, MKII, Dragon, Parallel/Seriell-Programmierer usw.). Sicherungen: Stellen Sie sicher, dass Sie die Sicherungen so programmieren, dass sie den 12-MHz-Kristall verwenden. Sicherung: 0xC9lfuse: 0xEF
In Aktion
Sobald Sie den Chip programmiert haben, sollte das Display ein "Hello World!" Hier ist ein Video der LED-Matrix in Aktionen. Die Videoqualität ist ziemlich niedrig, da ich dies mit der Videofunktion meiner Digitalkamera und nicht mit einem richtigen Video oder einer richtigen Webcam gemacht habe.
Schritt 5: Modulare Konzepte
Dieses Projekt ist skalierbar. Der einzig wahre begrenzende Faktor ist, wie viel Strom Ihr Netzteil liefern kann. (Die andere Realität ist, wie viele LEDs und Registerschieber Sie zur Verfügung haben).
Mathematik
Ich treibe die LEDs mit ca. 15mA (5V-1.8vDrop/220ohms=14.5mA). Das bedeutet, dass ich mit dem mic2981-Treiber bis zu 33 Säulen ansteuern kann (500mA/15mA=33,3). Durch 8 geteilt können wir sehen, dass wir damit 4 Schieberegister aneinanderreihen können. Bedenken Sie auch, dass Sie nicht alle 32 Spalten von links nach rechts erstrecken müssen. Sie könnten stattdessen ein 16x16-Array erstellen, das genauso verdrahtet ist wie ein 8x32-Array. Dies würde durch Verschieben in 4 Bytes adressiert…. die ersten beiden würden bis zu den LEDs für die 9. Reihe verschoben, die zweiten beiden Bytes würden in die erste Reihe verschoben. Beide Zeilen würden von einem Pin am Zeilentreiber gespeist.
Kaskadierende Schieberegister
Die verwendeten Schieberegister sind kaskadierende Schieberegister. Dies bedeutet, dass beim Verschieben von Daten der Überlauf am Os-Pin angezeigt wird. Dies wird sehr nützlich, da eine Reihe von Schieberegistern miteinander verbunden werden können, Os-Pin an Daten-Pin, wodurch mit jedem neuen Chip 8 Spalten hinzugefügt werden können. Alle Schieberegister werden an die gleichen Latch-, Clock- und Enable-Ausgangspins angeschlossen der Mikrocontroller. Der "kaskadierende" Effekt entsteht, wenn das Os des ersten Schieberegisters mit dem Data-Pin des zweiten verbunden wird. Die Programmierung muss geändert werden, um die erhöhte Anzahl von Spalten widerzuspiegeln. Sowohl der Puffer, der die Informationen speichert, als auch die Funktion, die Informationen für jede Spalte hineinschiebt, müssen aktualisiert werden, um die tatsächliche Anzahl von Spalten widerzuspiegeln. Ein Schema davon wird unten als Beispiel gegeben.
Treiber für mehrere Reihen
Der Zeilentreiber (mic2981) kann genug Strom liefern, um 32 Spalten anzusteuern. Was ist, wenn Sie mehr als 32 Spalten wünschen? Es sollte möglich sein, mehrere Reihentreiber zu verwenden, ohne mehr Mikrocontroller-Pins zu verwenden. Wir benötigen die Reihentreiber, um genügend Strom zu liefern, um die LEDs zu beleuchten. Wenn Sie mehr Spalten verwenden, als gleichzeitig beleuchtet werden können, können zusätzliche Zeilentreiber den erforderlichen Strom liefern. Es werden die gleichen Eingangspins des Mikrocontrollers verwendet, sodass die Abtastung der Zeilen nicht geändert werden muss. Mit anderen Worten, jeder Treiber steuert die Zeilen für einen 8x32-Block. Obwohl 64 Spalten die gleiche PHYSIKALISCHE Zeilenplatzierung haben können, teilen wir die Zeilenbusse in zwei, indem wir einen Treiber für die 8 Zeilen der ersten 32 Spalten und einen zweiten Treiber für die 8 Zeilen der zweiten 32 Spalten usw. verwenden. Als Beispiel wird dies im Folgenden schematisch dargestellt. Potenzielle Fehltritte:1. Verwenden Sie nicht mehrere Zeilentreiber mit der gleichen Anzahl von Spalten. Dies würde bedeuten, dass jeder Schieberegisterstift mehr als eine LED gleichzeitig ansteuern würde.2. Sie müssen für jeden Reihentreiber einen Satz von 8 Widerständen (3k3) haben, ein Satz für mehrere Reihentreiber funktioniert nicht, da er nicht den erforderlichen Strom zum Schalten der Gates liefert.
Zum Beispiel
Ich beschloss, die Matrix, die ich zuvor erstellt hatte, zu erweitern. Ich habe 7 weitere Reihen für insgesamt 15 hinzugefügt, da das alles ist, was ich auf dieses Protoboard passen kann. Ich habe auch gerade von einem Wettbewerb namens "Let it Glow" erfahren, den Instructables durchführt. Hier ist ein Video von meiner Meinung dazu. Wieder einmal wird die Digitalkamera, mit der ich das Video aufgenommen habe, dem nicht gerecht. Das sieht für das menschliche Auge gut aus, besonders wenn alle LEDs blinken, sieht aber im Video nicht annähernd so gut aus. Viel Spaß: Der Quellcode für dieses größere Display ist unten enthalten.
Schritt 6: Fazit
Mögliche Ergänzungen
I2CI hat die Pins der Zweidrahtschnittstelle (I2C) in diesem Design ungenutzt gelassen. Es gibt mehrere interessante Interessenten, die diese beiden Pins verwenden können. Das Hinzufügen eines I2C-EEPROM ermöglicht die Speicherung viel größerer Nachrichten. Es besteht auch die Aussicht, eine Programmierung zu entwickeln, um den mega8 in einen I2C-kompatiblen Bildschirmtreiber zu verwandeln. Dies würde die Möglichkeit eröffnen, ein USB-fähiges Gerät zu haben, um Daten auf Ihrem LED-Array anzuzeigen, indem es über den I2C-Bus geleitet wird. InputEs bleiben viele Pins übrig, die für Tasten oder einen IR-Empfänger verwendet werden könnten. Dies würde es ermöglichen, dass Nachrichten über ein Menüsystem programmiert werden können. DisplayFür dieses anweisbare habe ich nur ein paar Anzeigefunktionen implementiert. Einer schreibt nur Zeichen auf das Display, der andere scrollt Zeichen auf das Display. Es ist wichtig, sich daran zu erinnern, dass das, was Sie in den Lichtern sehen, in einem Datenarray dargestellt wird. Wenn Sie sich cleverere Möglichkeiten einfallen lassen, um das Daten-Array zu ändern, ändern sich die Lichter auf die gleiche Weise. Dies könnte als Signalanalysator mit einer Stereoanlage verwendet werden. Scrollen kann von oben nach unten oder von unten nach oben erfolgen, sogar von links nach rechts. Viel Glück und viel Spass!
Schritt 7: Nachfassen
Nachdem ich die Controller-Schaltung monatelang im Steckbrett sitzen ließ, entwarf und ätzte ich schließlich ein paar Leiterplatten, um diesen Prototyp zusammenzusetzen. Hat alles super geklappt, ich glaube ich hätte nichts anders gemacht.
Leiterplattenfunktionen
- Schieberegister befinden sich auf separaten Platinen, die miteinander verkettet werden können, um die Größe des Displays zu vergrößern.
- Die Controller-Platine verfügt über einen eigenen Leistungsregler, so dass diese von jeder Stromquelle betrieben werden kann, die 7V-30V liefert (9V-Batterie oder 12V-Bankversorgung, beide funktionieren für mich gut).
- 6-poliger ISP-Header enthalten, damit der Mikrocontroller neu programmiert werden kann, ohne ihn von der Platine zu entfernen.
- 4-Pin-Header für die zukünftige Verwendung des I2C-Busses verfügbar. Dies könnte für ein Eeprom verwendet werden, um mehr Nachrichten zu speichern oder es sogar zu einem Slave-Gerät zu machen, das von einem anderen Mikrocontroller gesteuert wird (RSS-Ticker jemand?)
- 3 Taster sind im Design enthalten. Ich kann die Firmware in Zukunft optimieren, um die Verwendung dieser Tasten einzuschließen.
Montage
Geben Sie mir Plexiglas, Winkelhalterungen, 6x32-Maschinenschrauben, Muttern und Unterlegscheiben sowie ein Gewindebohrer-Set zum Gewindebohren und ich kann alles herstellen.
Zweiter Preis beim Let It Glow!
Empfohlen:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
DIY Circuit Activity Board mit Büroklammern - HERSTELLER - STEM: 3 Schritte (mit Bildern)
DIY Circuit Activity Board mit Büroklammern | HERSTELLER | STEM: Mit diesem Projekt können Sie den Weg des elektrischen Stroms ändern, um durch verschiedene Sensoren zu laufen. Mit diesem Design können Sie zwischen dem Aufleuchten einer blauen LED oder dem Aktivieren eines Summers wechseln. Sie haben auch die Wahl, einen lichtabhängigen Widerstand mit
Beginnen Sie mit Light Painting (kein Photoshop): 5 Schritte (mit Bildern)
Beginnend mit Light Painting (kein Photoshop): Ich habe vor kurzem eine neue Kamera gekauft und einige ihrer Funktionen untersucht, als ich im Internet auf Light Painting oder Langzeitbelichtung gestoßen bin. Die meisten von uns werden die Grundform des Lightpaintings mit einem Foto in einer Stadt mit einer Straße gesehen haben