Obsah:

Rozjasněte svého Valentýna šumivou maticí: 5 kroků
Rozjasněte svého Valentýna šumivou maticí: 5 kroků

Video: Rozjasněte svého Valentýna šumivou maticí: 5 kroků

Video: Rozjasněte svého Valentýna šumivou maticí: 5 kroků
Video: 💗KECACÍ LÍČENÍ A PŘÍPRAVA NA VALENTÝNA | TOP RŮŽOVÉ ODSTÍNY PRO KAŽDÉHO! Krásné s Baru 2024, Červenec
Anonim
Rozjasněte svého Valentýna šumivou maticí
Rozjasněte svého Valentýna šumivou maticí

Valentýn je pro vás šancí posílat milostné zprávy. Proč nevytvořit zábavnou LED tvář s levnými komponentami, které vyjádří váš pocit!

Krok 1: Věci použité v tomto projektu

Hardwarové komponenty

  • Seeeduino V4.2
  • Základní štít
  • Grove - červená LED matice s ovladačem
  • Grove - gesto (PAJ7620U2)

Softwarové aplikace a online služby

Arduino IDE

Krok 2: Příběh

Image
Image

Krok 3: Hardwarové připojení

obraz
obraz

V tomto projektu používáme senzor gest jako vstup a dáváme zpětnou vazbu ovladači matice LED k napájení červené LED matice.

Musíte připojit Grove - Gesture a Grove - Red LED Matrix w/Driver k portu I^2^C základního štítu, který je zapojen do Seeeduina. Poté připojte Seeeduino k počítači pomocí kabelu USB.

Krok 4: Programování softwaru

Plán pro tento projekt je zobrazit statické emoji (plačící obličej a čekající tvář), pokud nebylo přečteno žádné gesto vlevo nebo vpravo.

Zobrazovat emodži s dynamickou změnou polohy očí pomocí gesta doleva nebo doprava, když bylo přečteno gesto vlevo nebo vpravo.

obraz
obraz

V konkrétní poloze očí se na LED matici zobrazí tlukot srdce.

obraz
obraz

Vzory LED displeje jsou navrženy pomocí editoru LED Matrix Editor, své vzory LED můžete změnit nebo přidat v programových ukázkách výše.

Abychom se na tento projekt připravili, je nutné do knihoven Arduino IDE nainstalovat knihovny Grove - Gesture, Grove - Red LED Matrix w/Driver a MsTimer2.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

Během postupu instalace jsme inicializovali funkce Serial, matrix a MsTimer2. Inicializovaný sériový port slouží k ladění programu, takže není nutné se po ladění připojovat k počítači nebo používat sériový monitor. V tomto projektu používáme MsTimer2 k ovládání zobrazení statických emoji.

// Inicializace seriálu na ladění.

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

V hlavní smyčce odebíráme pouze dva výstupy ze senzoru gest, GES_RIGHT_FLAG, GES_LEFT_FLAG a tyto slouží k vedení funkce displayDynamic ().

Funkce displayDynamic () vypočítá interval od posledního zobrazení dynamických emoji do aktuálního času, pokud interval překročí TIMEOUT, zastaví přehrávání statických emodži a nastaví spuštění zobrazeného indexu dynamických emodži. Při čtení gest zleva doprava je počáteční index 0 a po dalším čtení gest zleva doprava se index zvýší. V opačném případě je počáteční index posledním indexem pole DYNAMIC a index bude snížen.

void displayDynamic (bool leftToRight) {

unsigned long currentTime = millis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; showStatic = false; } // Toto se používá k zamezení překročení hranice. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DYNAMIC) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMICKÝ [leftToRight? dIndex ++: dIndex--]; }

Pokud je překročena doba TIMEOUT, nečte se žádné gesto, obnoví se přehrávání statických emodži.

Nahrajte program do svého Seeeduino, vše hotovo. Hrajte a bavte se!

Krok 5: Kód

#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])) Matice matice_8x8; uint64_t matrixDisplay = 0; unsigned long prevTime = millis (); int8_t sIndex = 0; bool showStatic = true; konst uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; konst uint64_t DYNAMICKÉ = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; konst uint64_t SRDCE = {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 = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; } // Toto se používá k zamezení překročení hranice. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); zpoždění (100); }

Doporučuje: