تصميم جهاز midi #1

0

 بسم الله الرحمن الرحيم  

يعد جهاز الميدي من احد الأجهزة الرائعه التى يتم استخدامها فى مجال الموسيقي حيث يعد الجهاز الرئيسي للعزف حيث هو عبارة عن بيانو يتم توصيله الى جهاز الكمبيوتر يقوم بارسال نغمات الى الكمبيوتر ويقوم الكمبيوتر بترجمه هذه البيانات الى موسيقى عبر برنامج خاص ويمكن ان نستخدم الهاتف بدلا من الكمبيوتر وهذا ما سنقوم بتصميمه 
حيث سنتطرق فى هذه السلسلة الى العديد من التطويرات على هذا المشروع حتى الوصول الى النتيجة النهائية 
فى هذا المقال سنصمم جهاز ميدى يحتوى على 32 زر يقوم كل زر باخراج نغمة معينه 
كما هو موضح فى الصورة الأتيه 

اولا الأدوات :

keypad 32 keys
arduino micro - lenardo - yun 


keypad 32 keys

هذه المصفوفة من المفاتيح يمكن الحصول عليها من اي بيانو مخصص لعبه 32 مفتاح تكون موجوده داخله او يمكن تصميمها بنفسك عن طريق توصيل السويتشات مثل keypad اربعه صفوف و اربعه اعمده 


arduino

يجب للتعامل مع هذا التطبيق استخدام نوع اردوينو مخصص مثل 
micro او lenaordo او due بحيث يمكن توصيلها الى الهاتف باستخدام كابل usb وهذا ضروري لعمل المشروع 
في هذا التطبيق استخدمت اردوينو ليناردو 

ثانيا التوصيلات : 


يخرج من مصفوفة الأزرار 12 سلكا يتم تقسيمهم كالأتي 
اول 4 اسلاك من يسار الشريحه عبارة عن صفوف 
و باقى الأسلاك عبارة عن اعمده فهي نفس مبدا عمل keypad 
وان لم تفهم فعليك بمراجعه الدروس التى قمنا بكتابتها 
يتم توصيل 4 منافذ الخاصه بالصفوف الى 2 و 3 و 4 و5
فى المنافذ الرقمية 
ثم توصيل باقى المنافذ من 6 الى 13 
فيجب اتباع هذه التوصيله للوصول الى النهاية المرجوة 

ثالثا الكود : 

لكي التعامل مع هذا المشروع فسنحتاج مكتبتين مكتبة keypad وهي تحميلها من موقع arduino الرسمي من هنا 

ومكتبه midiusb التى سنحتاجها للتواصل مع التطبيق على الهاتف لإخراج الصوت 
وسنقوم بتحميلها بهذه الطريقه 

ثم نتجه الى الكود 


فى البداية يتم اضافة المكتبات المستخدمه 

#include <MIDIUSB.h>
#include <Keypad.h>
من ثم تعريف ال 32 زر بحروف وارقام مختلفة 
char keys[4][8]={
  {'1','2','3','4','5','6','7','8'},
  {'9','A','B','C','D','E','F','G'},
  {'H','I','J','K','L','M','N','O'},
  {'P','Q','a','b','c','d','e','f'}
};
من ثم تعريف المنافذ الخاصه بالصفوف والأعمده عن طريق
 byte ROWS[]={2,3,4,5};
 byte COLS[]={6,7,8,9,10,11,12,13};
من ثم تعريف اللوحه داخل المكتب عن طريق كتابة اسم المكتبه وعمل خريطه للمكتبه واضافه منافذ الصفوف والأعمده وعدد الصفوف وعدد الأعمده
Keypad key(makeKeymap(keys),ROWS,COLS,4,8);
من ثم انشاء داله اسمها noteOn تاخذ ثلاث متغيرات 
velo , pitch , channel
وهذه أساسية لكي يتم استقبال الداتا من قبل برنامج الموسيقى ولكي يستطيع البرنامج فهم البيانات المرسله
وايضا ان شاء داله باسم noteOf وتاخذ نفس المتغيرات 
ولكنها تقوم بايقاف النغمة 
من ثم تحديد سرعه التواصل وهى 115200 وهى القيمة التى تتعامل بها اجهزة الميدي
من ثم الدخول الى void loop
فى البداية انشاء متغير من نوع char لكى يتم تخزين فيه بيانات الزر الذي تم ضغطه فى اللوحه 
ثم عمل شروط هل قيمة المتغير تساوي قيمة من قيم الأزرار التى قمنا بسبق تعيينها قم بتاكد من ان القناة الخاصه بالميدي متاحه ثم قم بارسال النغمة اذا تغيرت قيمة المتغير او تم رفع الأصبع عن الزر قم باطفاء النغمة 

وهذا جزء من الكود يتم تعميم الشرح على باقى الكود 
ولكي يتم التعامل بنجاح مع الهاتف يجب استخدام تطبيقات مخصصه وهذه هي اشهر التطبيقات 




لتحميل الكود اضغط هنا

النتيجة النهايئة  : من  تصميم الأستاذ عبد الفتاح كما هيه موضحه فى الفيديو التالى 



تصميم وبرمجة : بلال حسان سعدي
تجربة : عبد الفتاح 

لا يوجد تعليقات

أضف تعليق