Obsah:

Rozžiarte svojho Valentína šumivou maticou: 5 krokov
Rozžiarte svojho Valentína šumivou maticou: 5 krokov

Video: Rozžiarte svojho Valentína šumivou maticou: 5 krokov

Video: Rozžiarte svojho Valentína šumivou maticou: 5 krokov
Video: Героиня своего романа. 1 Серия. Детективная Мелодрама. Лучшие сериалы 2024, November
Anonim
Rozžiarte svojho Valentína šumivou maticou
Rozžiarte svojho Valentína šumivou maticou

Valentín je pre vás šancou posielať milostné správy. Prečo nevyrobiť zábavnú LED tvár s lacnými komponentmi, ktorými vyjadríte svoj pocit!

Krok 1: Veci použité v tomto projekte

Hardvérové komponenty

  • Seeeduino V4.2
  • Základný štít
  • Grove - červená LED matica s ovládačom
  • Grove - Gesto (PAJ7620U2)

Softvérové aplikácie a online služby

Arduino IDE

Krok 2: Príbeh

Image
Image

Krok 3: Pripojenie hardvéru

Obrázok
Obrázok

V tomto projekte používame snímač gest ako vstup a dávame spätnú väzbu ovládaču matice LED na napájanie červenej matice LED.

Musíte pripojiť maticu Grove - Gesture a Grove - Red LED s ovládačom k portu I^2^C základného štítu, ktorý je zapojený do Seeeduina. Potom pripojte Seeeduino k počítaču pomocou kábla USB.

Krok 4: Programovanie softvéru

Plán pre tento projekt je zobraziť statické emoji (plačúca tvár a čakajúca tvár), ak nie je prečítané žiadne ľavé alebo pravé gesto.

Zobrazovať emodži s dynamickou zmenou polohy očí pomocou ovládania gestom vľavo alebo vpravo, keď bolo prečítané gesto vľavo alebo vpravo.

Obrázok
Obrázok

V konkrétnej polohe očí sa na matici LED zobrazí bijúce srdce.

Obrázok
Obrázok

Vzory LED displeja sú navrhnuté pomocou editora LED Matrix Editor, svoje vzory LED môžete zmeniť alebo pridať v programových ukážkach vyššie.

Na prípravu tohto projektu je potrebné nainštalovať knižnice Grove - Gesture, Grove - Red LED Matrix s ovládačom a MsTimer2 do Arduino IDE.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

Počas postupu nastavenia sme inicializovali funkcie Serial, matrix a MsTimer2. Initialized Serial sa používa na ladenie programu, takže nie je potrebné sa po ladení pripájať k počítaču alebo používať Serial Monitor. V tomto projekte používame MsTimer2 na ovládanie zobrazenia statických emodži.

// Inicializácia seriálu na ladenie.

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

V hlavnej slučke odoberáme zo senzora gest iba dva výstupy, GES_RIGHT_FLAG, GES_LEFT_FLAG a tieto slúžia na vedenie funkcie displayDynamic ().

Funkcia displayDynamic () vypočíta interval od posledného zobrazenia dynamických emodži po aktuálny čas, ak interval prekročí TIMEOUT, zastaví prehrávanie statických emodži a nastaví spustenie zobrazeného indexu dynamických emodži. Keď sa čítajú gestá zľava doprava, počiatočný index je 0 a index sa po opätovnom prečítaní gest zľava doprava zvýši. V opačnom prípade je počiatočný index posledným indexom poľa DYNAMIC a index sa zníži.

void displayDynamic (bool leftToRight) {

bez znamienka dlhý currentTime = millis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; showStatic = false; } // Toto sa používa na zabránenie prekročeniu hranice. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DYNAMIC) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMICKÝ [leftToRight? dIndex ++: dIndex--]; }

Ak je prekročená doba TIMEOUT, neprečítajú sa žiadne gestá, obnoví sa prehrávanie statických emodži.

Odovzdajte program do svojho Seeeduino, všetko je hotové. Hrajte a bavte sa!

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])) Matica matice_8x8; uint64_t matrixDisplay = 0; nepodpísané dlhé prevTime = millis (); int8_t sIndex = 0; bool showStatic = true; konšt uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; konšt uint64_t DYNAMICKÝ = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const 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 sa používa na zabránenie prekročeniu hranice. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); oneskorenie (100); }

Odporúča: