فهرست مطالب:

دست ریتم: 6 مرحله
دست ریتم: 6 مرحله

تصویری: دست ریتم: 6 مرحله

تصویری: دست ریتم: 6 مرحله
تصویری: آموزش تنبک .. پلی ریتم در متر 6/8 / Tonbak tutorial .. polyrhythm in six eight meter 2024, جولای
Anonim
ریتم دست
ریتم دست

این عشق سایبری در مورد انجام حرکت مناسب در زمان مناسب است.

چراغ ها از بازو (آرنج) به دست شما می روند و هنگامی که چراغ ها به دست شما می رسند ، باید انگشتان خود را روی مینی فتوسل فشار دهید.

اگر در لحظه مناسب دست خود را روی مینی فتوسل فشار دهید ، LED ها سبز می شوند. اگر نه ، led ها قرمز می شوند.

مرحله 1: جمع آوری مواد

  • یک دستکش
  • پارچه ای برای بلندتر ساختن دستکش
  • نوار LED WS2812B
  • سیم ها
  • آردوینو
  • مینی عکس فروش

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

ساخت مدارها
ساخت مدارها
ساخت مدارها
ساخت مدارها

ابتدا نوار led را به آردوینو وصل کنید. می توانید با اتصال +5v به 5v در آردوینو این کار را انجام دهید. دین باید در آردوینو به A0 و GND در آردوینو به GND متصل شود.

شما همچنین باید مینی فتوسل را از طریق اتصال به سیم 5v از نوار led و از همان منبع متصل به سیم به PIN 6 در آردوینو به آردوینو متصل کنید. طرف دیگر مینی فتوسل باید از نوار led به سیم GND متصل شود

مرحله 3: طراحی دستکش

طراحی دستکش
طراحی دستکش

اندازه دستکش باید متناسب با نوارهای led باشد. چراغ ها باید تراز شوند تا نگاه لذت بخش تری داشته باشند.

برای این بازی شما باید از بازوی خود استفاده کنید و می خواهید بتوانید آزادانه حرکت کنید. این را می توان با قرار دادن آردوینو روی دستکش متوجه شد. من از چسب Velcro برای اتصال آردوینو به دستکش استفاده کردم. سپس برای ایجاد ثبات بیشتر می توانید طنابی را دور دستکش و اطراف آردوینو قرار دهید.

مینی فتوسل در داخل دستکش دوخته شده است بنابراین در محل خود باقی می ماند.

در نهایت شما باید سیم ها را پنهان کنید تا بهتر به نظر برسد. این را می توان با پارچه ای که روی سیم ها دوخته می شود انجام داد.

مرحله 4: لحیم کاری

لحیم کاری
لحیم کاری

اکنون می توانید سیم های اتصال مدار را با لحیم کاری ایمن کنید.

مرحله 5: کد نویسی

کد نویسی
کد نویسی
کد نویسی
کد نویسی
کد نویسی
کد نویسی

// یک برنامه آزمایشی معمولی نواری NeoPixel.

// NEOPIXEL BEST PRACTICES برای مطمئن ترین عملیات: // - 1000 uF CAPACITOR بین اتصالات + و - نوار NeoPixel اضافه کنید. // - به حداقل رساندن طول سیم بین برد میکروکنترلر و اولین پیکسل. //-DATA-IN نوار NeoPixel باید از طریق مقاومت 300-500 OHM عبور کند. // - اجتناب از اتصال NeoPixels بر روی یک مدار زنده. اگر لازم است ، همیشه GROUND (-) را ابتدا و سپس +، سپس داده را متصل کنید. //-هنگام استفاده از میکروکنترلر 3.3 ولت با نوار NeoPixel 5 ولت ، // یک مبدل LOGIC-LEVEL در خط داده به شدت توصیه می شود. // (رد شدن از این موارد ممکن است روی میز کار شما خوب کار کند ، اما ممکن است در این زمینه شکست بخورد)

#شامل #ifdef _AVR_ #شامل // مورد نیاز برای 16 مگاهرتز Adafruit Trinket #endif

// کدام پین در آردوینو به NeoPixels متصل است؟ // در Trinket یا Gemma پیشنهاد می کنیم این مورد را به 1 تغییر دهید: #تعریف LED_PIN 6

// چند NeoPixel به آردوینو وصل شده است؟ #LED_COUNT 60 را تعریف کنید

// شی نوار NeoPixel ما را اعلام کنید: نوار Adafruit_NeoPixel (LED_COUNT ، LED_PIN ، NEO_GRB + NEO_KHZ800) ؛ uint32_t color = strip. Color (127 ، 127 ، 127) ؛ // رنگ سفید ، برای پیش فرض bool کلیک شده استCorrectly = false؛ // Argument 1 = تعداد پیکسل ها در نوار NeoPixel // Argument 2 = شماره پین آردوینو (اکثر آنها معتبر هستند) // Argument 3 = پرچم های نوع پیکسل ، در صورت نیاز به هم اضافه کنید: // NEO_KHZ800 800 KHz بیت استریم (اکثر محصولات NeoPixel w/ LED های WS2812) // NEO_KHZ400 400 کیلوهرتز (کلاسیک 'v1' (نه v2) پیکسل های FLORA ، درایورهای WS2811) // پیکسل های NEO_GRB برای جریان بیت GRB (اکثر محصولات NeoPixel) // پیکسل های NEO_RGB برای جریان RGB بیت استریم (v1 پیکسل FLORA) ، نه v2) // پیکسل های NEO_RGBW برای جریان بیت RGBW (محصولات NeoPixel RGBW)

// تابع setup ()-یکبار در هنگام راه اندازی اجرا می شود --------------------------------

void setup () {// این خطوط به طور خاص برای پشتیبانی از Adafruit Trinket 5V 16 مگاهرتز است. // هر تخته دیگر ، می توانید این قسمت را حذف کنید (اما ترک آن ضرری ندارد): #اگر تعریف شده باشد (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1) ؛ #endif // END کد اختصاصی Trinket.

pinMode (A0 ، INPUT) ؛ strip.begin ()؛ // INITIALIZE NeoPixel strip object (REQUIRED) strip.show ()؛ // خاموش کردن همه پیکسل ها ASAP strip.setBrightness (10) ؛ // BRIGHTNESS را روی حدود 1/5 (حداکثر = 255)} تنظیم کنید

// تابع حلقه ()-تا زمانی که برد روشن است مکررا اجرا می شود ---------------

void loop () {clickedCorrectly = theaterChaseOne (رنگ) ؛ if (درست کلیک شده) {color = strip. Color (0 ، 255 ، 0) ؛ } else {color = strip. Color (255 ، 0 ، 0) ؛ }}

// برخی از عملکردهای خود ما برای ایجاد جلوه های متحرک -----------------

// چراغهای تعقیب کننده به سبک تئاتر- خیمه شب بازی. یک رنگ (مقدار 32 بیتی ، // نوار a la. رنگ (r ، g ، b) همانطور که در بالا ذکر شد) و زمان تأخیر (بر حسب ms) // بین فریم ها ارسال کنید. bool theaterChaseOne (رنگ uint32_t) {bool correct = false؛ bool clickedWrong = false؛ for (int index = 0؛ index 800) {// value sensor sensor if (index <16) {// 2 leds before end then you can click color = strip. Color (255، 0، 0)؛ // رنگ قرمز leds clickedWrong = true؛ // اشتباه کلیک کرد سپس led ها قرمز می شوند} else if (! clickedWrong) {// اگر اشتباه نیست = color = strip. Color (0، 255، 0)؛ // رنگ سبز leds correct = true؛ // درست کلیک کنید سپس led ها سبز شوند}} strip.clear ()؛ strip.setPixelColor (17 - شاخص ، رنگ) ؛ // چراغ های LED ردیف اول strip.setPixelColor (شاخص 18+ ، رنگ) ؛ // چراغ های LED ردیف دوم strip.setPixelColor (53 - شاخص ، رنگ) ؛ // چراغ های LED ردیف سوم strip.show ()؛ تأخیر (300) ؛ } بازگشت درست ؛ }

مرحله ششم: تغییرات

تغییرات
تغییرات
تغییرات
تغییرات
تغییرات
تغییرات

من تغییراتی ایجاد کردم. اولا آردوینو را مخفی کردم تا راحت تر بتوانم از "دست ریتم" استفاده کنم و دوم اینکه کد را کمی تغییر دادم. من کد را طوری تغییر دادم که وقتی در زمان مناسب فشار می دهید رنگ سبز می شود و LEDS سریعتر حرکت می کند. با این کار LED Swill 10 درصد سریعتر از قبل می شود. این باعث جذابیت بیشتر بازی می شود

حالا کد به این صورت است:

// یک برنامه آزمایشی معمولی نواری NeoPixel. // NEOPIXEL BEST PRACTICES برای مطمئن ترین عملیات: // - 1000 uF CAPACITOR بین اتصالات + و - نوار NeoPixel اضافه کنید. // - به حداقل رساندن طول سیم بین برد میکروکنترلر و اولین پیکسل. //-DATA-IN نوار NeoPixel باید از طریق مقاومت 300-500 OHM عبور کند. // - اجتناب از اتصال NeoPixels بر روی یک مدار زنده. اگر لازم است ، همیشه GROUND (-) را ابتدا و سپس +، سپس داده را متصل کنید. //-هنگام استفاده از میکروکنترلر 3.3 ولت با نوار NeoPixel 5 ولت ، // یک مبدل LOGIC-LEVEL در خط داده به شدت توصیه می شود. // (رد شدن از این موارد ممکن است روی میز کار شما خوب کار کند اما ممکن است در این زمینه شکست بخورد) #شامل #ifdef _AVR_ #شامل // مورد نیاز برای 16 مگاهرتز Adafruit Trinket #endif // کدام پین روی آردوینو به NeoPixels متصل است؟ // در Trinket یا Gemma پیشنهاد می کنیم این مورد را به 1 تغییر دهید: #تعریف LED_PIN 6 // چند NeoPixel به آردوینو وصل شده است؟ #LED_COUNT 60 تعریف کنید // شیء NeoPixel خود را اعلام کنید: نوار Adafruit_NeoPixel (LED_COUNT ، LED_PIN ، NEO_GRB + NEO_KHZ800) ؛ uint32_t color = strip. Color (127 ، 127 ، 127) ؛ // رنگ سفید ، برای پیش فرض bool کلیک شده استCorrectly = false؛ int index = 0؛ فاصله int = 300 ؛ int نتیجه = 0 ؛ امضا نشده longMs = millis ()؛ // Argument 1 = تعداد پیکسل ها در نوار NeoPixel // Argument 2 = شماره پین آردوینو (اکثر آنها معتبر هستند) // Argument 3 = پرچم های نوع پیکسل ، در صورت نیاز به هم اضافه کنید: // NEO_KHZ800 800 KHz بیت استریم (اکثر محصولات NeoPixel w/ LED های WS2812) // NEO_KHZ400 400 کیلوهرتز (کلاسیک 'v1' (نه v2) پیکسل های FLORA ، درایورهای WS2811) // پیکسل های NEO_GRB برای جریان بیت GRB (اکثر محصولات NeoPixel) // پیکسل های NEO_RGB برای جریان RGB بیت استریم (v1 پیکسل FLORA) ، نه v2) // NEO_RGBW پیکسل ها برای RGBW bitstream (محصولات NeoPixel RGBW) // عملکرد () setup ()-یکبار در هنگام راه اندازی اجرا می شود -------------------- ------------ void setup () {// این خطوط به طور خاص برای پشتیبانی از Adafruit Trinket 5V 16 مگاهرتز است. // هر تخته دیگر ، می توانید این قسمت را حذف کنید (اما ترک آن ضرری ندارد): #اگر تعریف شده باشد (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1) ؛ #endif // END کد اختصاصی Trinket. Serial.begin (9600)؛ در حالی که (! سریال) {؛ // منتظر بمانید تا پورت سریال متصل شود. فقط برای پورت USB بومی مورد نیاز است} pinMode (A0، INPUT)؛ strip.begin ()؛ // INITIALIZE NeoPixel strip object (REQUIRED) strip.show ()؛ // خاموش کردن همه پیکسل ها ASAP strip.setBrightness (10) ؛ // تنظیم BRIGHTNESS روی 1/5 (حداکثر = 255)} // عملکرد حلقه ()-تا زمانی که برد روشن است مکرراً اجرا می شود --------------- حلقه خالی () {جریان طولانی بدون علامت = = میلی ثانیه ()؛ // گرفتن زمان فعلی int value = analogRead (A0)؛ // خواندن سنسور نور فعلی در صورت (مقدار> 900 && نتیجه == 0) {// اگر سنسور فشار داده شده و هنوز هیچ نتیجه ای ثبت نشده است ، اگر (index = interval) {// بررسی کنید که آیا جریان حلقه از بازه previousMs = currentMs فراتر می رود. // فاصله جدید را روی زمان فعلی + شاخص فاصله + = 1 تنظیم کنید ؛ // led ها را یک قدم جلوتر در حلقه if (index> 17) {// Trigger end of loop handling index = 0 قرار دهید. if (result == 2) {// در بازه نتیجه درست = (int) حداکثر ((فاصله * 0.95) ، 50) ؛ // سرعت 10٪ ، تا فاصله 50ms/ color = strip. Color (0 ، 255 ، 0) ؛ // led ها را روی green} else if (result == 1) {// در فاصله نتیجه اشتباه = 300 تنظیم کنید ؛ // بازنشانی فاصله رنگ = strip. Color (255 ، 0 ، 0) ؛ // led ها را روی قرمز} else {// در هیچ نتیجه ای ثبت نشده color = strip. Color (255 ، 0 ، 0) ؛ // led ها را روی قرمز تنظیم کنید} result = 0؛ // بازنشانی نتیجه حلقه بعدی} theaterChaseOne (رنگ ، نمایه) ؛ // چراغهای LED را برای نمایش روشن کنید. }} // برخی از عملکردهای خودمان برای ایجاد جلوه های متحرک ----------------- // چراغ های تعقیب کننده به سبک تئاتر. یک رنگ (مقدار 32 بیتی ، // نوار a la. رنگ (r ، g ، b) همانطور که در بالا ذکر شد) و زمان تأخیر (بر حسب ms) // بین فریم ها ارسال کنید. void theaterChaseOne (uint32_t color، int index) {strip.clear ()؛ strip.setPixelColor (17 - شاخص ، رنگ) ؛ // چراغ های LED ردیف اول strip.setPixelColor (شاخص 18+ ، رنگ) ؛ // چراغ های LED ردیف دوم strip.setPixelColor (53 - شاخص ، رنگ) ؛ // ردیف سوم چراغ led strip.show ()؛ }

توصیه شده: