Inhaltsverzeichnis:

Beleuchten Sie Ihren Valentinstag mit funkelnder Matrix - Gunook
Beleuchten Sie Ihren Valentinstag mit funkelnder Matrix - Gunook

Video: Beleuchten Sie Ihren Valentinstag mit funkelnder Matrix - Gunook

Video: Beleuchten Sie Ihren Valentinstag mit funkelnder Matrix - Gunook
Video: Jungs mit 13: Früher VS Heute😂 2024, Juli
Anonim
Erleuchten Sie Ihren Valentinstag mit funkelnder Matrix
Erleuchten Sie Ihren Valentinstag mit funkelnder Matrix

Valentinstag ist eine Gelegenheit für Sie, Liebesbotschaften zu senden. Warum nicht ein lustiges LED-Gesicht mit kostengünstigen Komponenten erstellen, um Ihr Gefühl auszudrücken!

Schritt 1: Dinge, die in diesem Projekt verwendet werden

Hardware-Komponenten

  • Seeeduino V4.2
  • Basisschild
  • Grove - Rote LED-Matrix mit Treiber
  • Hain - Geste(PAJ7620U2)

Software-Apps und Online-Dienste

Arduino-IDE

Schritt 2: Geschichte

Image
Image

Schritt 3: Hardwareverbindung

Bild
Bild

In diesem Projekt verwenden wir den Gestensensor als Eingang und geben das Feedback an den LED-Matrix-Treiber, um die rote LED-Matrix zu speisen.

Sie müssen die Grove - Gesture und die Grove - Red LED Matrix mit Treiber an den I^2^C-Port des Basisschilds anschließen, der an das Seeeduino angeschlossen ist. Verbinden Sie dann Seeeduino über ein USB-Kabel mit dem PC.

Schritt 4: Softwareprogrammierung

Der Plan für dieses Projekt ist, das statische Emoji (weinendes Gesicht und wartendes Gesicht) anzuzeigen, wenn keine linke oder rechte Geste gelesen wurde.

Zeigen Sie dynamische Emojis zur Änderung der Augenposition an, die durch eine linke oder rechte Geste gesteuert werden, wenn eine linke oder rechte Geste gelesen wurde.

Bild
Bild

An der jeweiligen Augenposition wird ein schlagendes Herz auf der LED-Matrix angezeigt.

Bild
Bild

Die LED-Anzeigemuster werden vom LED-Matrix-Editor entworfen, Sie können Ihre LED-Muster in den obigen Programmshows ändern oder hinzufügen.

Um sich auf dieses Projekt vorzubereiten, müssen die Bibliotheken Grove - Gesture, Grove - Red LED Matrix w/Driver und MsTimer2 in der Arduino IDE installiert werden.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

#include "MsTimer2.h" #include "paj7620.h" #include "Wire.h"

Während des Setup-Vorgangs haben wir die Funktionen Serial, Matrix und MsTimer2 initialisiert. Initialized Serial wird zum Debuggen des Programms verwendet, daher ist es nicht erforderlich, nach dem Debuggen eine Verbindung zum PC herzustellen oder den Serial Monitor zu verwenden. Wir verwenden in diesem Projekt MsTimer2, um die Anzeige des statischen Emojis zu steuern.

// Initialisierte die Seriennummer zum Debuggen.

Serial.begin (9600); while(!Seriell); paj7620Init(); Wire.begin(); matrix.init(); matrix.setBrightness(15); matrix.setBlinkRate(BLINK_OFF); MsTimer2::set(1000, displayStatic); MsTimer2::start();

In der Hauptschleife nehmen wir nur zwei Ausgaben vom Gestensensor, GES_RIGHT_FLAG, GES_LEFT_FLAG, und diese werden verwendet, um die Funktion displayDynamic() zu führen.

Die Funktion displayDynamic() berechnet das Intervall von der letzten Anzeige dynamischer Emojis bis zur aktuellen Zeit. Wenn das Intervall TIMEOUT überschreitet, wird die Wiedergabe von statischen Emojis beendet und der angezeigte dynamische Emoji-Index wird gestartet. Beim Lesen von Links-nach-rechts-Gesten ist der Startindex 0, und der Index wird nach erneutem Lesen von Links-nach-rechts-Gesten erhöht. Andernfalls ist der Startindex der letzte Index des DYNAMIC-Arrays und der Index wird verringert.

void displayDynamic(bool leftToRight) {

unsigned long currentTime = millis(); if (currentTime - prevTime > TIMEOUT) { dIndex = leftToRight ? 0: ARRAY_LENGTH(DYNAMIC) – 1; showStatic = false; } // Dies wird verwendet, um das Überschreiten der Grenze zu vermeiden. if (dIndex >= ARRAY_LENGTH(DYNAMIC) ||dIndex <= -1) { heartBeat(); dIndex = leftToRight ? ARRAY_LENGTH(DYNAMIC) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMIC[leftToRight ? dIndex++: dIndex--]; }

Bei Überschreitung des TIMEOUT-Zeitraums wird keine Geste gelesen, die statische Emoji-Wiedergabe wird wiederhergestellt.

Laden Sie das Programm auf Ihr Seeeduino hoch, fertig. Spielen und Spaß haben!

Schritt 5: Code

#include "Grove_LED_Matrix_Driver_HT16K33.h"

#include "MsTimer2.h" #include "paj7620.h" #include "Wire.h" #define TIMEOUT 5000 #define GES_REG_ADDR 0x43 #define ARRAY_LENGTH(array) (sizeof(array) / sizeof(array[0])) Matrix_8x8-Matrix; uint64_t matrixDisplay = 0; unsigned long prevTime = millis(); int8_t sIndex = 0; bool showStatic = true; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DYNAMIC = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t HEART = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; Void displayStatic (void) { if (showStatic) { MatrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH(STATIC); }} void heartBeat() { for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = aktuelleTime; dIndex = leftToRight ? 0: ARRAY_LENGTH(DYNAMIC) – 1; } // Dies wird verwendet, um das Überschreiten der Grenze zu vermeiden. if (dIndex >= ARRAY_LENGTH(DYNAMIC) || dIndex TIMEOUT) { showStatic = true; } matrix.writeOnePicture(matrixDisplay); matrix.display(); Verzögerung (100); }

Empfohlen: