Përmbajtje:

Ndriçoni Shën Valentinin tuaj me matricë me gaz: 5 hapa
Ndriçoni Shën Valentinin tuaj me matricë me gaz: 5 hapa

Video: Ndriçoni Shën Valentinin tuaj me matricë me gaz: 5 hapa

Video: Ndriçoni Shën Valentinin tuaj me matricë me gaz: 5 hapa
Video: CREATIVE DESTRUCTION (BOOMER VS ZOOMER) 2024, Nëntor
Anonim
Ndriçoni Shën Valentinin tuaj me një matricë me gaz
Ndriçoni Shën Valentinin tuaj me një matricë me gaz

Dita e Shën Valentinit është një shans për ju që të dërgoni mesazhe dashurie. Pse të mos bëni një fytyrë argëtuese LED me përbërës të lirë për të shprehur ndjenjën tuaj!

Hapi 1: Gjërat e përdorura në këtë projekt

Komponentët e harduerit

  • Seeeduino V4.2
  • Mburoja e Bazës
  • Grove - Matrica LED e Kuqe me Shofer
  • Grove - Gjest (PAJ7620U2)

Aplikacionet softuerike dhe shërbimet online

Arduino IDE

Hapi 2: Histori

Image
Image

Hapi 3: Lidhja e harduerit

Imazhi
Imazhi

Në këtë projekt, ne përdorim sensorin e gjesteve si një hyrje dhe i japim reagime drejtuesit të matricës LED për të ushqyer matricën LED të kuqe.

Ju duhet të lidhni Grove - Gesture dhe Grove - Red LED Matrix w/Driver në portën I^2^C të mburojës bazë e cila është e kyçur në Seeeduino. Pastaj lidhni Seeeduino me PC përmes një kabllo USB.

Hapi 4: Programimi i softuerit

Plani për këtë projekt është të shfaqni emoji statikë (fytyrë që qan dhe fytyrë pritjeje) kur nuk është lexuar ndonjë gjest i majtë ose i djathtë.

Shfaqni emoji dinamike të ndryshimit të pozicionit të syrit me gjestin e majtë ose të djathtë kur lexohet gjesti majtas ose djathtas.

Imazhi
Imazhi

Në pozicionin specifik të syrit, një zemër që rreh do të shfaqet në matricën LED.

Imazhi
Imazhi

Modelet e ekranit LED janë krijuar nga Redaktuesi i Matricës LED, ju mund të ndryshoni ose shtoni modelet tuaja LED në shfaqjet e programit më lart.

Për t'u bërë gati për këtë projekt, kërkohet të instaloni bibliotekat Grove - Gesture, Grove - Red LED w/Driver dhe MsTimer2 në Arduino IDE.

#përfshi "Grove_LED_Matrix_Driver_HT16K33.h"

#përfshi "MsTimer2.h" #include "paj7620.h" #include "Wire.h"

Gjatë procedurës së konfigurimit, ne filluam funksionet Serial, matricë dhe MsTimer2. Seriali fillestar përdoret për të korrigjuar programin, kështu që është e panevojshme të lidheni me PC ose të përdorni Serial Monitor pas korrigjimit. Ne përdorim MsTimer2 në këtë projekt për të kontrolluar shfaqjen e emoji statike.

// Filloi serialin për të korrigjuar.

Serial.filloj (9600); ndërsa (! Serial); paj7620Init (); Wire.begin (); matricë.init (); matrica.setBrightness (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: set (1000, displayStatic); MsTimer2:: fillimi ();

Në lakin kryesor, marrim vetëm dy dalje nga sensori i gjesteve, GES_RIGHT_FLAG, GES_LEFT_FLAG dhe këto përdoren për të drejtuar funksionin displayDynamic ().

Funksioni displayDynamic () do të llogarisë intervalin nga hera e fundit kur emoji dinamikë u shfaq në kohën aktuale, nëse intervali tejkalon kohën TIMEOUT, ai do të ndalojë së luajtur emoji statikë dhe do të vendosë indeksin e emoji dinamik të shfaqur për të filluar. Kur lexohen gjestet nga e majta në të djathtë, indeksi i fillimit është 0 dhe indeksi do të rritet pasi të lexohen përsëri gjestet nga e majta në të djathtë. Përndryshe, indeksi i fillimit është indeksi i fundit i grupit DYNAMIC, dhe indeksi do të ulet.

void displayDynamic (bool leftToRight) {

aktuale e panënshkruar currentTime = millis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIKE) - 1; showStatic = false; } // Kjo përdoret për të shmangur tejkalimin e kufirit. nëse (dIndex> = ARRAY_LENGTH (DINAMIK) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DINAMIKE) - 1: 0; } prevTime = koha aktuale; matrixDisplay = DINAMIK [leftToRight? dIndex ++: dIndex--]; }

Asnjë gjest nuk lexohet nëse tejkalohet periudha TIMEOUT, loja me emoji statik do të rikthehet.

Ngarko programin në Seeeduino, gjithçka është bërë. Luaj dhe argëtohu!

Hapi 5: Kodi

#përfshi "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])) Matricë_8x8 matricë; uint64_t matricaDisplay = 0; prevTime e gjatë e panënshkruar = millis (); int8_t sIndex = 0; bool showStatic = e vërtetë; const uint64_t STATIK = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DINAMIK = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t ZEMRA = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; void displayStatic (void) {if (showStatic) {matrixDisplay = STATIK [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH (STATIKE); }} void heartBeat () {për (uint8_t i = 0; i TIMEOUT) {showStatic = false; koha paraprake = koha aktuale; dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIKE) - 1; } // Kjo përdoret për të shmangur tejkalimin e kufirit. nëse (dIndex> = ARRAY_LENGTH (DINAMIKE) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matricë.shfaq (); vonesa (100); }

Recommended: