Inhaltsverzeichnis:

Arduino und TM1638 LED-Anzeigemodule - Gunook
Arduino und TM1638 LED-Anzeigemodule - Gunook

Video: Arduino und TM1638 LED-Anzeigemodule - Gunook

Video: Arduino und TM1638 LED-Anzeigemodule - Gunook
Video: Controlling a TM1638 with an Arduino Uno 2024, Juli
Anonim
Arduino und TM1638 LED-Anzeigemodule
Arduino und TM1638 LED-Anzeigemodule

Wenn Sie schnell und einfach Benutzereingaben und -ausgaben zu einem Projekt hinzufügen möchten, sind diese Anzeigemodule interessant und machen Spaß.

Sie enthalten acht rote 7-Segment-LED-Ziffern, acht rote/grüne LEDs sowie acht Tasten für die Benutzereingabe. Die Einheiten können auch in Reihe geschaltet werden, sodass bis zu fünf gleichzeitig möglich sind, und jedem Modul liegt ein kurzes Kabel sowie einige kurze Distanzstücke und Schrauben bei, wie in der Abbildung gezeigt.

Schritt 1:

Bild
Bild

Die Abstandshalter sind gerade lang genug, um die Platine über eine Oberfläche zu heben, aber um die Platinen an einer sinnvollen Stelle zu montieren, benötigen Sie längere. Möglicherweise möchten Sie auch die IDC-Sockel entfernen, wenn Sie das Modul nahe an der Oberfläche eines Panels montieren möchten. Dies wäre eine einfache Entlötaufgabe, da es sich um Durchgangslochbuchsen handelt.

Schritt 2:

Bild
Bild

Das Board wird von einem TM1638 IC gesteuert.

Dies ist ein LED- und Schnittstellentreiber-IC von „Titan Micro Electronics“. Sie können diese ICs auch bei PMD Way kaufen. Sie können auch das Datenblatt herunterladen, um weitere Informationen zu erhalten.

Schritt 3: Erste Schritte - Hardware

Erste Schritte - Hardware
Erste Schritte - Hardware

Hardware – Der Anschluss an ein Arduino-kompatibles Board (oder eine andere MCU) ist recht einfach. Die Pinbelegungen sind auf der Rückseite der Platine abgebildet und entsprechen der Befestigung am Flachbandkabel. Wenn Sie das Ende des Kabels als solches betrachten.

Das obere rechte Loch ist Stift 1, wobei das obere linke Stift zwei ist, das untere rechte Stift neun und der untere linke Stift zehn. Daher sind die Pinbelegungen:

  1. Vcc (5V)
  2. Masse
  3. CLK
  4. DIO
  5. STB1
  6. STB2
  7. STB3
  8. STB4
  9. STB5
  10. nicht verbunden.

Für den Arduino-Einsatz sind die Pins 1 bis 4 das Minimum, das erforderlich ist, um ein Modul zu verwenden. Jedes zusätzliche Modul erfordert einen weiteren digitalen Pin, der mit STB2, STB3 usw. verbunden ist. Mehr dazu später. Bitte beachten Sie, dass jedes Modul, das bei eingeschalteter LED auf volle Helligkeit eingestellt ist, 127 mA verbraucht. Daher ist es ratsam, eine externe Stromversorgung mit mehr als einem Modul und anderen Verbindungen mit Arduino-Boards zu verwenden.

Schritt 4: Erste Schritte - Software

Software – Laden Sie die T1638-Bibliothek von hier herunter und installieren Sie sie. Vielen Dank und ein großes Lob an rjbatista bei gmail dot com für die Bibliothek. Das Initialisieren von Modulen in der Skizze ist einfach. Binden Sie die Bibliothek ein mit:

#enthalten

Verwenden Sie dann für jedes Modul eine der folgenden Optionen:

TM1638-Modul (x, y, z);

x ist der Arduino-Digitalstift, der mit dem Modulkabelstift 4 verbunden ist, y ist der Arduino-Digitalstift, der mit dem Modulkabelstift 3 verbunden ist, und z ist der Strobe-Pin. Wenn Sie also ein Modul mit Daten, Clock und Strobe an den Pins 8, 7 und 6 angeschlossen hätten, würden Sie Folgendes verwenden:

TM1638-Modul (8, 7, 6);

Wenn Sie zwei Module hätten, wobei der Strobe von Modul 1 mit Arduino Digital 6 verbunden ist und der Strobe von Modul 2 mit Digital 5 verbunden ist, würden Sie Folgendes verwenden:

TM1638-Modul (8, 7, 6); TM1638-Modul (8, 7, 5);

und so weiter für weitere Module. Um nun die Anzeige zu steuern…

Schritt 5: Die zweifarbigen LEDs

Die zweifarbigen LEDs
Die zweifarbigen LEDs

Die Steuerung der roten/grünen LEDs ist einfach. Als Referenz sind sie von links nach rechts von null bis sieben nummeriert. Um eine einzelne LED ein- oder auszuschalten, verwenden Sie Folgendes:

module.setLED(TM1638_COLOR_RED, x); // LED-Nummer x auf redmodule.setLED (TM1638_COLOR_GREEN, x) setzen; // LED-Nummer x auf Grün setzen module.setLED (TM1638_COLOR_RED + TM1638_COLOR_GREEN, 0); // LED-Nummer x auf Rot und Grün setzen

Die Verwendung der obigen Methode mag einfach sein, sie ist jedoch etwas ineffizient. Eine bessere Möglichkeit besteht darin, alle LEDs in einer Anweisung zu adressieren. Dazu senden wir zwei Byte Daten in hexadezimaler Form an das Display. Das MSB (höchstwertiges Byte) besteht aus acht Bits, die jeweils eine grüne LED darstellen, die an (1) oder aus (0) ist. Das LSB (Least Significant Byte) repräsentiert die roten LEDs.

Eine einfache Möglichkeit, den hexadezimalen Wert zur Steuerung der LEDs zu bestimmen, ist einfach. Stellen Sie sich vor, Sie haben eine Reihe von LEDs – die ersten acht sind grün und die zweiten acht sind rot. Stellen Sie jede Ziffer auf 1 für ein und 0 für aus. Konvertieren Sie die beiden Binärzahlen in Hexadezimalzahlen und verwenden Sie diese Funktion:

module.setLEDs(0xgrünrot);

Wobei Grün die Hexadezimalzahl für die grünen LEDs und Rot die Hexadezimalzahl für die roten LEDs ist. Um beispielsweise die ersten drei LEDs rot und die letzten drei grün einzuschalten, lautet die binäre Darstellung:

00000111 11100000 was in hexadezimal E007 ist.

Also würden wir verwenden:

module.setLEDs(0xE007);

was das Bild wie oben gezeigt erzeugt.

Schritt 6: Die 7-Segment-Anzeige

Um die numerische Anzeige (aber nicht die LEDs unten) zu löschen, verwenden Sie einfach:

module.clearDisplay();

oder um jedes Segment UND alle LEDs einzuschalten, verwenden Sie Folgendes:

module.setupDisplay (wahr, 7); // wobei 7 die Intensität ist (von 0 bis 7)

Um Dezimalzahlen anzuzeigen, verwenden Sie die Funktion:

module.setDisplayToDecNumber(a, b, false);

wobei a die ganze Zahl ist, b die Position für den Dezimalpunkt (0 für keine, 1 für Ziffer 8, 2, für Ziffer 7, 4 für Ziffer 6, 8 für Ziffer 4 usw.) und der letzte Parameter (wahr/ false) schaltet führende Nullen ein oder aus. Die folgende Skizze demonstriert die Verwendung dieser Funktion:

#include // Definiere ein Modul auf Daten-Pin 8, Takt-Pin 9 und Strobe-Pin 7 TM1638-Modul (8, 9, 7); unsigned long a=1; Void setup () {} Void Schleife () { for (a=10000; a<11000; a++) { module.setDisplayToDecNumber (a, 4, false); Verzögerung(1); } for (a=10000; a<11000; a++) { module.setDisplayToDecNumber(a, 0, true); Verzögerung(1); } }

… mit den im Video gezeigten Ergebnissen.

Schritt 7:

Image
Image

Eine der interessantesten Funktionen ist die Möglichkeit, Text über ein oder mehrere Displays zu scrollen. Dazu bedarf es nicht wirklich einer Erklärung wie die mitgelieferte Demonstrationsskizze:

tm_1638_scrolling_modules_example.pde

die in der TM1638-Bibliothek enthalten sind, ist leicht zu befolgen. Fügen Sie einfach Ihren Text in den const char string ein, stellen Sie sicher, dass die Module gemäß der Moduldefinition am Anfang des Sketches verdrahtet sind und Sie sind fertig. Um die verfügbaren Zeichen anzuzeigen, besuchen Sie die Funktionsseite. Beachten Sie, dass die Anzeige nur aus sieben Segmenten besteht, sodass einige Zeichen möglicherweise nicht perfekt aussehen, aber im Kontext erhalten Sie eine gute Idee – sehen Sie sich das Video in diesem Schritt an.

Schritt 8:

Schließlich können Sie auch jedes Segment jeder Ziffer einzeln ansprechen. Betrachten Sie den Inhalt dieses Arrays:

Bytewerte = { 1, 2, 4, 8, 16, 32, 64, 128 };

jedes Element repräsentiert die Ziffern 1 bis 8. Der Wert jedes Elements bestimmt, welches Segment der Ziffer eingeschaltet wird. Für die Segmente a~f, dp sind die Werte 1, 2, 4, 6, 16, 32, 64, 128. Die Ergebnisse der Verwendung des obigen Arrays in der folgenden Funktion:

module.setDisplay(Werte);

wird pro Bild sein.

Schritt 9:

Bild
Bild

Natürlich können Sie Werte für jede Ziffer kombinieren, um Ihre eigenen Zeichen, Symbole usw. zu erstellen. Verwenden Sie beispielsweise die folgenden Werte:

Bytewerte = { 99, 99, 99, 99, 99, 99, 99, 99 };

Wir haben in diesem Schritt gemäß dem Bild erstellt.

Schritt 10: Die Tasten

Die Werte der Schaltflächen werden als Byte-Wert von der Funktion zurückgegeben:

module.getButtons();

Da es acht Schaltflächen gibt, repräsentiert jede ein Bit einer Binärzahl, die als Byte zurückgegeben wird. Die Schaltfläche auf der linken Seite gibt dezimal eins zurück und die rechte gibt 128 zurück. Sie kann auch gleichzeitiges Drücken zurückgeben, so dass das Drücken der Tasten eins und acht 129 zurückgibt. Betrachten Sie die folgende Skizze, die die Werte der Tastendrücke in dezimaler Form zurückgibt und dann anzeigt der Wert:

#include // Definiere ein Modul auf Daten-Pin 8, Takt-Pin 9 und Strobe-Pin 7 TM1638-Modul (8, 9, 7); Byte-Schaltflächen; Void setup () {} Void Schleife () { buttons = module.getButtons (); module.setDisplayToDecNumber (Schaltflächen, 0, false); }

und die Ergebnisse im Video.

Diese Anzeigetafeln sind nützlich und finden hoffentlich ein Zuhause in Ihren Projekten. Dieser Beitrag von pmdway.com – bietet alles für Macher und Elektronik-Enthusiasten, weltweit versandkostenfrei.

Empfohlen: