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

رقمنة أغنية باستخدام Arduino: 6 خطوات
رقمنة أغنية باستخدام Arduino: 6 خطوات

فيديو: رقمنة أغنية باستخدام Arduino: 6 خطوات

فيديو: رقمنة أغنية باستخدام Arduino: 6 خطوات
فيديو: Ricatech RR2000 Full-size 7-colour LED Retro Jukebox with Bluetooth, turntable, CD, USB-SD, radio 2024, شهر نوفمبر
Anonim
رقمنة أغنية باستخدام Arduino
رقمنة أغنية باستخدام Arduino

أردت إنشاء مشروع يجمع بين مادتين مفضلتين: العلوم والموسيقى. فكرت في كل الطرق التي يمكنني من خلالها دمج هذين المجالين ، واعتقدت أنه سيكون من المثير للاهتمام جعل Arduino يلعب مع Fur Elise أثناء عرض نغمة الملاحظة في Hertz. الآن ، لنبدأ في البناء!

ستحتاج إلى Arduino Uno أو Mega واحد ، والكثير من كبلات العبور ، وجرس بيزو ، ولوح تجارب ، وشاشة LCD مقاس 16 * 2 مع جميع دبابيس الماسحة في مكانها ، ومقياس جهد 10 كيلو (قد تسمعهم يشار إليهم باسم مقاييس الجهد)). من الأفضل جمع كل هذه الإمدادات معًا قبل أن نبدأ البناء.

الخطوة 1: تحويل النقاط الموسيقية إلى ملاحظات رقمية: قيم التأخير

قم بتحويل النقاط الموسيقية إلى ملاحظات رقمية: قيم التأخير
قم بتحويل النقاط الموسيقية إلى ملاحظات رقمية: قيم التأخير

هناك خطوتان لإجراء نسخ رقمي لملاحظة من الدرجة إلى مكافئها الرقمي. أولاً ، سنحتاج إلى كتابة الوقت الذي تدوم فيه الملاحظة بالمللي ثانية. لقد استخدمت مخططًا موجودًا على الإنترنت لهذه المهمة. بناءً على ما إذا كانت الملاحظة عبارة عن نصف ملاحظة ، أو ربع ملاحظة ، أو ملاحظة الثامنة ، وما إلى ذلك ، قمت بنسخ طول الملاحظة إلى مللي ثانية. يمكنك أن ترى هذه الأرقام في الكود الخاص بي مثل التأخير () ؛ سيكون الرقم الموجود داخل الأقواس هو قيمة التأخير بالمللي ثانية التي حددناها في هذه الخطوة.

الخطوة 2: تحويل النقاط الموسيقية إلى ملاحظات رقمية: قيم هيرتز

قم بتحويل النقاط الموسيقية إلى ملاحظات رقمية: قيم هيرتز
قم بتحويل النقاط الموسيقية إلى ملاحظات رقمية: قيم هيرتز

قبل البدء في هذه الخطوة ، اسمحوا لي أن أحدد بعض المصطلحات الفنية. يمكن استخدام "قيمة" الملاحظة بالتبادل مع الكلمات "الملعب" و "القيمة" و "الملاحظة". الآن ، عليك قراءة كل ملاحظة للأغنية من النتيجة. سيتعين عليك بعد ذلك ترجمة كل ملاحظة إلى Hertz باستخدام موسيقى إلى جدول Hertz ، والتي يمكنك العثور عليها بسهولة عبر الإنترنت. شيء واحد يجب تذكره هو أن C الأوسط مدرج على أنه C4 على الطاولة ، والأوكتاف الأعلى هو C5 ، وهكذا. بمجرد نسخ جميع هذه الملاحظات إلى Hertz ، ستضع القيم في نغمة الوظيفة (x ، y ، z) ؛ حيث X هو رقم التعريف الشخصي أو const int ، طريقة لتحديد المتغيرات التي سأشرحها لاحقًا. ستكون Y هي قيمة هرتز التي قمت بنسخها للتو ، وستكون Z هي مدة الملاحظة بالمللي ثانية مقربة لأقرب جزء من مائة. التأخير()؛ ستكون القيم هي مدة الملاحظة. الآن ، دعونا نصمم الدائرة التي يمكنها تشغيل الموسيقى.

الخطوة 3: تصميم الدوائر

تصميم الدوائر
تصميم الدوائر

الآن بعد أن قمنا بترجمة جميع الملاحظات إلى قيم رقمية يمكن للكمبيوتر فهمها ، حان الوقت لبناء الدائرة. ابدأ بأخذ لوح التجارب ووضع شاشة LCD مع أول دبوس (GND) في الصف 14. ضع الجرس في أي مكان تريده ، ثم ضع مقياس جهد بجواره. الهدف هو ترتيب كل شيء ، لتقليل تشوش الأسلاك. ضع Arduino بجوار اللوح ، وقم بتوصيل دبوس 5 فولت بالسكة الموجبة للوح ، والدبوس الأرضي بالقضيب السالب. الآن ، نحن جاهزون لتوصيل وصلات العبور بين Arduino والمكونات.

الآن ، دعنا نتحدث عن المسامير الموجودة على شاشة LCD ، وكيفية توصيلها بأسلاك.

GND تعني الأرض ، هذا هو السلك السالب في التيار المباشر. قم بتوصيل GND بالسكة السلبية للوح.

يرمز VCC إلى Voltage at the Common Collector ، وهذا هو المكان الذي تقوم فيه بتوصيل مصدر الطاقة 5 فولت (سكة الطاقة الإيجابية).

VO تعني التباين ، قم بتوصيل هذا بالدبوس الأوسط لمقياس الجهد. قم بتوصيل الدبوس الأيسر لمقياس الجهد بسكة الطاقة الموجبة ، والدبوس الأيمن بسكة الطاقة الأرضية.

يرمز RS إلى Register Select ، ويستخدمه Arduino لإخبار الشاشة بمكان تخزين البيانات. قم بتوصيل هذا الدبوس برقم 12 على Arduino.

يشير RW إلى دبوس القراءة / الكتابة ، والذي يستخدمه Arduino للتحقق مما إذا كانت الشاشة تعرض ما قمت ببرمجته لإظهاره. قم بتوصيل هذا الدبوس بالقضيب السالب على اللوح.

يرمز E إلى Enable ، والذي يخبر شاشة LCD عن وحدات البكسل التي يجب تمكينها (تشغيلها) أو تعطيلها (إيقاف تشغيلها). قم بتوصيل هذا الدبوس بـ Arduino pin 11.

D4 و D5 و D6 و D7 هي دبابيس العرض التي تتحكم في الأحرف والحروف المعروضة. قم بتوصيلهم بدبابيس Arduino 5 و 4 و 3 و 2 على التوالي.

Pin A ، يسمى أحيانًا LED ، هو أنود LED للإضاءة الخلفية. قم بتوصيل هذا بسكة الطاقة الموجبة بسلك أو بمقاوم 220 أوم. يعد المقاوم أفضل للاستخدام لفترة أطول لأنه يحافظ على شاشة LCD ، ولكن إذا لم يتم استخدام الجهاز ليلًا ونهارًا ، فلن تحتاج إلى المقاوم.

Pin K ، أحيانًا أيضًا (بشكل مربك) المسمى LED ، هو دبوس LED الأرضي. قم بتوصيل هذا بسكة الطاقة الأرضية.

الخطوة 4: تحميل الكود: How-To

قم بتوصيل Arduino الخاص بك بمنفذ USB بجهاز الكمبيوتر الخاص بك. قم بتحميل الكود التالي باستخدام مبرمج Arduino IDE.

#يشمل

const int rs = 12 ، en = 11 ، d4 = 5 ، d5 = 4 ، d6 = 3 ، d7 = 2 ؛ LiquidCrystal LCD (rs، en، d4، d5، d6، d7) ؛

الإعداد باطل() {

// قم بإعداد عدد الأعمدة والصفوف في شاشة LCD: lcd.begin (16 ، 2) ؛ // اطبع رسالة على شاشة LCD. lcd.print ("Hertz Pitch:!") ؛ تأخير (1000) ؛ حلقة باطلة () {// تشغيل تأخير e4 (600) ؛ // إيقاف مؤقت لمدة 0.6 ثانية نغمة (10 ، 329.63 ، 300) ؛ // تشغيل e إلى الجرس عند الطرف 10 ، يستمر لمدة 3 ثوانٍ lcd.print (" 329.63 ") ؛ // عرض رسالة على شاشة LCD" 329.63"

تأخير (350) ؛ // تأخير لمدة 35 ثانية

lcd.clear () ؛ // شاشة LCD واضحة وإعادة تعيين للرسالة التالية // تشغيل d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (350) ؛ lcd.clear () ؛ // play d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.66 ، 300) ؛ lcd.print ("293.66") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 900) ؛ lcd.print ("220.0") ؛ تأخير (1000) ؛ lcd.clear () ؛ // line60 // helpave // avrdude.failure.eeprom // play d3 tone (10، 146.83، 300) ؛ lcd.print ("146.63") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة f3 (10 ، 174.61 ، 300) ؛ lcd.print ("174.61") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 300) ؛ lcd.print ("220") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 900) ؛ lcd.print ("246.94") ؛ تأخير (1000) ؛ lcd.clear () ؛

// لعب e3

نغمة (10 ، 164.81 ، 300) ؛ lcd.print ("164.81") ؛ تأخير (400) ؛ lcd.clear () ؛ // play g3 # tone (10 ، 207.65 ، 300) ؛ lcd.print ("207.65") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 900) ؛ lcd.print ("261.63") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل النغمة الإلكترونية (10 ، 164.81 ، 300) ؛ lcd.print ("164.81") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // play d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // play d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.66 ، 300) ؛ lcd.print ("293.66") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 900) ؛ lcd.print ("220.0") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة d3 (10 ، 146.83 ، 300) ؛ lcd.print ("146.83") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة f3 (10 ، 174.61 ، 300) ؛ // eeprom 20-6 نعم لا ، فلاش 65–0 noyes lcd.print ("174.61") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 300) ؛ lcd.print ("220.0") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 900) ؛ lcd.print ("246.94") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة f3 (10 ، 174.61 ، 300) ؛ lcd.print ("174.61") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 900) ؛ lcd.print ("220.0") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.66 ، 300) ؛ lcd.print ("293.66") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 900) ؛ lcd.print ("329.63") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة g3 (10 ، 196 ، 300) ؛ lcd.print ("196.0") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة f4 (10 ، 349.23 ، 300) ؛ lcd.print ("349.23") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.23 ، 300) ؛ lcd.print ("329.23") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.63 ، 900) ؛ lcd.print ("293.63") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة e3 (10 ، 164.81 ، 300) ؛ lcd.print ("164.81") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.63 ، 300) ؛ lcd.print ("293.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 900) ؛ lcd.print ("261.63") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة d3 (10 ، 146.83 ، 300) ؛ lcd.print ("146.83") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.63 ، 300) ؛ lcd.print ("293.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 900) ؛ lcd.print ("246.94") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // play d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (350) ؛ lcd.clear () ؛ // play d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.66 ، 300) ؛ lcd.print ("293.66") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 900) ؛ lcd.print ("220.0") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة d3 (10 ، 146.83 ، 300) ؛ lcd.print ("146.83") ؛ تأخير (350) ؛ lcd.clear () ؛ // تشغيل نغمة f3 (10 ، 174.61 ، 300) ؛ lcd.print ("174.61") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 300) ؛ lcd.print ("220.0") ؛ تأخير (400) ؛ // play b3 lcd.clear () ؛ نغمة (10 ، 246.94 ، 900) ؛ lcd.print ("246.94") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة e3 (10 ، 164.81 ، 300) ؛ lcd.print ("164.81") ؛ تأخير (400) ؛ lcd.clear () ؛ // play g # 3 tone (10 ، 207.65 ، 300) ؛ lcd.print ("207.65") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 900) ؛ lcd.print ("261.63") ؛ تأخير (1000) ؛ تأخير (300) ؛ lcd.clear () ؛ // تشغيل نغمة e3 (10 ، 164.81 ، 300) ؛ lcd.print ("164.81") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // play d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // play d4 # tone (10 ، 311.13 ، 300) ؛ lcd.print ("311.13") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة e4 (10 ، 329.63 ، 300) ؛ lcd.print ("329.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة d4 (10 ، 293.66 ، 300) ؛ lcd.print ("293.66") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 900) ؛ lcd.print ("220.0") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة d3 (10 ، 146.83 ، 300) ؛ lcd.print ("146.83") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة f3 (10 ، 174.61 ، 300) ؛ lcd.print ("174.61") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 300) ؛ lcd.print ("220.0") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 900) ؛ lcd.print ("246.94") ؛ تأخير (1000) ؛ lcd.clear () ؛ // تشغيل نغمة f3 (10 ، 174.61 ، 300) ؛ lcd.print ("174.61") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة c4 (10 ، 261.63 ، 300) ؛ lcd.print ("261.63") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة b3 (10 ، 246.94 ، 300) ؛ lcd.print ("246.94") ؛ تأخير (400) ؛ lcd.clear () ؛ // تشغيل نغمة a3 (10 ، 220 ، 900) ؛ lcd.print ("220.0") ؛ تأخير (1000) ؛ lcd.clear () ؛ }

الخطوة 5: تحميل الكود: ماذا يعني كل ذلك؟

دعنا نحدد بعض الوظائف باللغة الإنجليزية ، حتى تتمكن من فهم الكود.

نغمة (س ، ص ، ض) ؛ = قم بتشغيل نغمة مع نغمة y Hertz ، إلى صفارة عند pin x ، لمدة z ميلي ثانية.

lcd.print ("XYZ") ؛ = اطبع رسالة بالأحرف XYZ على شاشة LCD. (على سبيل المثال ، عرض درجة Hertz)

تأخير (x) ؛ = وقفة لمدة x مللي ثانية.

const int X = Y = اضبط متغيرًا ثابتًا X على دبوس Y ، واستخدم إما X أو Y لتعيين المهام للجهاز.

lcd.clear () ؛ = امسح شاشة LCD وأعد الضبط لعرض جديد

pinMode (X ، الإخراج) ؛ = تعيين دبوس X لوضع الإخراج

بمجرد أن تفهم كل هذه الوظائف ، يمكنك بسهولة استبدال المتغيرات بالبيانات التي تجمعها عند ترجمة أغنية ، ويمكنك بعد ذلك ترميز أغنيتك الخاصة!

الخطوة 6: انتهى !

تم الانتهاء من!!!
تم الانتهاء من!!!
تم الانتهاء من!!!
تم الانتهاء من!!!

إما أن يكون لديك Arduino يقوم بتشغيل Fur Elise ويعرض قيم الملاحظات في Hertz ، أو أنك قمت بإنشاء Arduino يقوم بتشغيل لحن الأغنية التي اخترتها ، ويعرض النص الذي ترغب في إظهاره. شكرا لكم لزيارة هذا البرنامج التعليمي ، وآمل لكم هذا المشروع على Arduino.

موصى به: