Inhaltsverzeichnis:
- Schritt 1: Holen Sie sich die Ware…
- Schritt 2: Direkt mit dem LED-Display verbinden
- Schritt 3: Angeben eines anzuzeigenden Zeichens
- Schritt 4: E/A-Ports mit einem Schieberegister sparen
- Schritt 5: Zusammenfassung
Video: Verwenden einer Dot-Matrix-LED mit einem Arduino und einem Schieberegister - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:23
Die Siemens DLO7135 Dot-Matrix-LED ist ein erstaunliches Stück Optoelektronik. Es wird als intelligentes 5x7 Dot Matrix Display (r) mit Speicher/Decoder/Treiber in Rechnung gestellt. Zusammen mit diesem Speicher verfügt es über ein 96-Zeichen-ASCII-Display mit Groß- und Kleinbuchstaben, einen integrierten Zeichengenerator und Multiplexer, vier Lichtintensitätsstufen und alles läuft mit 5V, und bei $16 pro Pop sollte es auf jeden Fall sein. Während ich den halben Tag in meinem Lieblingselektronikgeschäft vor Ort verbrachte, fand ich einen Mülleimer voll davon für 1,50 US-Dollar pro Stück. Ich habe den Laden mit mehreren verlassen. Diese Anleitung zeigt Ihnen, wie Sie mit einem AVR-basierten Arduino eine Verbindung zu diesen Punktmatrix-LEDs herstellen und Zeichen anzeigen. Wenn Sie einen meiner vorherigen Ratgeber gelesen haben, werden Sie vielleicht auf den Gedanken kommen, dass ich oft die sparsamste Lösung befürworte, und Sie würden sich nicht irren, auch wenn ich das Ziel von Zeit zu Zeit verfehle. Daher werde ich auch einen weiteren Schritt in diesem anweisbaren gehen und Ihnen zeigen, wie Sie die Anzahl der E / A-Ports reduzieren können, die zum Antreiben dieser großen, honkin 'Punktmatrix-LEDs erforderlich sind.
Schritt 1: Holen Sie sich die Ware…
Für dieses kurze kleine Projekt benötigen Sie:
- ein AVR-basierter Mikrocontroller wie ein Arduino oder ähnliches. Diese Anweisungen könnten wahrscheinlich an Ihre MCU Ihrer Wahl angepasst werden.
- eine DLO7135 Punktmatrix-LED oder eine andere in der gleichen Familie
- ein 8-Bit-Schieberegister wie das 74LS164, 74C299 oder 74HC594
- ein Steckbrett
- Anschlussdraht, Drahtschneider usw.
Ein Lötkolben wird nicht benötigt, obwohl ich später einen benutze; du kannst auch ohne auskommen.
Schritt 2: Direkt mit dem LED-Display verbinden
Legen Sie Ihre kleine Teileliste aus und greifen Sie nach der LED. Legen Sie es etwas zentriert auf das Steckbrett und überspannen Sie die Mittellinienrille. Der erste Teil der Verbindung findet ganz auf der linken Seite der LED statt. Pin Nr. 1 befindet sich oben links, wie durch das Dreieck/Pfeil angezeigt. Ich habe die Stiftfunktionen als Referenz auf ein Bild gesetzt, während Sie Ihre LED lesen oder anschließen.
Die linke Seite
Positiv und Negativ Beginnen Sie oben links und verbinden Sie Vcc mit 5V. Es ist vielleicht eine gute Idee, Ihr Board nicht mit Strom zu versorgen, bis Sie die gesamte linke Seite fertiggestellt haben; Die LED kann hell sein, wenn Sie versuchen, kleine Löcher zu sehen, um in Drähte zu stecken. Verbinden Sie den unteren linken GND mit Masse. Lamp Test, Chip Enable und Write Die 2. und 3. von oben links sind Lamp Test und Chip Enable. Dies sind beide negative Logik, was bedeutet, dass sie aktiviert werden, wenn sie eine logische 0 anstelle von 1 haben. Mein Bild unten sollte Balken darüber haben, aber ich habe das für keinen von ihnen kommentiert. Der LT-Pin leuchtet, wenn er aktiviert ist, jeden Punkt in der Punktmatrix mit 1/7 Helligkeit auf. Es ist eher ein Pixeltest, aber das Interessante am LT-Pin ist, dass er kein Zeichen im Speicher überschreibt kann es wie einen Cursor aussehen lassen. Um sicherzustellen, dass es deaktiviert ist, schließen Sie es an 5 V an. Die CE- und WR-Pins haben ebenfalls negative Logik und müssen aktiviert werden, damit dieses intelligente Gerät beschrieben werden kann. Sie könnten diese Pins mit freien I/O-Ports an Ihrem Mikrocontroller mikroverwalten, aber wir werden uns hier nicht darum kümmern. Verbinden Sie sie einfach mit Masse, um sie aktiviert zu halten. Helligkeitsstufen Bei der DLO-LED-Familie gibt es vier programmierbare Helligkeitsstufen:
- Leer
- 1/7 Helligkeit
- 1/2 Helligkeit
- Volle Helligkeit
BL1 HIGH und BL0 LOW ist 1/2 Helligkeit. Beide HIGH ist volle Helligkeit. Stellen Sie es so ein, wie Sie möchten. Auch hier, wenn Sie I / O-Ports frei haben und es Ihnen wichtig genug ist, kann dies auch von Ihrem Arduino gesteuert werden. Das schließt die linke Seite ein. Wenn Sie Ihr Board mit Strom versorgen, sollten Sie die LED aufleuchten sehen. Spielen Sie mit den Helligkeitsreglern und dem Lampentest, um sich damit vertraut zu machen, wenn Sie neugierig sind.
Die richtige Seite
Die rechte Seite besteht ausschließlich aus Datenports. Unten rechts, Pin 8 oder D0, um genau zu sein, repräsentiert das niedrigstwertige Bit im 7-Bit-Zeichen. Oben rechts, Pin 14 oder D6, steht für das höchstwertige Bit. Auf diese Weise können Sie wissen, in welcher Reihenfolge Ihre Bits beim Schreiben in die LED gemischt werden sollen. Wenn Sie die Dateneingangsports verkabelt haben, suchen Sie sieben leere digitale I / O-Ports an Ihrem Arduino oder AVR und verbinden Sie sie. Sie möchten sich wahrscheinlich daran erinnern, welcher Datenausgangsanschluss Ihres AVR zu welchem Dateneingangsanschluss der LED geht. Jetzt können Sie einige Daten auf diese intelligente LED übertragen. Zitterst du schon vor Aufregung? Ich weiß, ich bin…
Schritt 3: Angeben eines anzuzeigenden Zeichens
Der Zeichensatz, der auf dieser CMOS-LED verwendet wird, ist Ihr Standard-ASCII, beginnend bei 0x20 (Dezimal 32; ein Leerzeichen) und endend bei 0x7F (Dezimal 127; ein Löschen, obwohl auf der LED als Cursorgrafik dargestellt). Wenn die LED ein Zeichen anzeigt, bedeutet dies also nichts anderes, als eine logische 1 oder 0 an Ihren Datenausgangspins zu drücken, normalerweise gefolgt von einem WR-Impuls, aber ich verzichte darauf für diese Übung erinnerte sich, welche Pins zu welchen Ports gehen, oder? Ich wählte PD[2..7] und PB0 (digitale Pins 2 bis 8 in Arduino-Sprache). Ich schlage normalerweise nicht vor, PD[0..1] zu verwenden, da ich es meiner seriellen Kommunikation zu einer FreeBSD-Box widme, und Arduinos et al. Ordnen Sie diese Pins ihrem FTDI-USB-Kommunikationskanal zu, und obwohl "sie" SAGEN, dass die Pins 0 und 1 funktionieren, wenn Sie die serielle Kommunikation nicht initialisieren, konnte ich diese Pins nie als normale digitale E / A verwenden. Tatsächlich habe ich zwei Tage damit verbracht, ein Problem zu beheben, als ich versuchte, PD0 und PD1 zu verwenden und feststellte, dass sie immer HIGH waren. *achselzucken* Es wäre wahrscheinlich gut, eine Art externe Eingabe zu haben, wie vielleicht eine Tastatur, einen Druckrad- oder Daumenradschalter oder vielleicht sogar eine Eingabe von einem Terminal (mein ArduinoTerm ist noch nicht bereit für die Hauptsendezeit…). Es ist deine Entscheidung. Im Moment werde ich nur veranschaulichen, wie man den Code bekommt, um das gewünschte Zeichen auf die LED zu bekommen. Es gibt eine ZIP-Datei zum Download mit dem Quellcode und Makefile und es gibt auch einen kurzen Film, der zeigt, wie die LED ihren Zeichensatz ausdruckt. Entschuldigung für die beschissene Qualität des Videos. Der folgende Code druckt die Zeichenfolge "Willkommen bei meinem Instructable!" dann durchläuft der gesamte Zeichensatz, den die LED unterstützt.
DDRD = 0xFF; // AusgabeDDRB = (1<<DDB0); char msg = "Willkommen zu meinem Instructable!"; uint8_t i; for (;;) { for (i = 0; i < 27; i ++) { Print2LED (msg ); _verzögerung_ms(150); } for(i=0x20; i<0x80; i++) { Print2LED(i); _verzögerung_ms(150); } Print2LED(&apos*&apos);}Um die Portausgabe kümmert sich die Funktion Print2Led()
voidPrint2LED (uint8_t i) {PORTD = (i << 2); if (i & 0b01000000) PORTB = (1<
Der Code und das Makefile sind in einer ZIP-Datei unten enthalten.
Schritt 4: E/A-Ports mit einem Schieberegister sparen
Jetzt kann unser Mikrocontroller Daten an die Punktmatrix-LED senden, verwendet jedoch acht E / A-Ports. Dies schließt die Verwendung eines ATtiny in einem 8-Pin-DIP-Paket aus, und selbst bei einem neueren Arduino mit einem ATmega328p sind das viele E / A-Ports für eine LED. Wir können dies jedoch umgehen, indem wir einen IC namens Schieberegister verwenden. Ein Moment, um die Gänge zu "schalten" … Ein Schieberegister kann am besten verstanden werden, wenn man an die beiden Wörter denkt, die seinen Namen bilden: "Shift" und "Register". Das Wort Shift bezieht sich darauf, wie sich die Daten durch das Register bewegen. Hier (wie bei unseren Arduino und Mikrocontrollern im Allgemeinen) ist ein Register ein Ort, der Daten enthält. Dies geschieht durch die Implementierung einer linearen Kette digitaler Logikschaltungen, die als "Flip-Flops" bezeichnet werden und zwei stabile Zustände aufweisen, die entweder durch eine 1 oder eine 0 dargestellt werden können. Wenn Sie also acht Flip-Flops zusammensetzen, erhalten Sie ein Gerät, das in der Lage ist, zu halten und stellt ein 8-Bit-Byte dar. So wie es verschiedene Arten von Flip-Flops und verschiedene Variationen eines Themas von Schieberegistern gibt (denken Sie an Aufwärts-/Abwärtszähler und Johnson-Zähler), gibt es auch verschiedene Arten von Schieberegistern, die darauf basieren, wie Daten im Register zwischengespeichert wird und wie diese Daten ausgegeben werden. Betrachten Sie auf dieser Grundlage die folgenden Arten von Schieberegistern:
- Serieller Eingang / Paralleler Ausgang (SIPO)
- Serieller Eingang / Serieller Ausgang (SISO)
- Paralleler Eingang/Serieller Ausgang (PISO)
- Paralleler Eingang / Paralleler Ausgang (PIPO)
Zwei erwähnenswerte sind SIPO und PISO. SIPO-Register nehmen Daten seriell, d. h. ein Bit nach dem anderen, auf, verschieben das zuvor eingegebene Bit zum nächsten Flip-Flop und senden die Daten an allen Eingängen gleichzeitig aus. Dies macht einen schönen Seriell-Parallel-Wandler. PISO-Schieberegister hingegen haben parallele Eingänge, sodass alle Bits gleichzeitig eingegeben, aber einzeln ausgegeben werden. Und Sie haben es erraten, dies ergibt einen schönen Parallel-Seriell-Wandler. Das Schieberegister, das wir verwenden möchten, um die Anzahl der I / O-Pins zu reduzieren, würde es uns ermöglichen, die 8 IO-Pins, die wir zuvor verwendet haben, auf einen oder vielleicht nur ein paar zu reduzieren, wenn man bedenkt, dass wir möglicherweise steuern müssen, wie wir eingeben die Bits. Daher verwenden wir als Schieberegister ein Serial In / Parallel Out. Verdrahten Sie das Schieberegister zwischen der LED und dem Arduino Die Verwendung eines Schieberegisters ist einfach. Der schwierigste Teil ist nur die Visualisierung der Datenausgangspins und wie die Binärziffern im IC landen und wie sie schließlich auf der LED angezeigt werden. Nehmen Sie sich einen Moment Zeit, um dies zu planen. 1. Schließen Sie 5V an Pin 14 (oben rechts) an und nehmen Sie Pin 7 (unten links) auf Masse.2. Das Schieberegister hat zwei serielle Eingänge, aber wir verwenden nur einen, also verbinden Sie Pin zwei mit 5V3. Wir werden den Clear-Pin (der zum Nullen aller Ausgänge verwendet wird) nicht verwenden, also lassen Sie ihn schweben oder greifen Sie ihn auf 5V4 an. Verbinden Sie einen digitalen IO-Port mit dem Pin eines der Schieberegister. Dies ist der serielle Eingangspin.5. Verbinden Sie einen digitalen IO-Port mit Pin 8 (unten rechts). Dies ist der Uhr-Pin.6. Verbinden Sie Ihre Datenleitungen von Q0 bis Q6. Wir verwenden nur 7 Bit, da der ASCII-Zeichensatz nur sieben Bit verwendet. Ich habe PD2 für die Ausgabe meiner seriellen Daten und PD3 für das Taktsignal verwendet. Für die Datenpins habe ich Q0 mit D6 an der LED verbunden und so weitergemacht (Q1 mit D5, Q2 mit D4 usw.). Da wir Daten seriell aussenden, müssen wir die binäre Darstellung jedes Zeichens, das wir senden möchten, untersuchen, indem wir die Einsen und Nullen betrachten und jedes Bit auf der seriellen Leitung ausgeben. Ich habe eine zweite Version der dotmatrixled.c-Quelle zusammen mit einem Makefile unten eingefügt. Es durchläuft den Zeichensatz und zeigt alle geraden Zeichen an (wenn Sie denken, dass ein Buchstabe ungerade oder gerade sein könnte, denken Sie einen Moment über die binäre Darstellung nach). Versuchen Sie herauszufinden, wie Sie alle ungeraden Zeichen anzeigen können. Sie können mit den Verbindungen zwischen dem Schieberegister, der Punktmatrix-LED und Ihrem Arduino weiter experimentieren. Es gibt mehrere Kontrollfunktionen zwischen der LED und dem Register, mit denen Sie Ihre Kontrolle über die Anzeige von Daten verfeinern können. Also….wir haben uns von der Verwendung von acht E/A-Ports auf nur noch zwei reduziert!
Schritt 5: Zusammenfassung
In diesem anweisbaren habe ich die DLO7135-Punktmatrix-LED vorgestellt und wie es funktioniert. Ich habe weiter diskutiert, wie die Anzahl der erforderlichen I/O-Ports von acht auf nur zwei mit Hilfe eines Schieberegisters reduziert werden kann. Die DLO7135 Punktmatrix-LED kann aneinandergereiht werden, um sehr auffällige und interessante Festzelte zu bilden. Ich hoffe, Sie hatten Spaß beim Lesen dieses instructable! Wenn es irgendwelche Verbesserungen gibt, von denen Sie denken, dass ich sie machen könnte, oder Vorschläge, die Sie zu diesem oder einem meiner 'Ile's machen möchten, freue ich mich, sie zu hören!Happy AVR'ing!
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
So verwenden Sie einen Debugger auf einem ESP32 – wikiHow
So verwenden Sie einen Debugger auf einem ESP32: Wollten Sie schon immer einen Blick in Ihren Code werfen, um zu sehen, warum er sich so verhält, wie er ist? Traditionell hätten Sie in ESP32-Projekten endlose print-Anweisungen hinzufügen müssen, um herauszufinden, was vor sich ging, aber es gibt einen besseren Weg! Ein Debugger
Tutorial: So verwenden Sie ESP32-CAM in einem Video-Streaming-Webserver: 3 Schritte
Tutorial: So verwenden Sie ESP32-CAM in Videostreaming-Webservern: Beschreibung: ESP32-CAM ist ein ESP32 Wireless IoT Vision Development Board in einem sehr kleinen Formfaktor, das für den Einsatz in verschiedenen IoT-Projekten entwickelt wurde, z drahtlose Steuerung, drahtlose Überwachung, drahtlose QR-Identifikation
So laden Sie Instagram auf einem iPhone 6 und höher herunter und verwenden es – wikiHow
So laden Sie Instagram auf einem Iphone 6 und höher herunter und verwenden es: Dieses anweisbare ist für die neuen Benutzer von Instagram. Hier erfahren Sie, wie Sie ein Konto einrichten und wie es funktioniert
So installieren Sie Fedora auf einem SheevaPlug und booten von einer SD-Karte.: 13 Schritte
So installieren Sie Fedora auf einem SheevaPlug und booten von einer SD-Karte.: Ich habe einen Beitrag zum SheevaPlug bei Slashdot und dann in Popular Mechanics gesehen. Es schien ein interessantes Gerät zu sein es läuft @ 2,5w, keine Lüfter, Solid State und kein Monitor erforderlich. Seit Jahren trage ich einen alten CRT-Monitor mit mir herum