Taula de continguts:

Encén el teu Sant Valentí amb una matriu escumosa: 5 passos
Encén el teu Sant Valentí amb una matriu escumosa: 5 passos

Vídeo: Encén el teu Sant Valentí amb una matriu escumosa: 5 passos

Vídeo: Encén el teu Sant Valentí amb una matriu escumosa: 5 passos
Vídeo: САЛО. ЖАРЕННАЯ КАРТОШКА С ЛУКОМ. УЧУ ДЕТЕЙ ГОТОВИТЬ 2024, De novembre
Anonim
Il·lumina el teu Sant Valentí amb una matriu espumosa
Il·lumina el teu Sant Valentí amb una matriu espumosa

El dia de Sant Valentí és una oportunitat per enviar missatges d’amor. Per què no fer una cara LED divertida amb components econòmics per expressar el vostre sentiment?

Pas 1: coses utilitzades en aquest projecte

Components de maquinari

  • Seeeduino V4.2
  • Escut base
  • Grove - Matriu LED vermella amb controlador
  • Grove - Gest (PAJ7620U2)

Aplicacions de programari i serveis en línia

IDE Arduino

Pas 2: història

Image
Image

Pas 3: connexió de maquinari

Imatge
Imatge

En aquest projecte, fem servir el sensor de gestos com a entrada i donem la retroalimentació al controlador de matriu LED per alimentar la matriu LED vermella.

Heu de connectar el Grove - Gesture i el Grove - Red LED Matrix w / Driver al port I ^ 2 ^ C de la pantalla base que es connecta al Seeeduino. A continuació, connecteu Seeeduino al PC mitjançant un cable USB.

Pas 4: programació de programari

El pla d’aquest projecte és mostrar els emoji estàtics (cara de plor i cara d’espera) quan no s’hagi llegit cap gest esquerre ni dret.

Mostra els emoji dinàmics que canvien la posició dels ulls amb un gest controlat per l'esquerra o la dreta quan es llegeix el gest esquerre o dret.

Imatge
Imatge

A la posició específica dels ulls, es mostrarà un cor bategant a la matriu LED.

Imatge
Imatge

Els patrons de pantalla LED estan dissenyats per LED Matrix Editor; podeu canviar o afegir els vostres patrons de LED a les mostres del programa anteriors.

Per preparar-vos per a aquest projecte, cal instal·lar biblioteques Grove - Gesture, Grove - Red LED Matrix w / Driver i MsTimer2 a l'IDE Arduino.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

Durant el procediment de configuració, vam inicialitzar les funcions Serial, matrix i MsTimer2. Initialized Serial s'utilitza per depurar el programa, de manera que no és necessari connectar-se a l'ordinador ni utilitzar Serial Monitor després de depurar-lo. Utilitzem MsTimer2 en aquest projecte per controlar la visualització dels emoji estàtics.

// S'ha inicialitzat el serial per depurar-lo.

Serial.begin (9600); mentre que (! sèrie); paj7620Init (); Wire.begin (); matrix.init (); matrix.setBrightness (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: set (1000, displayStatic); MsTimer2:: start ();

Al bucle principal, només prenem dues sortides del sensor de gest, GES_RIGHT_FLAG, GES_LEFT_FLAG i aquestes s’utilitzen per guiar la funció displayDynamic ().

La funció displayDynamic () calcularà l'interval des que es va mostrar l'última vegada que es va mostrar l'emoji dinàmic fins a l'hora actual, si l'interval és superior a TIMEOUT, deixarà de reproduir emoji estàtics i establirà l'índex d'emoji dinàmic que es visualitzi per començar. Quan es llegeixen els gestos d’esquerra a dreta, l’índex inicial és 0 i l’índex s’incrementarà després de tornar a llegir els gestos d’esquerra a dreta. En cas contrari, l'índex inicial és l'últim índex de la matriu DINÀMICA i l'índex es reduirà.

void displayDynamic (bool leftToRight) {

llarg sense signar currentTime = millis (); if (CurrentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DINÀMIC) - 1; showStatic = fals; } // S'utilitza per evitar superar el límit. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DINÀMIC) - 1: 0; } prevTime = TimeTime actual; matrixDisplay = DINÀMIC [leftToRight? dIndex ++: dIndex--]; }

No es llegeix cap gest si se supera el període de TIMEOUT, es restaurarà la reproducció estàtica d'emoji.

Pengeu el programa al vostre Seeeduino, tot fet. Juga i diverteix-te!

Pas 5: Codi

#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])) Matriu_8x8 matriu; uint64_t matrixDisplay = 0; unsigned long prevTime = millis (); int8_t sIndex = 0; bool showStatic = cert; 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 = Hora actual; dIndex = leftToRight? 0: ARRAY_LENGTH (DINÀMIC) - 1; } // S'utilitza per evitar superar el límit. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); retard (100); }

Recomanat: