مرحبًا يا رفاق ، خلال الأسابيع القليلة الماضية ، كنت أعمل على إعادة الاتصال بحبي للغيتار. كان العزف على جيتار الصندوق هو الطريقة التي أرتاح بها قبل بضع سنوات قبل تولي الساكسفون. بالعودة إلى العزف على الجيتار ، بعد 3 سنوات من العزف النادر على الوتر ، اكتشفت من بين أشياء أخرى أنني لم أعد أعرف كيف يجب أن يبدو كل وتر ، لأضعها في كلمات صديقي ، "لم يعد سمعي مضبوطًا" و نتيجة لذلك ، لم أتمكن من ضبط الجيتار دون مساعدة لوحة المفاتيح أو تطبيق الهاتف المحمول الذي قمت بتنزيله لاحقًا. مرت الأسابيع حتى أيام قليلة مضت عندما أصبح صانع الأغاني بداخلي متحمسًا وقررت إنشاء موالف جيتار يعتمد على Arduino. في البرنامج التعليمي اليوم ، سأشارك كيفية إنشاء موالف غيتار اردوينو بنفسك.
كيف يعمل موالف الجيتار
قبل أن ننتقل إلى مجال الإلكترونيات ، من المهم أن نفهم المبدأ الكامن وراء البناء. هناك 7 نوتات موسيقية رئيسية تدل عليها الحروف الهجائية. A ، B ، C ، D ، E ، F ، G وعادة ما تنتهي بـ A آخر يكون دائمًا أعلى من الأوكتاف الأول. في الموسيقى ، توجد عدة إصدارات من هذه الملاحظات مثل الأول A والأخير A. تتميز كل واحدة عن اختلافها وعن بعضها البعض بإحدى خصائص الصوت المعروفة باسم الدرجة. الملعب هو الذي يعرف بأنه بريق أو دونية المتعالي الصوت والتي يتضح من وتيرة هذا الصوت. نظرًا لأن تواتر هذه النغمات معروف ، بالنسبة لنا لتحديد ما إذا كان الجيتار مضبوطًا أم لا ، نحتاج فقط إلى مقارنة تردد ملاحظة سلسلة معينة بالتردد الفعلي للملاحظة التي تمثلها السلسلة.
ترددات النوتات الموسيقية السبع هي:
أ = 27.50 هرتز
ب = 30.87 هرتز
C = 16.35 هرتز
D = 18.35 هرتز
E = 20.60 هرتز
F = 21.83 هرتز
G = 24.50 هرتز
يكون كل اختلاف في هذه الملاحظات دائمًا في درجة مساوية لـ FxM حيث F هي التردد و M عدد صحيح غير صفري. وبالتالي ، بالنسبة للأخير A الذي تم وصفه سابقًا ، أعلى من الأوكتاف الأول ، يكون التردد ؛
27.50 × 2 = 55 هرتز.
يحتوي الجيتار (غيتار الرصاص / الصندوق) عادةً على 6 أوتار يُشار إليها بالملاحظات E و A و D و G و B و E على سلسلة مفتوحة. كالعادة ، سيكون آخر E بأوكتاف أعلى من الأول E. سنقوم بتصميم موالف الجيتار الخاص بنا للمساعدة في ضبط الجيتار باستخدام ترددات هذه النغمات.
وفقًا لضبط الجيتار القياسي ، يتم عرض النوتة والتردد المقابل لكل وتر في الجدول أدناه.
سلاسل |
تكرر |
الرموز |
1 (هـ) |
329.63 هرتز |
ه 4 |
2 (ب) |
246.94 هرتز |
ب 3 |
3 (ز) |
196.00 هرتز |
G3 |
4 (د) |
146.83 هرتز |
د 3 |
5 (أ) |
110.00 هرتز |
أ 2 |
6 (هـ) |
82.41 هرتز |
ه 2 |
و تدفق المشروع هو بسيط جدا. نقوم بتحويل الإشارة الصوتية التي يولدها الجيتار إلى تردد ثم نقارن مع قيمة التردد الدقيقة للسلسلة التي يتم ضبطها. يتم إخطار عازف الجيتار باستخدام مؤشر LED عندما ترتبط القيمة.
يتضمن كشف / تحويل التردد 3 مراحل رئيسية ؛
- تضخيم
- الموازنة
- التحويل التناظري إلى الرقمي (أخذ العينات)
ستكون الإشارة الصوتية التي يتم إنتاجها ضعيفة جدًا بحيث يتعذر على ADC الخاص بـ Arduino التعرف عليها ، لذلك نحتاج إلى تضخيم الإشارة. بعد التضخيم ، للحفاظ على الإشارة ضمن النطاق الذي يمكن التعرف عليه بواسطة ADC في Arduino لمنع قطع الإشارة ، نقوم بتعويض جهد الإشارة. بعد الإزاحة ، يتم تمرير الإشارة إلى Arduino ADC حيث يتم أخذ عينات منها والحصول على تردد هذا الصوت.
المكونات المطلوبة
المكونات التالية مطلوبة لبناء هذا المشروع ؛
- اردوينو اونو x1
- LM386 x1
- مكثف ميكروفون x1
- مقبس ميكروفون / صوت x1
- مقياس الجهد 10 كيلو × 1
- O.1 فائق التوهج مكثف x2
- 100 أوم المقاوم x4
- 10 أوم المقاوم x1
- 10 فائق التوهج مكثف x3
- 5 مم الصمام الأصفر x2
- 5 مم LED أخضر x1
- عادة فتح أزرار الدفع x6
- أسلاك توصيل
- اللوح
المخططات
قم بتوصيل المكونات كما هو موضح في الرسم التخطيطي لدائرة موالف الجيتار أدناه.
يتم توصيل أزرار الدفع بدون مقاومات سحب لأعلى / لأسفل لأنه سيتم استخدام مقاومات Arduino المضمنة في السحب. هذا لضمان أن الدائرة بسيطة قدر الإمكان.
كود اردوينو لموالف الجيتار
الخوارزمية وراء الكود الخاص بمشروع Guitar Tuner Project بسيطة. لضبط وتر معين ، يختار عازف الجيتار الوتر بالضغط على زر الضغط المقابل ويعزف على الوتر المفتوح. يتم جمع الصوت من خلال مرحلة التضخيم ونقله إلى Arduino ADC. التردد يتم فكه ومقارنته. عندما يكون تردد الإدخال من السلسلة أقل من التردد المحدد ، فإن أحد مؤشرات LED الصفراء لتلك السلسلة يضيء للإشارة إلى أنه يجب تشديد السلسلة. عندما يكون التردد المقاس أكبر من التردد المحدد لتلك السلسلة ، يضيء مؤشر LED آخر. عندما يكون التردد ضمن النطاق المحدد لتلك السلسلة ، يضيء مؤشر LED الأخضر لتوجيه عازف الجيتار.
تم تقديم كود Arduino الكامل في النهاية ، هنا شرحنا بإيجاز الأجزاء المهمة من الكود.
نبدأ بإنشاء مصفوفة للاحتفاظ بالمفاتيح.
int buttonarray = {13، 12، 11، 10، 9، 8} ؛ //
بعد ذلك ، نقوم بإنشاء مصفوفة للاحتفاظ بالتردد المقابل لكل سلسلة.
Float Freqarray = {82.41، 110.00، 146.83، 196.00، 246.94، 329.63}؛ // الكل بالهرتز
بعد القيام بذلك ، نعلن بعد ذلك عن المسامير التي تتصل بها مصابيح LED والمتغيرات الأخرى التي سيتم استخدامها للحصول على التردد من ADC.
int lowLed = 7 ؛ int highLed = 6 ؛ int justRight = 5 ؛ #define 512 بايت rawData ؛ عدد كثافة العمليات
التالي هو وظيفة الإعداد الباطل () .
نبدأ هنا بتمكين السحب الداخلي على Arduino لكل من المسامير التي تتصل بها المفاتيح. بعد ذلك قمنا بتعيين المسامير التي يتم توصيل مصابيح LED بها كمخرجات وتشغيل الشاشة التسلسلية لعرض البيانات.
إعداد باطل () { لـ (int i = 0 ؛ i <= 5 ؛ i ++) { pinMode (buttonarray ، INPUT_PULLUP) ؛ } pinMode (lowLed، الإخراج) ؛ pinMode (highLed ، الإخراج) ؛ pinMode (justRight ، الإخراج) ؛ Serial.begin (115200) ؛ }
بعد ذلك ، هي وظيفة الحلقة الفارغة ، نقوم بتنفيذ كشف التردد والمقارنة.
الحلقة الفارغة () { if (count <LENGTH) { count ++؛ rawData = analogRead (A0) >> 2 ؛ } آخر { sum = 0 ؛ pd_state = 0 ؛ فترة int = 0 ؛ لـ (i = 0؛ i <len؛ i ++) { // Autocorrelation sum_old = sum؛ المجموع = 0 ؛ لـ (k = 0؛ k <len-i؛ k ++) sum + = (rawData-128) * (rawData-128) / 256؛ // Serial.println (مجموع) ؛ // آلة حالة الكشف عن الذروة إذا (pd_state == 2 && (sum-sum_old) <= 0) { period = i؛ pd_state = 3 ؛ } إذا (pd_state == 1 && (sum> thresh) && (sum-sum_old)> 0) pd_state = 2 ؛ إذا (! i) { عتبة = مجموع * 0.5 ؛ pd_state = 1 ؛ } } // التردد المحدد بالهرتز إذا (الحد> 100) { freq_per = sample_freq / period؛ Serial.println (freq_per) ؛ لـ (int s = 0؛ s <= 5؛ s ++) { if (digitalRead (buttonarray) == HIGH) { if (freq_per - freqarray <0) { digitalWrite (lowLed، HIGH) ؛ } else if (freq_per - freqarray> 10) { digitalWrite (aboveLed، HIGH)؛ } else { digitalWrite (justRight، HIGH)؛ } } } } عدد = 0 ؛ } }
و رمز كاملة مع شريط فيديو مظاهرة يرد أدناه. قم بتحميل الكود على لوحة Arduino الخاصة بك وابتعد.