ዝርዝር ሁኔታ:

በሚያንጸባርቅ ማትሪክስ የቫለንታይንዎን ያብሩ - 5 ደረጃዎች
በሚያንጸባርቅ ማትሪክስ የቫለንታይንዎን ያብሩ - 5 ደረጃዎች

ቪዲዮ: በሚያንጸባርቅ ማትሪክስ የቫለንታይንዎን ያብሩ - 5 ደረጃዎች

ቪዲዮ: በሚያንጸባርቅ ማትሪክስ የቫለንታይንዎን ያብሩ - 5 ደረጃዎች
ቪዲዮ: ለድሃ አፈር የሚያምሩ አበቦች 2024, ሀምሌ
Anonim
በሚያንጸባርቅ ማትሪክስ የቫለንታይንዎን ያብሩ
በሚያንጸባርቅ ማትሪክስ የቫለንታይንዎን ያብሩ

የቫለንታይን ቀን የፍቅር መልዕክቶችን ለመላክ እድል ነው። ስሜትዎን ለመግለጽ ለምን ርካሽ የ LED ፊት ለምን ርካሽ ክፍሎች አያድርጉ!

ደረጃ 1 በዚህ ፕሮጀክት ውስጥ ያገለገሉ ነገሮች

የሃርድዌር ክፍሎች

  • Seeeduino V4.2
  • የመሠረት ጋሻ
  • ግሮቭ - ቀይ LED ማትሪክስ w/ሾፌር
  • ግሮቭ - የእጅ ምልክት (PAJ7620U2)

የሶፍትዌር መተግበሪያዎች እና የመስመር ላይ አገልግሎቶች

አርዱዲኖ አይዲኢ

ደረጃ 2 - ታሪክ

Image
Image

ደረጃ 3 የሃርድዌር ግንኙነት

ምስል
ምስል

በዚህ ፕሮጀክት ውስጥ የምልክት ዳሳሹን እንደ ግብዓት እንጠቀማለን እና ቀዩን የ LED ማትሪክስን ለመመገብ ለ LED ማትሪክስ ነጂው ግብረመልስ እንሰጣለን።

ግሩቭን - የእጅ ምልክትን እና ግሮቭን - ቀይ የ LED ማትሪክስ ወ/ሾፌርን በ Seeeduino ውስጥ ከተሰካው የመሠረት ጋሻ ወደ I^2^ሲ ወደብ ማገናኘት ያስፈልግዎታል። ከዚያ በዩኤስቢ ገመድ በኩል Seeeduino ን ከፒሲ ጋር ያገናኙ።

ደረጃ 4 የሶፍትዌር ፕሮግራም

የግራ ወይም የቀኝ የእጅ ምልክት በማይነበብበት ጊዜ የዚህ ፕሮጀክት ዕቅዱ የማይንቀሳቀስ ኢሞጂን (የሚያለቅስ ፊት እና የመጠባበቂያ ፊት) ለማሳየት ነው።

የግራ ወይም የቀኝ የእጅ ምልክት ሲነበብ ተለዋዋጭ የአይን-አቀማመጥ ለውጥ ስሜት ገላጭ ምስል በግራ ወይም በቀኝ የእጅ ምልክት ይቆጣጠሩ።

ምስል
ምስል

በተወሰነው የዓይን አቀማመጥ ላይ ፣ የሚመታ ልብ በ LED ማትሪክስ ላይ ይታያል።

ምስል
ምስል

የ LED ማሳያ ቅጦች በ LED ማትሪክስ አርታኢ የተነደፉ ናቸው ፣ ከላይ ባለው የፕሮግራም ትዕይንቶች ውስጥ የ LED ንድፎችንዎን መለወጥ ወይም ማከል ይችላሉ።

ለዚህ ፕሮጀክት ለመዘጋጀት Grove - Gesture, Grove - Red LED Matrix w/Driver እና MsTimer2 ቤተ -ፍርግሞችን ወደ አርዱዲኖ አይዲኢ መጫን ያስፈልጋል።

#ግሮቭ_ኤልኢድ_ማትሪክስ -ድራይቨር_HT16K33.h ን ያካትቱ።

#MsTimer2.h " #አካትት" paj7620.h " #" Wire.h "ን ያካትቱ

በማዋቀሩ ሂደት ወቅት ተከታታይ ፣ ማትሪክስ እና MsTimer2 ተግባሮችን አነሳን። የመነሻ ተከታታይ ፕሮግራሙን ለማረም ጥቅም ላይ ይውላል ፣ ስለሆነም ከፒሲ ጋር መገናኘት ወይም ማረም ከተደረገ በኋላ ተከታታይ መቆጣጠሪያን መጠቀም አላስፈላጊ ነው። የማይንቀሳቀስ ኢሞጂ ማሳያ ለመቆጣጠር በዚህ ፕሮጀክት ውስጥ MsTimer2 ን እንጠቀማለን።

// ለማረም ተከታታይውን አስጀምሯል።

Serial.begin (9600); ሳለ (! ተከታታይ); paj7620Init (); Wire.begin (); matrix.init (); ማትሪክስ ቅንብር ብሩህነት (15); matrix.setBlinkRate (BLINK_OFF); MsTimer2:: set (1000, displayStatic); MsTimer2:: ጀምር ();

በዋናው loop ውስጥ ፣ ከምልክት ዳሳሽ ፣ GES_RIGHT_FLAG ፣ GES_LEFT_FLAG ሁለት ውፅዓቶችን ብቻ እንወስዳለን እና እነዚህ የማሳያ ተለዋዋጭ () ተግባሩን ለመምራት ያገለግላሉ።

የማሳያ ዳይናሚክ () ተግባር ተለዋዋጭ ኢሞጂ ከታየበት ጊዜ ጀምሮ ክፍተቱን ያሰላል ፣ ክፍተቱ ከ TIMEOUT በላይ ከሆነ ፣ የማይንቀሳቀስ ኢሞጂን መጫወት ያቆማል ፣ እና ለመጀመር ተለዋዋጭ የኢሞጂ መረጃ ጠቋሚን ያዋቅራል። ከግራ ወደ ቀኝ ምልክቶች ሲነበቡ ፣ የመነሻ ጠቋሚው 0 ነው ፣ እና ከግራ ወደ ቀኝ ምልክቶች እንደገና ከተነበቡ በኋላ መረጃ ጠቋሚው ይጨምራል። አለበለዚያ ፣ የመነሻ መረጃ ጠቋሚው የ DYNAMIC ድርድር የመጨረሻው መረጃ ጠቋሚ ነው ፣ እና መረጃ ጠቋሚው ይቀንሳል።

ባዶ ማሳያ ተለዋዋጭ (bool leftToRight) {

ያልተፈረመ ረጅም የአሁኑ ጊዜ = ሚሊስ (); ከሆነ (currentTime - prevTime> TIMEOUT) {dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; showStatic = ሐሰት; } // ይህ ድንበሩን ላለማለፍ ያገለግላል። (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat (); dIndex = leftToRight? ARRAY_LENGTH (DYNAMIC) - 1: 0; } prevTime = currentTime; matrixDisplay = DYNAMIC [leftToRight? ዲ ኢንዴክስ ++: dIndex--]; }

የ TIMEOUT ጊዜ ካለፈ ፣ የማይንቀሳቀስ ስሜት ገላጭ ምስል መጫወት ይመለሳል።

ፕሮግራሙን ወደ የእርስዎ Seeeduino ይስቀሉ ፣ ሁሉም ተከናውኗል። ይጫወቱ እና ይደሰቱ!

ደረጃ 5 ኮድ

#ግሮቭ_ኤልኢድ_ማትሪክስ -ድራይቨር_HT16K33.h ን ያካትቱ።

#MsTimer2.h " #አካትት" paj7620.h " #ጨምሮ" Wire.h "#define TIMEOUT 5000 #define GES_REG_ADDR 0x43 #deine ARRAY_LENGTH (array) (sizeof (array) / sizeof (array [0])) ማትሪክስ_8x8 ማትሪክስ; uint64_t matrixDisplay = 0; ያልተፈረመ ረጅም prevTime = millis (); int8_t sIndex = 0; bool showStatic = እውነት; const uint64_t STATIC = {0x00003c0000a54200, 0x00003c000000e700, 0x00003c004242e700}; int8_t dIndex = 0; const uint64_t DYNAMIC = {0x00003c000021e700, 0x00003c000042e700, 0x00003c000084e700}; const uint64_t HEART = {0x00183c7e7e240000 ፣ 0x00183c7effff6600 ፣ 0x183c7effffffff66 ፣ 0x00183c7effff6600}; ባዶ ማሳያStatic (ባዶ) {ከሆነ (showStatic) {matrixDisplay = STATIC [sIndex]; ኢንዴክስ = (sIndex + 1) % ARRAY_LENGTH (STATIC); }} ባዶነት heartBeat () {ለ (uint8_t i = 0; i TIMEOUT) {showStatic = false; prevTime = currentTime; dIndex = leftToRight? 0: ARRAY_LENGTH (DYNAMIC) - 1; } // ይህ ድንበሩን ላለማለፍ ያገለግላል። ከሆነ (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true; } matrix.writeOnePicture (ማትሪክስ ማሳያ); matrix.display (); መዘግየት (100); }

የሚመከር: