Orodha ya maudhui:

Washa Mpendanao wako na Matrix yenye kung'aa: Hatua 5
Washa Mpendanao wako na Matrix yenye kung'aa: Hatua 5

Video: Washa Mpendanao wako na Matrix yenye kung'aa: Hatua 5

Video: Washa Mpendanao wako na Matrix yenye kung'aa: Hatua 5
Video: 🟡 POCO X5 PRO - САМЫЙ ДЕТАЛЬНЫЙ ОБЗОР и ТЕСТЫ 2024, Novemba
Anonim
Nuru Upendanao wako na Matrix yenye kung'aa
Nuru Upendanao wako na Matrix yenye kung'aa

Siku ya wapendanao ni nafasi kwako kutuma ujumbe wa upendo. Kwa nini usifanye uso wa LED wa kufurahisha na vifaa vya bei rahisi kuelezea hisia zako!

Hatua ya 1: Vitu vinavyotumiwa katika Mradi huu

Vipengele vya vifaa

  • Seeeduino V4.2
  • Shield ya Msingi
  • Grove - Matrix nyekundu ya LED w / Dereva
  • Grove - Ishara (PAJ7620U2)

Programu za programu na huduma za mkondoni

Arduino IDE

Hatua ya 2: Hadithi

Image
Image

Hatua ya 3: Uunganisho wa vifaa

Picha
Picha

Katika mradi huu, tunatumia sensa ya ishara kama pembejeo na kutoa maoni kwa dereva wa tumbo la LED kulisha tumbo nyekundu ya LED.

Unahitaji kuunganisha Grove - Gesture na Grove - Red LED Matrix w / Dereva kwa I ^ 2 ^ C bandari ya ngao ya msingi ambayo imechomekwa kwenye Seeeduino. Kisha unganisha Seeeduino kwa PC kupitia kebo ya USB.

Hatua ya 4: Programu ya Programu

Mpango wa mradi huu ni kuonyesha emoji tuli (uso wa kulia na uso wa kusubiri) wakati hakuna ishara ya kushoto au ya kulia iliyosomwa.

Onyesha emoji inayobadilika-nafasi ya kubadilisha macho na kudhibitiwa na ishara ya kushoto au kulia wakati kuna ishara ya kushoto au ya kulia imesomwa.

Picha
Picha

Katika nafasi maalum ya jicho, moyo wa kupiga utaonyeshwa kwenye tumbo la LED.

Picha
Picha

Mwelekeo wa kuonyesha wa LED umeundwa na Mhariri wa Matrix ya LED, unaweza kubadilisha au kuongeza mifumo yako ya LED katika vipindi vya programu hapo juu.

Ili kujiandaa kwa mradi huu, inahitajika kusanikisha Grove - Gesture, Grove - Red LED Matrix w / Dereva na maktaba ya MsTimer2 kwenye Arduino IDE.

# pamoja na "Grove_LED_Matrix_Driver_HT16K33.h"

# pamoja na "MsTimer2.h" # pamoja na "paj7620.h" # pamoja na "Wire.h"

Wakati wa utaratibu wa usanidi, tulianzisha kazi za Serial, matrix na MsTimer2. Serial iliyoanzishwa hutumiwa kurekebisha programu, kwa hivyo sio lazima kuungana na PC au kutumia Serial Monitor baada ya utatuzi. Tunatumia MsTimer2 katika mradi huu kudhibiti onyesho la emoji tuli.

// Ilianzisha mfululizo wa utatuzi.

Serial. Kuanza (9600); wakati (! Serial); paj7620Init (); Wire.begin (); tumbo.init (); Kuweka Mwangaza wa Matrix (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: kuweka (1000, kuonyeshaStatic); MsTimer2:: kuanza ();

Katika kitanzi kuu, tunachukua tu matokeo mawili kutoka kwa sensorer ya ishara, GES_RIGHT_FLAG, GES_LEFT_FLAG na hizi hutumiwa kuongoza kazi ya kuonyeshaDynamic ().

Kazi ya kuonyeshaDynamic () itahesabu muda kutoka mara ya mwisho emoji yenye nguvu ilionyeshwa kwa wakati wa sasa, ikiwa muda unazidi kuliko TIMEOUT, itaacha kucheza emoji tuli, na kuweka faharisi ya emoji iliyoonyeshwa kuanza. Ishara za kushoto kwenda kulia zikisomwa, faharisi ya mwanzo ni 0, na faharisi itaongezwa baada ya ishara ya kushoto kwenda kulia kusoma tena. Vinginevyo, faharisi ya mwanzo ni faharisi ya mwisho ya safu ya DYNAMIC, na faharisi itapungua.

batili displayDynamic (bool leftToRight) {

unsigned longTime ya muda mrefu = millis (); ikiwa (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; onyeshaStatic = uwongo; } // Hii hutumiwa kuzuia kuzidi mpaka. ikiwa (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DYNAMIC) - 1: 0; } prevTime = saa ya sasa; matrixDisplay = DYNAMIC [kushotoToRight? dIndex ++: dIndex--]; }

Hakuna ishara inayosomwa ikiwa muda wa TIMEOUT umezidi, uchezaji wa emoji tuli utarejeshwa.

Pakia mpango kwa Seeeduino yako, yote yamekamilika. Cheza na ufurahi!

Hatua ya 5: Kanuni

# pamoja na "Grove_LED_Matrix_Driver_HT16K33.h"

. Matrix_8x8 tumbo; uint64_t tumboDisplay = 0; prevTime ya muda mrefu isiyotiwa saini = millis (); int8_t sIndex = 0; bool showStatic = kweli; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DYNAMIC = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t MOYO = {0x00183c7e7e240000, 0x00183c7effff6600, 0x183c7effffffff66, 0x00183c7effff6600}; batili displayStatic (batili) {if (showStatic) {matrixDisplay = STATIC [sIndex]; sIndex = (sIndex + 1)% ARRAY_LENGTH (STATIC); }} pigo la moyo batili () {kwa (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = wakati wa sasa; dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; } // Hii hutumiwa kuzuia kuzidi mpaka. ikiwa (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = kweli; } tumbo. andikaPicha Moja (onyesho la Matrix); matrix.display (); kuchelewesha (100); }

Ilipendekeza: