Satura rādītājs:

Iededziet savu Valentīnu ar dzirkstošo matricu: 5 soļi
Iededziet savu Valentīnu ar dzirkstošo matricu: 5 soļi

Video: Iededziet savu Valentīnu ar dzirkstošo matricu: 5 soļi

Video: Iededziet savu Valentīnu ar dzirkstošo matricu: 5 soļi
Video: 14 февраля нарисуйте эту цифру на руке. Что ожидать от этого дня 2024, Novembris
Anonim
Iededziet savu Valentīnu ar dzirkstošo matricu
Iededziet savu Valentīnu ar dzirkstošo matricu

Valentīna diena ir iespēja nosūtīt mīlestības ziņas. Kāpēc gan neizveidot jautru LED seju ar lētiem komponentiem, lai izteiktu savas sajūtas!

1. darbība. Šajā projektā izmantotās lietas

Aparatūras komponenti

  • Seeeduino V4.2
  • Bāzes vairogs
  • Grove - sarkana LED matrica ar draiveri
  • Grove - žests (PAJ7620U2)

Programmatūras lietotnes un tiešsaistes pakalpojumi

Arduino IDE

2. darbība: stāsts

Image
Image

3. darbība. Aparatūras savienojums

Attēls
Attēls

Šajā projektā mēs izmantojam žestu sensoru un dodam atgriezenisko saiti LED matricas draiverim, lai pabarotu sarkano LED matricu.

Grove - žests un Grove - sarkanā LED matrica ar draiveri jāpievieno pamatnes vairoga I^2^C portam, kas ir pievienots Seeeduino. Pēc tam savienojiet Seeeduino ar datoru, izmantojot USB kabeli.

4. solis: programmatūras programmēšana

Šī projekta plāns ir parādīt statiskās emocijzīmes (raudoša seja un gaidīšanas seja), kad nav nolasīts kreisais vai labais žests.

Parādiet dinamiskas acu pozīcijas maiņas emocijzīmes ar kreisās vai labās puses žestu, kad tiek nolasīts kreisais vai labais žests.

Attēls
Attēls

Konkrētā acu stāvoklī uz LED matricas tiks parādīta pukstoša sirds.

Attēls
Attēls

LED displeja modeļus ir izstrādājis LED matricas redaktors, jūs varat mainīt vai pievienot savus LED modeļus iepriekš redzamajās programmu izstādēs.

Lai sagatavotos šim projektam, Arduino IDE ir jāinstalē bibliotēkas Grove - Gesture, Grove - Red LED Matrix w/Driver un MsTimer2.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

Iestatīšanas procedūras laikā mēs inicializējām Serial, matrix un MsTimer2 funkcijas. Initialized Serial tiek izmantots programmas atkļūdošanai, tāpēc pēc atkļūdošanas nav nepieciešams izveidot savienojumu ar datoru vai izmantot Serial Monitor. Šajā projektā mēs izmantojam MsTimer2, lai kontrolētu statisko emocijzīmju parādīšanu.

// Inicializēja sēriju atkļūdošanai.

Sērijas sākums (9600); kamēr (! Seriāls); paj7620Init (); Wire.begin (); matrix.init (); matrix.setBrightness (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: set (1000, displayStatic); MsTimer2:: start ();

Galvenajā ciklā mēs ņemam tikai divas izejas no žestu sensora - GES_RIGHT_FLAG, GES_LEFT_FLAG, un tās tiek izmantotas, lai vadītu funkciju displayDynamic ().

Funkcija displayDynamic () aprēķinās intervālu no pēdējās dinamiskās emocijzīmes parādīšanas reizes līdz pašreizējam laikam, ja intervāls pārsniedz TIMEOUT, tā pārtrauks statisku emocijzīmju atskaņošanu un iestatīs parādītā dinamisko emocijzīmju indeksa sākšanu. Ja tiek lasīti žesti no kreisās uz labo, sākuma indekss ir 0, un indekss tiks palielināts pēc žestu no kreisās uz labo vēlreiz lasīšanas. Pretējā gadījumā sākuma indekss ir pēdējais DYNAMIC masīva indekss, un indekss tiks samazināts.

void displayDynamic (bool leftToRight) {

neparakstīts ilgs strāvas laiks = milis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIKA) - 1; showStatic = nepatiess; } // To izmanto, lai nepārsniegtu robežu. ja (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DINAMIKA) - 1: 0; } iepriekšējais laiks = pašreizējais laiks; matrixDisplay = DINAMISKA [leftToRight? dIndex ++: dIndex--]; }

Ja tiek pārsniegts TIMEOUT periods, žests netiek nolasīts, statiskā emocijzīmju atskaņošana tiks atjaunota.

Augšupielādējiet programmu savā Seeeduino, viss ir izdarīts. Spēlējiet un izklaidējieties!

5. darbība: kods

#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 (masīvs) (sizeof (masīvs) / sizeof (masīvs [0])) Matrica_8x8 matrica; uint64_t matrixDisplay = 0; neparakstīts garš prevTime = milis (); int8_t sIndex = 0; bool showStatic = taisnība; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DINAMIKA = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t SIRDS = {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 = pašreizējais laiks; dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIKA) - 1; } // To izmanto, lai nepārsniegtu robežu. ja (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); kavēšanās (100); }

Ieteicams: