فهرست مطالب:
- مرحله 1: جمع آوری مواد
- مرحله 2: ساخت مدارها
- مرحله 3: طراحی دستکش
- مرحله 4: لحیم کاری
- مرحله 5: کد نویسی
- مرحله ششم: تغییرات
تصویری: دست ریتم: 6 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
این عشق سایبری در مورد انجام حرکت مناسب در زمان مناسب است.
چراغ ها از بازو (آرنج) به دست شما می روند و هنگامی که چراغ ها به دست شما می رسند ، باید انگشتان خود را روی مینی فتوسل فشار دهید.
اگر در لحظه مناسب دست خود را روی مینی فتوسل فشار دهید ، 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 ()؛ }
توصیه شده:
دنبال کننده بخش ریتم آردوینو MIDI: 8 مرحله (همراه با تصاویر)
آردوینو MIDI Rhythm Sequenser: داشتن یک دستگاه درام نرم افزاری خوب امروزه آسان و ارزان است ، اما استفاده از ماوس سرگرم کننده را برای من می کشد. به همین دلیل است که من متوجه شدم آنچه در ابتدا به عنوان یک درام سنج سخت افزار MIDI سخت افزاری 64 مرحله ای طراحی شده بود که می تواند تا 12 قطعه درام مختلف را فعال کند
کنترل کننده بازی ریتم آردوینو (برای بازی خودم): 6 مرحله
Arduino Rhythm Game Controller (برای بازی خودم): در این برنامه آموزشی به شما نشان خواهم داد که چگونه می توانم این Rhythm Game Controller را از ابتدا بسازم. این شامل مهارت های اولیه نجاری ، مهارت های اولیه چاپ سه بعدی و مهارت های اولیه لحیم کاری است. اگر صفر سابق داشته باشید احتمالاً می توانید این پروژه را با موفقیت بسازید
ANDI - ژنراتور ریتم تصادفی - الکترونیک: 24 مرحله (همراه با تصاویر)
ANDI - مولد ریتم تصادفی - الکترونیک: ANDI دستگاهی است که با فشار یک دکمه ریتم تصادفی تولید می کند. هر ضربه منحصر به فرد است و می تواند با پنج دستگیره تنظیم شود. ANDI نتیجه یک پروژه دانشگاهی است که در مورد الهام بخشیدن به نوازندگان و بررسی روش های جدید کار با درام بود
دست سوم ++: یک دست کمک چند منظوره برای لوازم الکترونیکی و سایر کارهای ظریف: 14 مرحله (همراه با تصاویر)
دست سوم ++: یک دست کمک چند منظوره برای لوازم الکترونیکی و سایر کارهای ظریف: در گذشته من از دستهای سوم/دست های کمکی موجود در فروشگاه های لوازم الکترونیکی زنجیره ای استفاده کرده ام و از قابلیت استفاده آنها ناامید شده ام. من هرگز نتوانستم کلیپ ها را دقیقاً در جایی که می خواستم دریافت کنم یا زمان بیشتری برای تنظیم طول کشید
Cryptap: قفل درب مبتنی بر ریتم: 5 مرحله
Cryptap: a Rhythm-based Door Lock: با الهام از چندین مکانیزم باز کردن قفل درهایی که در hackaday.com دیده ام ، تصمیم گرفتم به تنهایی یکی از آنها را ایجاد کنم. این یکی دارای رابط دو دکمه است. یکی برای شروع و پایان دادن به ارسال رمز عبور ، و دیگری برای ضربه زدن به ریتمی که رمز عبور شما است