Mündəricat:

Parlaq Matrix ilə Sevgilinizi Yandırın: 5 addım
Parlaq Matrix ilə Sevgilinizi Yandırın: 5 addım

Video: Parlaq Matrix ilə Sevgilinizi Yandırın: 5 addım

Video: Parlaq Matrix ilə Sevgilinizi Yandırın: 5 addım
Video: Как рассчитать Матрицу Судьбы? Грамотное составление матрицы по дате рождения | Нумеролог Артем Блок 2024, Iyul
Anonim
Parlaq Matrix ilə Sevgililərinizi Yandırın
Parlaq Matrix ilə Sevgililərinizi Yandırın

Sevgililər Günü sevgi mesajları göndərmək üçün bir şansdır. Niyə hisslərinizi ifadə etmək üçün ucuz komponentlərlə əyləncəli bir LED üzü düzəltməyin!

Addım 1: Bu Layihədə İstifadə Edilən Şeylər

Avadanlıq komponentləri

  • Seeeduino V4.2
  • Baza Qalxanı
  • Grove - Sürücü olmadan Qırmızı LED Matrix
  • Grove - Jest (PAJ7620U2)

Proqram proqramları və onlayn xidmətlər

Arduino IDE

Addım 2: Hekayə

Image
Image

Addım 3: Avadanlıq Bağlantısı

Şəkil
Şəkil

Bu layihədə, jest sensorunu giriş olaraq istifadə edirik və qırmızı LED matrisini qidalandırmaq üçün LED matris sürücüsünə geribildirim veririk.

Groed - Jest və Grove - Qırmızı LED Matrisini Sürücü ilə birləşdirərək Seeeduino'ya qoşulan əsas qalxanın I^2^C portuna bağlamalısınız. Sonra Seeeduino'yu USB kabel vasitəsilə PC -yə qoşun.

Addım 4: Proqramlaşdırma

Bu layihənin planı, sol və ya sağ jest oxunmadıqda statik emojini (ağlayan üz və gözləyən üz) göstərməkdir.

Sol və ya sağ jest oxunduqda sol və ya sağ jestlə idarə olunan dinamik göz mövqeyi dəyişmə emojisini göstərin.

Şəkil
Şəkil

Xüsusi göz mövqeyində, vuruşlu ürək LED matrisində göstəriləcək.

Şəkil
Şəkil

LED ekran nümunələri LED Matrix Redaktoru tərəfindən hazırlanmışdır, yuxarıdakı proqram şoularında LED modellərinizi dəyişə və ya əlavə edə bilərsiniz.

Bu layihəyə hazırlaşmaq üçün Arduino IDE -yə Grove - Gesture, Grove - Red LED Matrix və Sürücü və MsTimer2 kitabxanalarını quraşdırmaq lazımdır.

#"Grove_LED_Matrix_Driver_HT16K33.h" daxil edin

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

Quraşdırma proseduru zamanı Serial, matrix və MsTimer2 funksiyalarını işə saldıq. Başlanğıc Serialı proqramı ayıklamak üçün istifadə olunur, buna görə ayıklamadan sonra PC -yə qoşulmaq və ya Serial Monitordan istifadə etmək lazım deyil. Statik emojinin görüntüsünü idarə etmək üçün bu layihədə MsTimer2 istifadə edirik.

// Serialı düzəltmək üçün işə saldı.

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

Əsas döngədə, jest sensorundan yalnız iki çıxış alırıq, GES_RIGHT_FLAG, GES_LEFT_FLAG və bunlar DisplayDynamic () funksiyasını istiqamətləndirmək üçün istifadə olunur.

DisplayDynamic () funksiyası, dinamik emojinin son dəfə göstərilməsindən cari vaxta qədər olan aralığını hesablayacaq, interval TIMEOUT -dan çox olarsa, statik emoji çalmağı dayandıracaq və göstəriləcək dinamik emoji indeksini işə salacaq. Soldan sağa hərəkətlər oxunduqda başlanğıc indeksi 0-dır və soldan sağa hərəkətləri yenidən oxuduqdan sonra indeks artacaq. Əks təqdirdə, başlanğıc indeksi DYNAMIC serialının son indeksidir və indeks azalacaq.

void displayDynamic (bool leftToRight) {

işarəsiz uzun currentTime = millis (); əgər (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DİNAMİK) - 1; showStatic = yalan; } // Bu, sərhədi aşmamaq üçün istifadə olunur. əgər (dIndex> = ARRAY_LENGTH (DİNAMİK) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DİNAMİK) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMIC [leftToRight? dIndex ++: dIndex--]; }

TIMEOUT müddəti keçərsə, heç bir jest oxunmur, statik emoji oynanması bərpa ediləcək.

Proqramı Seeeduino'ya yükləyin, hər şey bitdi. Oynayın və əylənin!

Addım 5: Kod

#"Grove_LED_Matrix_Driver_HT16K33.h" daxil edin

#include "MsTimer2.h" #include "paj7620.h" #include "Wire.h" #define TIMEOUT 5000 #define GES_REG_ADDR 0x43 #derine ARRAY_LENGTH (array) (sizeof (array) / sizeof (array [0])) Matrix_8x8 matris; uint64_t matrixDisplay = 0; işarəsiz uzun prevTime = millis (); int8_t sIndex = 0; bool showStatic = doğru; const uint64_t STATİK = {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 (STATİK); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (DİNAMİK) - 1; } // Bu, sərhədi aşmamaq üçün istifadə olunur. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); gecikmə (100); }

Tövsiyə: