Projekt 9: 8*16 LED-Punktmatrix für Gesichtsausdrücke

(1)Beschreibung:

Wäre es nicht toll, wenn dem Roboter ein Ausdrucks-Display hinzugefügt wird? Die Keyestudio 8*16 LED-Punktmatrix kann genau das leisten. Mit ihrer Hilfe können Sie selbst Gesichtsausdrücke, Bilder, Muster und andere Anzeigen gestalten.

Das 8*16 LED-Board verfügt über 128 LEDs. Die Daten des Mikroprozessors (Arduino) kommunizieren mit dem AiP1640 über eine Zwei-Draht-Busschnittstelle. Damit kann er das Ein- und Ausschalten von 128 LEDs auf dem Modul steuern, sodass die Punktmatrix auf dem Modul das gewünschte Muster anzeigt. Ein HX-2.54 4Pin-Kabel wird für Ihre Bequemlichkeit bei der Verkabelung mitgeliefert.

(2)Parameter:

  • Betriebsspannung: DC 3,3–5 V

  • Leistungsaufnahme: 400 mW

  • Schwingungsfrequenz: 450 KHz

  • Treiberstrom: 200 mA

  • Betriebstemperatur: -40~80℃

  • Kommunikationsmodus: Zwei-Draht-Bus

(3)Wissenswertes:

Schaltkreis der 8*16 LED-Punktmatrix

Funktionsprinzip der 8*16 LED-Punktmatrix

Wie steuert man jede LED der 816-Punktmatrix? Es ist bekannt, dass jedes Byte 8 Bits hat und jedes Bit 0 oder 1 ist. Wenn es 0 ist, ist die LED aus, wenn es 1 ist, ist die LED an. Ein Byte kann eine Spalte der LEDs steuern, und entsprechend können 16 Bytes 16 Spalten von LEDs steuern – das ist die 816-Punktmatrix.

Pin-Beschreibung und Kommunikationsprotokoll

Die Daten des Mikroprozessors (Arduino) kommunizieren mit dem AiP1640 über ein Zwei-Draht-Buskabel.

Das Kommunikationsprotokoll-Diagramm ist wie folgt: (SCLK) ist SCL, (DIN) ist SDA.

①Die Startbedingung für die Dateneingabe: SCL ist High-Pegel und SDA wechselt von High zu Low.

②Für die Datenbefehls-Einstellung gibt es Methoden, wie in der folgenden Abbildung gezeigt.

In unserem Beispielprogramm wird die Methode Adresse automatisch um 1 erhöhen gewählt; der Binärwert ist 0100 0000 und der entsprechende Hexadezimalwert ist 0x40.

③Für die Adressbefehls-Einstellung kann die Adresse wie unten gezeigt ausgewählt werden.

Im Beispielprogramm wird die erste Adresse 00H ausgewählt, und die Binärzahl 1100 0000 entspricht dem Hexadezimalwert 0xc0.

④Die Anforderung für die Dateneingabe ist, dass bei High-Pegel von SCL während der Dateneingabe das Signal auf SDA unverändert bleiben muss. Nur wenn das Taktsignal auf SCL Low-Pegel hat, kann das Signal auf SDA geändert werden. Die Dateneingabe erfolgt zuerst mit dem niedrigsten Bit und zuletzt mit dem höchsten Bit.

⑤Die Bedingung für das Ende der Datenübertragung ist, dass wenn SCL auf Low-Pegel und SDA auf Low-Pegel ist und SCL auf High-Pegel wechselt, der Pegel von SDA auf High wechselt.

⑥Anzeigesteuerung: verschiedene Pulsbreiten einstellen; die Pulsbreite kann wie in der folgenden Abbildung gezeigt ausgewählt werden.

Im Beispiel beträgt die Pulsbreite 4/16, und das Hexadezimaläquivalent von 1000 1010 ist 0x8A.

Anleitung zur Verwendung des Modulus-Tools

Das Punktmatrix-Tool verwendet die Online-Version, der Link lautet: http://dotmatrixtool.com/#

①Rufen Sie den Link auf, und die Seite erscheint wie unten abgebildet.

②Die Punktmatrix ist 8*16, passen Sie daher die Höhe auf 8 und die Breite auf 16 an, wie in der folgenden Abbildung gezeigt.

③Hexadezimaldaten aus dem Muster generieren.

Wie in der folgenden Abbildung gezeigt: linke Maustaste drücken zum Auswählen, rechtsklicken zum Abbrechen; zeichnen Sie das gewünschte Muster, klicken Sie auf Generate, und die benötigten Hexadezimaldaten werden generiert.

(4)Anschlussdiagramm:

GND, VCC, SDA und SCL des 8x16 LED-Boards werden jeweils mit G(GND), V(VCC), A4 und A5 der Erweiterungsplatine für die serielle Zwei-Draht-Kommunikation verbunden.

(Hinweis: Obwohl es mit dem IIC-Pin des Arduino verbunden ist, ist dieses Modul nicht für die IIC-Kommunikation vorgesehen. Der IO-Port hier simuliert die I2C-Kommunikation und kann mit beliebigen zwei Pins verbunden werden.)

(5)Testcode:

Sie können auch Blöcke per Drag-and-Drop verschieben, um Ihren Code zu bearbeiten, wie unten gezeigt.

Vollständiger Testcode

(Hinweis: Verbinden Sie das Bluetooth-Modul nicht, bevor Sie den Code hochladen, da das Hochladen des Codes ebenfalls die serielle Kommunikation verwendet und es möglicherweise zu Konflikten mit der Bluetooth-seriellen Kommunikation kommen kann, was dazu führen kann, dass das Hochladen fehlschlägt.)

(6)Testergebnisse:

Nachdem der Testcode erfolgreich hochgeladen wurde, verkabeln Sie alles, drehen Sie den DIP-Schalter auf die ON-Seite und schalten Sie die Stromversorgung ein. Auf der Punktmatrix erscheint ein lächelndes Muster.

(7)Erweiterungsübung:

Wir verwenden das gerade erlernte Modulus-Tool, http://dotmatrixtool.com/#, damit die Punktmatrix die Muster Start, Vorwärts fahren und Stopp anzeigt und dann das Muster löscht. Das Zeitintervall beträgt 2000 ms.

Block zum Anzeigen eines lächelnden Gesichts

Code zum Anzeigen eines Ausdrucks

Block zum Anzeigen eines Herzens

Code für Vorwärtsfahren

Block für Rückwärtsfahren

Block für Linksdrehen

Block für Rechtsdrehen

Block zum Stoppen

Block zum Löschen

Sie können auch Blöcke per Drag-and-Drop verschieben, um Ihren Code zu bearbeiten, wie unten gezeigt.

(1)

(2)

(3)

Vollständiger Testcode

(Hinweis: Verbinden Sie das Bluetooth-Modul nicht, bevor Sie den Code hochladen, da das Hochladen des Codes ebenfalls die serielle Kommunikation verwendet und es möglicherweise zu Konflikten mit der Bluetooth-seriellen Kommunikation kommen kann, was dazu führen kann, dass das Hochladen fehlschlägt.)

Laden Sie den Code auf das Entwicklungsboard hoch; das 8*16-Board zeigt folgende Muster an.