Innholdsfortegnelse:

Lys opp valentinen din med glitrende matrise: 5 trinn
Lys opp valentinen din med glitrende matrise: 5 trinn

Video: Lys opp valentinen din med glitrende matrise: 5 trinn

Video: Lys opp valentinen din med glitrende matrise: 5 trinn
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, November
Anonim
Lys opp din valentine med glitrende matrise
Lys opp din valentine med glitrende matrise

Valentinsdag er en mulighet for deg til å sende kjærlighetsmeldinger. Hvorfor ikke lage et morsomt LED -ansikt med rimelige komponenter for å uttrykke din følelse!

Trinn 1: Ting som brukes i dette prosjektet

Maskinvarekomponenter

  • Seeeduino V4.2
  • Base skjold
  • Grove - Rød LED Matrix m/driver
  • Grove - Gest (PAJ7620U2)

Programvare -apper og online -tjenester

Arduino IDE

Trinn 2: Historie

Image
Image

Trinn 3: Maskinvaretilkobling

Bilde
Bilde

I dette prosjektet bruker vi gestsensoren som inngang og gir tilbakemeldingen til LED -matrisedriveren for å mate den røde LED -matrisen.

Du må koble Grove - Gesture og Grove - Red LED Matrix w/Driver til I^2^C -porten på basiskjoldet som er plugget inn i Seeeduino. Koble deretter Seeeduino til PC via en USB -kabel.

Trinn 4: Programvareprogrammering

Planen for dette prosjektet er å vise den statiske emojien (gråtende ansikt og ventende ansikt) når det ikke er lest noen venstre eller høyre gest.

Vis dynamisk øye-posisjon-endre emoji med kontrollert av venstre eller høyre gest når det er venstre eller høyre gest blitt lest.

Bilde
Bilde

Ved den spesifikke øyeposisjonen vil et bankende hjerte vises på LED -matrisen.

Bilde
Bilde

LED -skjermmønstrene er designet av LED Matrix Editor, du kan endre eller legge til LED -mønstrene dine i programprogrammer ovenfor.

For å gjøre deg klar for dette prosjektet, er det nødvendig å installere Grove - Gesture, Grove - Red LED Matrix w/Driver og MsTimer2 -biblioteker i Arduino IDE.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

Under installasjonsprosedyren initialiserte vi funksjonene Serial, matrix og MsTimer2. Initialized Serial brukes til å feilsøke programmet, så det er unødvendig å koble til PC eller bruke Serial Monitor etter feilsøking. Vi bruker MsTimer2 i dette prosjektet for å kontrollere visningen av den statiske emojien.

// Initialiserte serien for å feilsøke.

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

I hovedsløyfen tar vi bare to utganger fra gest -sensoren, GES_RIGHT_FLAG, GES_LEFT_FLAG, og disse brukes til å veilede displayDynamic () -funksjonen.

DisplayDynamic () -funksjonen beregner intervallet fra forrige gang dynamisk emoji ble vist til gjeldende tid, hvis intervallet overstiger enn TIMEOUT, stopper det avspillingen av statisk emoji og setter den viste dynamiske emoji -indeksen til å starte. Når bevegelser fra venstre til høyre leses, er startindeksen 0, og indeksen økes etter at venstre-til-høyre-bevegelsene er lest igjen. Ellers er startindeksen den siste indeksen for DYNAMIC array, og indeksen vil bli redusert.

void displayDynamic (bool leftToRight) {

usignert lang currentTime = millis (); hvis (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; showStatic = false; } // Dette brukes for å unngå å overskride grensen. hvis (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DYNAMIC) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMIC [leftToRight? dIndex ++: dIndex--]; }

Ingen gest blir lest hvis TIMEOUT -perioden overskrides, statisk emoji -avspilling blir gjenopprettet.

Last opp programmet til Seeeduino, alt er gjort. Spill og ha det gøy!

Trinn 5: Kode

#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])) Matrise_8x8 matrise; uint64_t matrixDisplay = 0; usignert lang 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 = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; } // Dette brukes for å unngå å overskride grensen. hvis (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); forsinkelse (100); }

Anbefalt: