Мазмұны:

Жарқыраған матрицамен Валентинді жарықтандырыңыз: 5 қадам
Жарқыраған матрицамен Валентинді жарықтандырыңыз: 5 қадам

Бейне: Жарқыраған матрицамен Валентинді жарықтандырыңыз: 5 қадам

Бейне: Жарқыраған матрицамен Валентинді жарықтандырыңыз: 5 қадам
Бейне: Пудровая система для ногтей / Маникюр без лампы / ДИП Система 2024, Қараша
Anonim
Жарқыраған матрицамен Валентинді жарықтандырыңыз
Жарқыраған матрицамен Валентинді жарықтандырыңыз

Валентин күні - бұл махаббат туралы хабарлама жіберу мүмкіндігі. Сезіміңізді білдіру үшін арзан компоненттері бар көңілді светодиодты неге жасамасқа!

1 -қадам: Бұл жобада қолданылатын заттар

Аппараттық компоненттер

  • Seeeduino V4.2
  • Негізгі қалқан
  • Grove - драйверсіз қызыл жарықдиодты матрица
  • Гроув - қимылы (PAJ7620U2)

Бағдарламалық жасақтама және онлайн қызметтері

Arduino IDE

2 -қадам: Әңгіме

Image
Image

3 -қадам: аппараттық қосылым

Кескін
Кескін

Бұл жобада біз қимыл сенсорын кіріс ретінде қолданамыз және қызыл жарықдиодты матрицаны беру үшін жарық диодты матрицаның драйверіне кері байланыс береміз.

Сізге Grove - Gesture және Grove - Red LED матрицасын драйвермен Seeeduino -ға қосылған негізгі қалқанның I^2^C портына қосу керек. Содан кейін Seeeduino -ны компьютерге USB кабелі арқылы қосыңыз.

4 -қадам: бағдарламалық қамтамасыз ету

Бұл жобаның жоспары - сол немесе оң қимыл оқылмаған кезде статикалық эмодзиді (жылап тұрған бет пен күту беті) көрсету.

Оң немесе сол қимыл оқылған кезде солға немесе оңға қимылмен басқарылатын динамикалық эмодзиді көрсетіңіз.

Кескін
Кескін

Көздің нақты позициясында жарық диодты матрицада соғып тұрған жүрек көрсетіледі.

Кескін
Кескін

Жарықдиодты дисплей үлгілері LED Matrix редакторымен жасалған, сіз жоғарыдағы бағдарламалық шоуларда жарықдиодты үлгілерді өзгерте немесе қоса аласыз.

Бұл жобаға дайын болу үшін Arduino IDE -ге Grove - Gesture, Grove - Red LED Matrix w/Driver және MsTimer2 кітапханаларын орнату қажет.

#«Grove_LED_Matrix_Driver_HT16K33.h» қосыңыз

#«MsTimer2.h» қосу #«paj7620.h» қосу «» Wire.h «қосу

Орнату процедурасы кезінде біз Serial, matrix және MsTimer2 функцияларын инициализацияладық. Бастапқы серия бағдарламаны түзету үшін пайдаланылады, сондықтан жөндеуді аяқтағаннан кейін компьютерге қосылу немесе сериялық мониторды пайдалану қажет емес. Біз бұл жобада MsTimer2 көмегімен статикалық эмодзидің дисплейін басқарамыз.

// Серияны отладкаға инициализациялады.

Serial.begin (9600); while (! сериялық); paj7620Init (); Wire.begin (); matrix.init (); matrix.setBrightness (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: set (1000, displayStatic); MsTimer2:: start ();

Негізгі циклде біз GES_RIGHT_FLAG, GES_LEFT_FLAG қимыл сенсорынан тек екі шығыс аламыз және олар displayDynamic () функциясын басқару үшін қолданылады.

DisplayDynamic () функциясы динамикалық эмодзидің соңғы рет көрсетілген уақыттан бастап ағымдағы уақытқа дейінгі аралықты есептейді, егер аралық TIMEOUT -тан асса, ол статикалық эмодзиді ойнатуды тоқтатады және динамикалық эмодзи индексін іске қосады. Оңнан солға қимылдар оқылғанда, бастапқы индексі 0 болады, ал солдан оңға қимылдар қайта оқылғаннан кейін көрсеткіш жоғарылайды. Әйтпесе, бастау индексі DYNAMIC массивінің соңғы индексі болып табылады және индекс төмендейді.

void displayDynamic (bool leftToRight) {

белгісіз ұзақ currentTime = millis (); if (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIC) - 1; showStatic = жалған; } // Бұл шекарадан асып кетпеу үшін қолданылады. if (dIndex> = ARRAY_LENGTH (DINAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (ДИНАМИКАЛЫҚ) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMIC [leftToRight? dIndex ++: dIndex--]; }

Егер TIMEOUT кезеңі асып кетсе, ешқандай қимыл оқылмайды, статикалық эмодзи ойнатылады.

Бағдарламаны Seeeduino -ға жүктеңіз, бәрі дайын. Ойнаңыз және көңілді болыңыз!

5 -қадам: код

#«Grove_LED_Matrix_Driver_HT16K33.h» қосыңыз

#қосу «MsTimer2.h» #include «paj7620.h» #include «Wire.h» #TIMEOUT 5000 анықтау #GES_REG_ADDR 0x43 анықтаңыз ARRAY_LENGTH (массив) (өлшемі (массив) / өлшемі (массив [0])) Matrix_8x8 матрицасы; uint64_t matrixDisplay = 0; unsigned long prevTime = millis (); int8_t sIndex = 0; bool showStatic = true; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DYNAMIC = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t ЖҮРЕК = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; void displayStatic (void) {if (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1) % ARRAY_LENGTH (СТАТИКА); }} void heartBeat () {for (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (DINAMIC) - 1; } // Бұл шекарадан асып кетпеу үшін қолданылады. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (matrixDisplay); matrix.display (); кешіктіру (100); }

Ұсынылған: