Sisukord:

Valgustage oma valentin sädeleva maatriksi abil: 5 sammu
Valgustage oma valentin sädeleva maatriksi abil: 5 sammu

Video: Valgustage oma valentin sädeleva maatriksi abil: 5 sammu

Video: Valgustage oma valentin sädeleva maatriksi abil: 5 sammu
Video: СУМКА БЫСТРО ПРОСТО ОРИГИНАЛЬНО! 2024, November
Anonim
Valgustage oma sõbrapäev sädeleva maatriksiga
Valgustage oma sõbrapäev sädeleva maatriksiga

Sõbrapäev on võimalus armastussõnumeid saata. Miks mitte teha lõbus LED -nägu odavate komponentidega, et oma tundeid väljendada!

Samm: selles projektis kasutatud asjad

Riistvara komponendid

  • Seeeduino V4.2
  • Aluskilp
  • Grove - punane LED -maatriks draiveriga
  • Grove - žest (PAJ7620U2)

Tarkvararakendused ja võrguteenused

Arduino IDE

2. samm: lugu

Image
Image

Samm: riistvaraühendus

Pilt
Pilt

Selles projektis kasutame žestandurit sisendina ja anname tagasisidet LED -maatriksi draiverile, et toita punast LED -maatriksit.

Peate ühendama Grove - žesti ja Grove - punase LED -maatriksi draiveriga Seeeduinoga ühendatud põhikilbi I^2^C porti. Seejärel ühendage Seeeduino USB -kaabli abil arvutiga.

4. samm: tarkvara programmeerimine

Selle projekti plaan on kuvada staatiline emotikon (nuttev nägu ja ootav nägu), kui vasakut või paremat žesti pole loetud.

Kuvage dünaamilisi silmaasendi muutmise emotikone, mida juhitakse vasaku või parema liigutusega, kui loetakse vasakut või paremat žesti.

Pilt
Pilt

Konkreetses silmaasendis kuvatakse LED -maatriksil pekslev süda.

Pilt
Pilt

LED -ekraanimustrid on kujundanud LED -maatriksiredaktor, saate oma LED -mustreid muuta või lisada ülaltoodud programmisaadetes.

Selle projekti ettevalmistamiseks on vaja Arduino IDE -sse installida raamatukogud Grove - Gesture, Grove - Red LED Matrix w/Driver ja MsTimer2.

#include "Grove_LED_Matrix_Driver_HT16K33.h"

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

Seadistusprotseduuri ajal lähtestasime funktsioonid Serial, maatriks ja MsTimer2. Initsialiseeritud seeriat kasutatakse programmi silumiseks, seega pole pärast silumist vaja arvutiga ühendust luua ega Serial Monitori kasutada. Selles projektis kasutame staatiliste emotikonide kuvamise juhtimiseks MsTimer2.

// Sarja vormindamine silumiseks.

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

Põhiahelas võtame žestiandurist ainult kaks väljundit GES_RIGHT_FLAG, GES_LEFT_FLAG ja neid kasutatakse funktsiooni displayDynamic () juhtimiseks.

Funktsioon displayDynamic () arvutab intervalli alates viimasest dünaamilise emotikoni kuvamise hetkest kuni praeguse ajani, kui intervall ületab TIMEOUT, lõpetab see staatiliste emotikonide esitamise ja määrab kuvatud dünaamiliste emotikonide indeksi käivitamise. Kui loetakse vasakult paremale žeste, on algusindeks 0 ja indeksit suurendatakse pärast vasakult paremale liigutuste uuesti lugemist. Vastasel korral on algusindeks DYNAMIC -massiivi viimane indeks ja indeksit vähendatakse.

void displayDynamic (bool leftToRight) {

allkirjastamata pikk vooluaeg = millis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DÜNAAMILINE) - 1; showStatic = vale; } // Seda kasutatakse piiri ületamise vältimiseks. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DÜNAAMILINE) - 1: 0; } prevTime = praegune aeg; matrixDisplay = DÜNAAMILINE [leftToRight? dIndex ++: dIndex--]; }

TIMEOUT -i perioodi ületamisel ei loeta ühtegi žesti, staatiline emotikonide esitamine taastatakse.

Laadige programm oma Seeeduinosse üles, kõik on valmis. Mängi ja naudi!

Samm: kood

#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])) Maatriks_8x8 maatriks; uint64_t matrixDisplay = 0; signeerimata pikk prevTime = millis (); int8_t sIndex = 0; bool showStatic = tõsi; 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 (tühine) {if (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH (STATIC); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = praegune aeg; dIndex = leftToRight? 0: ARRAY_LENGTH (DÜNAAMILINE) - 1; } // Seda kasutatakse piiri ületamise vältimiseks. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = tõsi; } matrix.writeOnePicture (matrixDisplay); matrix.display (); viivitus (100); }

Soovitan: