Cuprins:

Iluminează-ți Valentine-ul cu matricea strălucitoare: 5 pași
Iluminează-ți Valentine-ul cu matricea strălucitoare: 5 pași

Video: Iluminează-ți Valentine-ul cu matricea strălucitoare: 5 pași

Video: Iluminează-ți Valentine-ul cu matricea strălucitoare: 5 pași
Video: Vladuta Lupau - Pana la stele [video oficial] 2024, Iulie
Anonim
Luminează-ți Valentine-ul cu Matricea Spumante
Luminează-ți Valentine-ul cu Matricea Spumante

Ziua Îndrăgostiților este o șansă pentru tine de a trimite mesaje de dragoste. De ce să nu faci o față LED distractivă cu componente ieftine pentru a-ți exprima sentimentul!

Pasul 1: Lucruri utilizate în acest proiect

Componente hardware

  • Seeeduino V4.2
  • Scutul de bază
  • Grove - Matrix cu LED roșu cu driver
  • Grove - Gest (PAJ7620U2)

Aplicații software și servicii online

IDE Arduino

Pasul 2: Poveste

Image
Image

Pasul 3: Conexiune hardware

Imagine
Imagine

În acest proiect, folosim senzorul de gestiune ca intrare și oferim feedback-ul driverului matricei LED pentru a alimenta matricea LED roșie.

Trebuie să conectați Grove - Gesture și Grove - Red LED Matrix w / Driver la portul I ^ 2 ^ C al scutului de bază care este conectat la Seeeduino. Apoi conectați Seeeduino la computer printr-un cablu USB.

Pasul 4: Programare software

Planul acestui proiect este de a afișa emoji-urile statice (fața plângând și fața de așteptare) atunci când nu a fost citit nici un gest la stânga sau la dreapta.

Afișați emoji-uri dinamice de schimbare a poziției ochilor, controlate prin gestul stânga sau dreapta atunci când a fost citit un gest stânga sau dreapta.

Imagine
Imagine

La poziția specifică a ochiului, o inimă bătută va fi afișată pe matricea LED.

Imagine
Imagine

Modelele de afișare cu LED-uri sunt proiectate de LED Matrix Editor, puteți modifica sau adăuga modelele de LED-uri în programele de mai sus.

Pentru a vă pregăti pentru acest proiect, este necesar să instalați bibliotecile Grove - Gesture, Grove - Red LED Matrix cu driver și MsTimer2 în Arduino IDE.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

În timpul procedurii de configurare, am inițializat funcțiile Serial, matrix și MsTimer2. Serial inițializat este folosit pentru depanarea programului, deci nu este necesar să vă conectați la PC sau să utilizați Serial Monitor după depanare. Folosim MsTimer2 în acest proiect pentru a controla afișarea emoji-urilor statice.

// Initializat serialul pentru depanare.

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

În bucla principală, luăm doar două ieșiri de la senzorul de gesturi, GES_RIGHT_FLAG, GES_LEFT_FLAG și acestea sunt utilizate pentru a ghida funcția displayDynamic ().

Funcția displayDynamic () va calcula intervalul de la ultima afișare a emoji-urilor dinamice până la ora curentă, dacă intervalul depășește TIMEOUT, va opri redarea emoji-urilor statice și va seta indexul emoji dinamic afișat pentru a începe. Când se citesc gesturile de la stânga la dreapta, indicele de pornire este 0, iar indexul va fi mărit după ce se citesc din nou gesturile de la stânga la dreapta. În caz contrar, indexul de început este ultimul index al matricei DINAMICE, iar indexul va fi redus.

display nul Dynamic (bool leftToRight) {

long semnat currentTime = millis (); if (CurrentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIC) - 1; showStatic = fals; } // Aceasta este utilizată pentru a evita depășirea limitei. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DINAMIC) - 1: 0; } prevTime = CurrentTime; matrixDisplay = DYNAMIC [leftToRight? dIndex ++: dIndex--]; }

Nu se citește niciun gest dacă perioada de TIMEOUT este depășită, redarea emoji statică va fi restabilită.

Încărcați programul pe Seeeduino, gata. Joacă-te și distrează-te!

Pasul 5: Cod

#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])) Matrice_8x8 matrice; uint64_t matrixDisplay = 0; unsigned long prevTime = millis (); int8_t sIndex = 0; bool showStatic = adevărat; 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 = Ora curentă; dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIC) - 1; } // Aceasta este utilizată pentru a evita depășirea limitei. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); întârziere (100); }

Recomandat: