INHOUDSOPGAWE:

Verlig jou valentynsdag met sprankelende matriks: 5 stappe
Verlig jou valentynsdag met sprankelende matriks: 5 stappe

Video: Verlig jou valentynsdag met sprankelende matriks: 5 stappe

Video: Verlig jou valentynsdag met sprankelende matriks: 5 stappe
Video: Ho' Oponopono: Pas op voor deze krachtige leer! met Joe Vitale | Ziel van het volgende niveau 2024, November
Anonim
Verlig jou Valentynsdag met 'n sprankelende matriks
Verlig jou Valentynsdag met 'n sprankelende matriks

Valentynsdag bied u die geleentheid om liefdesboodskappe te stuur. Waarom nie 'n prettige LED -gesig met goedkoop komponente om u gevoel uit te druk nie?

Stap 1: Dinge wat in hierdie projek gebruik word

Hardeware komponente

  • Seeeduino V4.2
  • Basisskerm
  • Grove - Rooi LED Matrix met bestuurder
  • Grove - gebaar (PAJ7620U2)

Sagteware -programme en aanlyndienste

Arduino IDE

Stap 2: Verhaal

Image
Image

Stap 3: Hardewareverbinding

Beeld
Beeld

In hierdie projek gebruik ons die gebaar sensor as 'n invoer en gee die terugvoer aan die LED matriks bestuurder om die rooi LED matriks te voer.

U moet die Grove - Gebaar en die Grove - Rooi LED Matrix met bestuurder verbind met die I^2^C -poort van die basisskerm wat in die Seeeduino ingeprop is. Koppel Seeeduino dan via 'n USB -kabel aan die rekenaar.

Stap 4: sagteware programmering

Die plan vir hierdie projek is om die statiese emoji (huilende gesig en wagende gesig) te vertoon as daar geen linker- of regtergebaar gelees is nie.

Vertoon dinamiese oog-posisie-verandering-emoji's met beheer deur die linker- of regtergebaar as daar 'n linker- of regtergebaar gelees is.

Beeld
Beeld

Op die spesifieke oogposisie sal 'n kloppende hart op die LED -matriks verskyn.

Beeld
Beeld

Die LED -skermpatrone is ontwerp deur LED Matrix Editor, u kan u LED -patrone verander of byvoeg in die programprogramme hierbo.

Om gereed te wees vir hierdie projek, moet u Grove - Gesture, Grove - Red LED Matrix w/Driver en MsTimer2 -biblioteke in die Arduino IDE installeer.

#sluit "Grove_LED_Matrix_Driver_HT16K33.h" in

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

Tydens die opstelprosedure het ons die Serial-, matrix- en MsTimer2 -funksies geïnisialiseer. Initialized Serial word gebruik om die program te ontfout, dus is dit onnodig om aan te sluit op 'n rekenaar of om Serial Monitor te gebruik na ontfouting. Ons gebruik MsTimer2 in hierdie projek om die vertoning van die statiese emoji's te beheer.

// Begin die reeks om te ontfout.

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

In die hooflus neem ons slegs twee uitsette van die gebaar sensor, GES_RIGHT_FLAG, GES_LEFT_FLAG, en dit word gebruik om die displayDynamic () funksie te lei.

Die displayDynamic () -funksie sal die interval bereken vanaf die laaste keer dat dinamiese emoji's tot die huidige tyd vertoon is, as die interval meer as TIMEOUT is, sal dit nie meer die statiese emoji speel nie, en sal die vertoonde dinamiese emoji -indeks begin. As gebare van links na regs gelees word, is die beginindeks 0 en word die indeks verhoog nadat links-na-regs gebare weer gelees is. Andersins is die beginindeks die laaste indeks van die DYNAMIC -skikking, en die indeks sal verminder word.

leegte displayDynamic (bool leftToRight) {

ongetekende lang huidige tyd = millis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; showStatic = vals; } // Dit word gebruik om die grens te oorskry. as (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DYNAMIC) - 1: 0; } prevTime = huidige tyd; matrixDisplay = DYNAMIC [leftToRight? dIndex ++: dIndex--]; }

Geen gebaar word gelees as die TIMEOUT -tydperk oorskry word nie, sal statiese emoji -speelgoed herstel word.

Laai die program op na u Seeeduino, klaar. Speel en geniet dit!

Stap 5: Kode

#sluit "Grove_LED_Matrix_Driver_HT16K33.h" in

#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])) Matriks_8x8 matriks; uint64_t matrixDisplay = 0; ongetekende lang prevTime = millis (); int8_t sIndex = 0; bool showStatic = waar; 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 (STATIES); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = huidige tyd; dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; } // Dit word gebruik om die grens te oorskry. as (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); vertraging (100); }

Aanbeveel: