فهرست مطالب:

ولنتاین خود را با ماتریس درخشان روشن کنید: 5 مرحله
ولنتاین خود را با ماتریس درخشان روشن کنید: 5 مرحله

تصویری: ولنتاین خود را با ماتریس درخشان روشن کنید: 5 مرحله

تصویری: ولنتاین خود را با ماتریس درخشان روشن کنید: 5 مرحله
تصویری: گوز زدن پریانکا چوپرا هنرپیشه بالیوود در یکی از برنامه های لایف تلویزیونی |C&C 2024, جولای
Anonim
ولنتاین خود را با ماتریس درخشان روشن کنید
ولنتاین خود را با ماتریس درخشان روشن کنید

روز ولنتاین فرصتی است برای شما برای ارسال پیام های عاشقانه. چرا یک چهره سرگرم کننده LED با اجزای ارزان قیمت برای بیان احساسات خود ایجاد نکنید!

مرحله 1: موارد مورد استفاده در این پروژه

اجزای سخت افزاری

  • Seeeduino V4.2
  • سپر پایه
  • Grove - ماتریس LED قرمز با راننده
  • Grove - Gesture (PAJ7620U2)

برنامه های نرم افزاری و خدمات آنلاین

آردوینو IDE

مرحله 2: داستان

Image
Image

مرحله 3: اتصال سخت افزار

تصویر
تصویر

در این پروژه ، ما از سنسور حرکت به عنوان ورودی استفاده می کنیم و بازخورد را به راننده ماتریس LED می دهیم تا ماتریس LED قرمز را تغذیه کند.

شما باید Grove - Gesture and the Grove - Red LED Matrix w/Driver را به پورت I^2^C سپر اصلی متصل کنید که به Seeeduino وصل شده است. سپس Seeeduino را از طریق کابل USB به رایانه وصل کنید.

مرحله 4: برنامه نویسی نرم افزار

برنامه این پروژه نمایش ایموجی های ایستا (صورت گریان و صورت انتظار) در زمانی است که هیچ حرکت چپ یا راست خوانده نشده باشد.

هنگامی که ژست چپ یا راست خوانده می شود ، ایموجی های پویای تغییر موقعیت چشم را تغییر دهید.

تصویر
تصویر

در موقعیت خاص چشم ، قلب تپنده روی ماتریس LED نمایش داده می شود.

تصویر
تصویر

الگوهای صفحه نمایش LED توسط LED Matrix Editor طراحی شده است ، می توانید الگوهای LED خود را در برنامه های بالا تغییر دهید یا اضافه کنید.

برای آماده شدن برای این پروژه ، لازم است کتابخانه های Grove - Gesture ، Grove - Red LED w/Driver و MsTimer2 را در Arduino IDE نصب کنید.

#شامل "Grove_LED_Matrix_Driver_HT16K33.h"

#شامل "MsTimer2.h" #شامل "paj7620.h" #شامل "Wire.h"

در طی مراحل راه اندازی ، توابع Serial ، matrix و MsTimer2 را مقداردهی اولیه کردیم. سریال اولیه برای اشکال زدایی برنامه استفاده می شود ، بنابراین اتصال به رایانه یا استفاده از Serial Monitor پس از اشکال زدایی ضروری نیست. ما در این پروژه از MsTimer2 برای کنترل نمایش ایموجی های ایستا استفاده می کنیم.

// سریال را برای اشکال زدایی اولیه کرد.

Serial.begin (9600)؛ در حالی که (! سریال) ؛ paj7620Init ()؛ Wire.begin ()؛ matrix.init ()؛ matrix.setBrightness (15)؛ matrix.setBlinkRate (BLINK_OFF) ؛ MsTimer2:: مجموعه (1000 ، displayStatic) ؛ MsTimer2:: شروع ()؛

در حلقه اصلی ، ما فقط دو خروجی از سنسور حرکت ، 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 (DYNAMIC) - 1 ؛ showStatic = false؛ } // این برای جلوگیری از فراتر رفتن از مرز استفاده می شود. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex <= -1) {heartBeat ()؛ dIndex = leftToRight؟ ARRAY_LENGTH (دینامیک) - 1: 0 ؛ } prevTime = currentTime؛ matrixDisplay = DYNAMIC [leftToRight؟ dIndex ++: dIndex--]؛ }

اگر مدت زمان TIMEOUT بیشتر شود ، هیچ حرکتی خوانده نمی شود ، بازی emoji ثابت بازیابی می شود.

برنامه را در Seeeduino خود بارگذاری کنید ، تمام شد. بازی کنید و از آن لذت ببرید!

مرحله 5: کد

#شامل "Grove_LED_Matrix_Driver_HT16K33.h"

#شامل "MsTimer2.h" #شامل "paj7620.h" #شامل "Wire.h" #تعریف TIMEOUT 5000 #تعریف GES_REG_ADDR 0x43 #تعریف ARRAY_LENGTH (آرایه) (sizeof (آرایه) / sizeof (آرایه [0])) ماتریس Matrix_8x8؛ uint64_t matrix نمایش = 0؛ 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 HEART = {0x00183c7e7e240000 ، 0x00183c7effff6600 ، 0x183c7effffffff6666 ، 0x00183c7effff6600} ؛ void displayStatic (void) {if (showStatic) {matrixDisplay = STATIC [sIndex]؛ sIndex = (sIndex + 1)٪ ARRAY_LENGTH (STATIC) ؛ }} void heartBeat () {for (uint8_t i = 0؛ i TIMEOUT) {showStatic = false؛ prevTime = currentTime؛ dIndex = leftToRight؟ 0: ARRAY_LENGTH (DYNAMIC) - 1 ؛ } // این برای جلوگیری از فراتر رفتن از مرز استفاده می شود. if (dIndex> = ARRAY_LENGTH (DYNAMIC) || dIndex TIMEOUT) {showStatic = true؛ } matrix.writeOnePicture (matrixDisplay)؛ matrix.display ()؛ تأخیر (100) ؛ }

توصیه شده: