Mundarija:

Sevishganlaringizni yorqin matritsa bilan yoriting: 5 qadam
Sevishganlaringizni yorqin matritsa bilan yoriting: 5 qadam

Video: Sevishganlaringizni yorqin matritsa bilan yoriting: 5 qadam

Video: Sevishganlaringizni yorqin matritsa bilan yoriting: 5 qadam
Video: Важно! Самоисцеление ֍ Бог не Создавал Тело для Болезней и Страданий ֍ Стирание Трехмерной Матрицы 2024, Noyabr
Anonim
Sevishganlaringizni yorqin matritsa bilan yoriting
Sevishganlaringizni yorqin matritsa bilan yoriting

Sevishganlar kuni - bu sevgi xabarlarini yuborish uchun imkoniyat. Nega o'z his -tuyg'ularingizni ifodalash uchun arzon komponentli LED -yuzni qiziqarli qilmang!

1 -qadam: Ushbu loyihada ishlatilgan narsalar

Uskuna komponentlari

  • Seeeduino V4.2
  • Asosiy qalqon
  • Grove - haydovchisiz qizil LED matritsasi
  • Grove - ishorasi (PAJ7620U2)

Dasturiy ta'minot va onlayn xizmatlar

Arduino IDE

2 -qadam: hikoya

Image
Image

3 -qadam: Uskuna ulanishi

Rasm
Rasm

Ushbu loyihada biz imo -ishorali sensorni kirish sifatida ishlatamiz va qizil LED matritsasini oziqlantirish uchun LED matritsasi drayveriga fikr bildiramiz.

Siz Grove - Gesture va Grove - Red LED matritsasini haydovchisiz Seeeduino -ga ulangan asosiy qalqonning I^2^C portiga ulashingiz kerak. Keyin Seeeduino -ni USB kabeli orqali kompyuterga ulang.

4 -qadam: dasturiy ta'minot

Loyihaning rejasi chap yoki o'ng imo -ishora o'qilmaganda, statik emojini (yig'layotgan yuz va kutayotgan yuz) ko'rsatishdir.

Chap yoki o'ng imo-ishora o'qilganda, chap yoki o'ng imo-ishora bilan boshqariladigan, ko'z pozitsiyasini o'zgartiradigan dinamik emojini ko'rsatish.

Rasm
Rasm

Ko'zning o'ziga xos holatida, LED matritsasida urayotgan yurak ko'rsatiladi.

Rasm
Rasm

LED displey naqshlari LED Matrix Editor tomonidan ishlab chiqilgan, siz LED naqshlarini yuqoridagi dastur shoularida o'zgartirishingiz yoki qo'shishingiz mumkin.

Ushbu loyihaga tayyorgarlik ko'rish uchun Arduino IDE -ga Grove - Gesture, Grove - Red LED Matrix w/Driver va MsTimer2 kutubxonalarini o'rnatish kerak.

#"Grove_LED_Matrix_Driver_HT16K33.h" ni qo'shing

#"MsTimer2.h" ni kiriting #include "paj7620.h" #"Wire.h" ni qo'shing

O'rnatish jarayonida biz Serial, matrix va MsTimer2 funktsiyalarini ishga tushirdik. Dastlabki ketma -ketlik dasturni nosozliklarni tuzatish uchun ishlatiladi, shuning uchun disk raskadrovka qilinganidan so'ng kompyuterga ulanish yoki ketma -ket monitordan foydalanish shart emas. Biz ushbu loyihada MsTimer2 -dan statik kulgichlar ko'rinishini boshqarish uchun foydalanamiz.

// Serial disk raskadrovka uchun ishga tushirildi.

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

Asosiy tsiklda biz GES_RIGHT_FLAG, GES_LEFT_FLAG imo -ishorali sensordan faqat ikkita chiqishni olamiz va ular DisplayDynamic () funktsiyasini boshqarishda ishlatiladi.

DisplayDynamic () funktsiyasi dinamik emoji oxirgi marta ko'rsatilgandan hozirgi vaqtgacha bo'lgan vaqt oralig'ini hisoblab chiqadi, agar interval TIMEOUTdan oshsa, u statik emodini o'ynatishni to'xtatadi va ko'rsatiladigan dinamik emoji indeksini ishga tushiradi. Chapdan o'ngga imo-ishoralar o'qilganda, boshlang'ich indeks 0 bo'ladi va chapdan o'ngga imo-ishoralar qayta o'qilganidan keyin indeks ko'tariladi. Aks holda, boshlang'ich indeksi DYNAMIC massivining oxirgi indeksidir va indeks kamayadi.

void displayDynamic (bool leftToRight) {

imzosiz uzoq currentTime = millis (); agar (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIK) - 1; showStatic = noto'g'ri; } // Bu chegaradan oshmaslik uchun ishlatiladi. agar (dIndex> = ARRAY_LENGTH (DINAMIK) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DINAMIK) - 1: 0; } prevTime = currentTime; matrixDisplay = DINAMIK [leftToRight? dIndex ++: dIndex--]; }

Agar TIMEOUT muddati o'tib ketgan bo'lsa, hech qanday imo o'qilmaydi, statik emoji o'ynalishi tiklanadi.

Dasturni Seeeduino -ga yuklang, hammasi tayyor. O'ynang va dam oling!

5 -qadam: kod

#"Grove_LED_Matrix_Driver_HT16K33.h" ni qo'shing

#"MsTimer2.h" qo'shish Matrix_8x8 matritsa; uint64_t matrixDisplay = 0; imzosiz uzoq prevTime = millis (); int8_t sIndex = 0; bool showStatic = rost; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DYNAMIC = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t YURAK = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; void displayStatic (void) {if (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH (STATIK); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIK) - 1; } // Bu chegaradan oshib ketmaslik uchun ishlatiladi. agar (dIndex> = ARRAY_LENGTH (DINAMIK) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); kechikish (100); }

Tavsiya: