جدول المحتويات:

إيقاع اليد: 6 خطوات
إيقاع اليد: 6 خطوات

فيديو: إيقاع اليد: 6 خطوات

فيديو: إيقاع اليد: 6 خطوات
فيديو: Hand Drumming - Beginner - "Basic Beat" 2024, يوليو
Anonim
إيقاع اليد
إيقاع اليد

يدور حب الإنترنت هذا حول اتخاذ الخطوة الصحيحة في الوقت المناسب.

تنطلق الأضواء من ذراعك (كوعك) إلى يدك وعندما تصل الأضواء إلى يدك ، عليك الضغط بأصابعك على الخلية الكهروضوئية الصغيرة.

إذا ضغطت بيدك على الخلية الكهروضوئية الصغيرة في اللحظة المناسبة ، تتحول المصابيح إلى اللون الأخضر. إذا لم يكن كذلك ، فإن المصابيح تتحول إلى اللون الأحمر.

الخطوة 1: جمع المواد

  • قفاز
  • قماش لجعل القفاز أطول
  • WS2812B شريط LED
  • الأسلاك
  • اردوينو
  • ميني فوتوسيل

الخطوة 2: صنع الدوائر

صنع الدوائر
صنع الدوائر
صنع الدوائر
صنع الدوائر

قم أولاً بتوصيل شريط LED بـ arduino. يمكنك القيام بذلك عن طريق توصيل + 5v بـ 5v على اردوينو. يجب توصيل Din بـ A0 على arduino ويجب توصيل GND بـ GND على arduino.

يجب عليك أيضًا توصيل الخلية الكهروضوئية الصغيرة بـ arduino من خلال الاتصال بسلك 5 فولت من شريط LED ومن نفس المصدر المتصل بسلك برقم التعريف الشخصي 6 على اردوينو. يجب توصيل الجانب الآخر من الخلية الكهروضوئية الصغيرة بسلك GND من شريط LED

الخطوة الثالثة: تصميم القفاز

تصميم القفاز
تصميم القفاز

يجب أن يكون للقفاز الحجم المناسب ليناسب شرائط LED. يجب محاذاة المصابيح لجعل النظر إليها أكثر متعة.

في هذه اللعبة ، عليك استخدام ذراعك وتريد أن تكون قادرًا على التحرك بحرية. يمكن تحقيق ذلك عن طريق وضع اردوينو على القفاز. لقد استخدمت الفيلكرو كقفل لإلصاق اردوينو بالقفاز. ثم لتحقيق المزيد من الثبات ، يمكنك وضع حبل حول القفاز وحول الأردوينو.

تم خياطة الخلية الكهروضوئية الصغيرة داخل القفاز بحيث تظل في مكانها.

أخيرًا ، عليك إخفاء الأسلاك لجعلها تبدو أفضل. يمكن القيام بذلك باستخدام القماش الذي سيتم خياطته أعلى الأسلاك.

الخطوة 4: اللحام

اللحيم
اللحيم

الآن يمكنك جعل الأسلاك المتصلة من الدائرة آمنة عن طريق اللحام.

الخطوة 5: التشفير

الترميز
الترميز
الترميز
الترميز
الترميز
الترميز

// برنامج اختبار شرائط NeoPixel أساسي يومي.

// أفضل ممارسات NEOPIXEL للتشغيل الأكثر موثوقية: // - أضف مكثف 1000 uF بين توصيلات + و - شريط NeoPixel. // - تقليل طول الأسلاك بين لوحة وحدة التحكم الدقيقة والبكسل الأول. // - يجب أن تمر DATA-IN الخاص بشريط NeoPixel عبر مقاوم بقدرة 300-500 أوم. // - تجنب توصيل NeoPixels بدائرة حية. إذا كان يجب عليك ، دائمًا // توصيل GROUND (-) أولاً ، ثم + ، ثم البيانات. // - عند استخدام متحكم 3.3 فولت مع شريط NeoPixel يعمل بجهد 5 فولت ، // يوصى بشدة باستخدام محول LOGIC-LEVEL على خط البيانات. // (تخطي هذه قد يعمل بشكل جيد على طاولة العمل الخاصة بك ولكن يمكن أن يفشل في هذا المجال)

#include #ifdef _AVR_ #include // مطلوب لـ 16 ميجا هرتز Adafruit Trinket #endif

// أي دبوس على Arduino متصل بـ NeoPixels؟ // على Trinket أو Gemma نقترح تغيير هذا إلى 1: #define LED_PIN 6

// كم عدد NeoPixels المتصلة بـ Arduino؟ #define LED_COUNT 60

// قم بتعريف كائن شريط NeoPixel الخاص بنا: شريط Adafruit_NeoPixel (LED_COUNT ، LED_PIN ، NEO_GRB + NEO_KHZ800) ؛ uint32_t color = strip. Color (127 ، 127 ، 127) ؛ // اللون الأبيض ، للقيمة المنطقية الافتراضية انقر بشكل صحيح = خطأ ؛ // الوسيطة 1 = عدد البكسل في شريط NeoPixel // Argument 2 = رقم دبوس Arduino (معظمها صالح) // Argument 3 = أعلام نوع البكسل ، أضف معًا حسب الحاجة: // NEO_KHZ800 800 KHz bitstream (معظم منتجات NeoPixel مع / WS2812 LEDs) // NEO_KHZ400 400 كيلو هرتز (كلاسيكي 'v1' (ليس v2) FLORA بكسل ، برامج تشغيل WS2811) // NEO_GRB Pixels موصلة لتيار GRB bitstream (معظم منتجات NeoPixel) // NEO_RGB Pixels موصلة بـ RGB bitstream (v1 FLORA pixels ، وليس الإصدار 2) // NEO_RGBW Pixels سلكية لـ RGBW bitstream (منتجات NeoPixel RGBW)

// دالة setup () - تعمل مرة واحدة عند بدء التشغيل --------------------------------

إعداد باطل () {// هذه الخطوط مخصصة لدعم Adafruit Trinket 5V 16 MHz. // أي لوحة أخرى ، يمكنك إزالة هذا الجزء (ولكن لا ضرر من تركه): # إذا تم تعريفه (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1) ؛ #endif // نهاية الكود الخاص بـ Trinket.

pinMode (A0، INPUT) ؛ strip.begin () ، // INITIALIZE NeoPixel strip object (مطلوب) strip.show () ؛ // قم بإيقاف تشغيل جميع وحدات البكسل في أسرع وقت ممكن strip.setBrightness (10) ؛ // ضبط السطوع على حوالي 1/5 (الحد الأقصى = 255)}

// دالة loop () - تعمل بشكل متكرر ما دامت اللوحة قيد التشغيل ---------------

حلقة باطلة () {clickedCorrectly = theatreChaseOne (color)؛ إذا (clickedCorrectly) {color = strip. Color (0، 255، 0) ؛ } else {color = strip. Color (255، 0، 0) ؛ }}

// بعض الوظائف الخاصة بنا لإنشاء تأثيرات متحركة -----------------

// مسرح على غرار سرادق مطاردة الأضواء. قم بتمرير لون (قيمة 32 بت ، // a la strip. Color (r ، g ، b) كما هو مذكور أعلاه) ، ووقت تأخير (بالمللي ثانية) // بين الإطارات. bool theatreChaseOne (uint32_t color) {bool correct = false؛ منطقية clickedWrong = false ؛ من أجل (مؤشر int = 0 ؛ فهرس 800) {// مستشعر الإضاءة القيمة إذا (الفهرس <16) {// 2 مصابيح LED قبل النهاية ، يمكنك النقر فوق color = strip. Color (255 ، 0 ، 0) ؛ // اللون الأحمر المصابيح التي تم النقر عليها خطأ = صحيح ؛ // تم النقر بشكل خاطئ ثم تتحول المصابيح إلى اللون الأحمر} وإلا إذا (! clickedWrong) {// إذا لم يكن اللون الخطأ = strip. Color (0، 255، 0)؛ // المصابيح الخضراء ذات اللون الأخضر صحيحة = صحيحة ؛ // clicked right ثم المصابيح تتحول إلى اللون الأخضر}} strip.clear ()؛ strip.setPixelColor (17 - فهرس ، لون) ؛ // شريط مصابيح ليد للصف الأول. setPixelColor (18 + مؤشر ، لون) ؛ // شريط مصابيح ليد للصف الثاني. setPixelColor (53 - فهرس ، لون) ؛ // شريط مصابيح ليد للصف الثالث. تأخير (300) ؛ } الإرجاع الصحيح ؛ }

الخطوة 6: التغييرات

التغييرات
التغييرات
التغييرات
التغييرات
التغييرات
التغييرات

لقد أجريت بعض التغييرات. أولاً ، قمت بإخفاء اردوينو لذا سيكون من المريح استخدام "يد Rythm" وثانيًا قمت بتغيير الرمز قليلاً. لقد غيرت الكود بحيث يصبح اللون أخضر عند الضغط في اللحظة المناسبة وتتحرك مصابيح LED بشكل أسرع. من خلال القيام بذلك ، يصبح LED Swill أسرع بنسبة 10٪ عن السابق. هذا يجعل اللعبة أكثر إثارة للاهتمام

هكذا يكون الرمز الآن:

// برنامج اختبار شرائط NeoPixel أساسي يومي. // أفضل ممارسات NEOPIXEL للتشغيل الأكثر موثوقية: // - أضف مكثف 1000 uF بين توصيلات + و - شريط NeoPixel. // - تقليل طول الأسلاك بين لوحة وحدة التحكم الدقيقة والبكسل الأول. // - يجب أن تمر DATA-IN الخاص بشريط NeoPixel عبر مقاوم بقدرة 300-500 أوم. // - تجنب توصيل NeoPixels بدائرة حية. إذا كان يجب عليك ، دائمًا // توصيل GROUND (-) أولاً ، ثم + ، ثم البيانات. // - عند استخدام متحكم 3.3 فولت مع شريط NeoPixel يعمل بجهد 5 فولت ، // يوصى بشدة باستخدام محول LOGIC-LEVEL على خط البيانات. // (تخطي هذه قد يعمل بشكل جيد على طاولة العمل الخاصة بك ولكن يمكن أن يفشل في هذا المجال) #include #ifdef _AVR_ #include // مطلوب لـ 16 MHz Adafruit Trinket #endif // أي دبوس على Arduino متصل بـ NeoPixels؟ // على Trinket أو Gemma نقترح تغيير هذا إلى 1: #define LED_PIN 6 // كم عدد NeoPixels المتصلة بـ Arduino؟ #define LED_COUNT 60 // قم بتعريف كائن شريط NeoPixel الخاص بنا: شريط Adafruit_NeoPixel (LED_COUNT ، LED_PIN ، NEO_GRB + NEO_KHZ800) ؛ uint32_t color = strip. Color (127 ، 127 ، 127) ؛ // اللون الأبيض ، للقيمة المنطقية الافتراضية انقر بشكل صحيح = خطأ ؛ مؤشر كثافة العمليات = 0 ؛ الفاصل الزمني int = 300 ؛ نتيجة int = 0 ؛ رسائل سابقة طويلة بدون توقيع = مللي () ؛ // الوسيطة 1 = عدد البكسل في شريط NeoPixel // Argument 2 = رقم دبوس Arduino (معظمها صالح) // Argument 3 = أعلام نوع البكسل ، أضف معًا حسب الحاجة: // NEO_KHZ800 800 KHz bitstream (معظم منتجات NeoPixel مع / WS2812 LEDs) // NEO_KHZ400 400 كيلو هرتز (كلاسيكي 'v1' (ليس v2) FLORA بكسل ، برامج تشغيل WS2811) // NEO_GRB Pixels موصلة لتيار GRB bitstream (معظم منتجات NeoPixel) // NEO_RGB Pixels موصلة بـ RGB bitstream (v1 FLORA pixels ، وليس v2) // NEO_RGBW Pixels سلكية لـ RGBW bitstream (منتجات NeoPixel RGBW) // وظيفة الإعداد () - تعمل مرة واحدة عند بدء التشغيل -------------------- ------------ إعداد باطل () {// هذه الخطوط مخصصة لدعم Adafruit Trinket 5V 16 MHz. // أي لوحة أخرى ، يمكنك إزالة هذا الجزء (ولكن لا ضرر من تركه): # إذا تم تعريفه (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1) ؛ #endif // نهاية الكود الخاص بـ Trinket. Serial.begin (9600) ؛ بينما (! المسلسل) {؛ // انتظر حتى يتم توصيل المنفذ التسلسلي. مطلوب لمنفذ USB الأصلي فقط} pinMode (A0 ، INPUT) ؛ strip.begin () ، // INITIALIZE NeoPixel strip object (مطلوب) strip.show () ؛ // قم بإيقاف تشغيل جميع وحدات البكسل في أسرع وقت ممكن strip.setBrightness (10) ؛ // اضبط السطوع على حوالي 1/5 (max = 255)} // وظيفة loop () - تعمل بشكل متكرر طالما أن اللوحة تعمل --------------- حلقة فارغة () {تيار طويل بدون توقيع = ملي () ؛ // الحصول على قيمة int للوقت الحالي = analogRead (A0) ؛ // قراءة مستشعر الضوء الحالي إذا (القيمة> 900 && النتيجة == 0) {// إذا تم الضغط على المستشعر ولم يتم تسجيل أي نتيجة بعد ، فقم بتشغيل التقاط النتيجة إذا (الفهرس = الفاصل الزمني) {// تحقق مما إذا كان التيار حلقة تتجاوز الفاصل الزمني previousMs = currentMs ؛ // اضبط الفاصل الزمني الجديد على الوقت الحالي + مؤشر الفاصل الزمني + = 1 ؛ // اضبط المصابيح خطوة أخرى في الحلقة إذا (index> 17) {// Trigger end of loop handle index = 0 ؛ if (النتيجة == 2) {// في فاصل النتيجة الصحيح = (int) max ((الفاصل * 0.95) ، 50) ؛ // تسريع بنسبة 10٪ ، وصولاً إلى فاصل زمني 50 مللي ثانية / لون = شريط. اللون (0 ، 255 ، 0) ؛ // اضبط المصابيح على اللون الأخضر} else if (النتيجة == 1) {// على فاصل نتيجة غير صحيح = 300 ؛ // إعادة تعيين لون الفاصل الزمني = strip. Color (255 ، 0 ، 0) ؛ // اضبط المصابيح على اللون الأحمر} else {// في أي نتيجة تم التقاط اللون = strip. Color (255 ، 0 ، 0) ؛ // ضبط المصابيح على الأحمر} نتيجة = 0 ؛ // إعادة تعيين النتيجة للحلقة التالية} theatreChaseOne (اللون ، الفهرس) ؛ // تضيء المصابيح للعرض. }} // بعض الوظائف الخاصة بنا لإنشاء تأثيرات متحركة ----------------- // Theatre-marquee-style chasing lights. قم بتمرير لون (قيمة 32 بت ، // a la strip. Color (r ، g ، b) كما هو مذكور أعلاه) ، ووقت تأخير (بالمللي ثانية) // بين الإطارات. void theatreChaseOne (uint32_t color، int index) {strip.clear ()؛ strip.setPixelColor (17 - فهرس ، لون) ؛ // شريط مصابيح ليد للصف الأول. setPixelColor (18 + مؤشر ، لون) ؛ // شريط مصابيح ليد للصف الثاني. setPixelColor (53 - فهرس ، لون) ؛ // شريط مصابيح ليد للصف الثالث. }

موصى به: