عمل بيانو باستخدام اردوينو

عمل بيانو  باستخدام اردوينو



1.فكرة المشروع

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

3

هذا البيانو سهل إلى حد كبير مع  ثمانية أزرار فقط و جرس . يستخدم وظيفة النغمة من الاردوينو  لإنشاء أنواع مختلفة من ملاحظات البيانو على السماعة .

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

4

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

4

2.تركيب الدارة

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

3

3

3.الكود البرمجي :

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

2

3

4

**************************************

// butt_c --> pin 2
#define BUTT_C  2
// butt_d --> pin 3
#define BUTT_D  3
// butt_e --> pin 4
#define BUTT_E  4
// butt_f --> pin 5
#define BUTT_F  5
// butt_g --> pin 6
#define BUTT_G  6
// butt_a --> pin 7
#define BUTT_A  7
// butt_b --> pin 8
#define BUTT_B  8
// butt_h --> pin 9
#define BUTT_H  9
// speaker --> pin 13
#define SPEAKER  13

// variables to store the state of the buttons
int C = 0, D = 0, E = 0, F = 0, G = 0, A = 0, B = 0, H = 0;

//NOTES         'c'  , 'd',  'e',  'f',  'g', 'a',  'b',  'h'
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 956 }; //freq

int Cur_tone = 0;

void setup()
{
  pinMode(BUTT_C, INPUT);
  pinMode(BUTT_D, INPUT);
  pinMode(BUTT_E, INPUT);
  pinMode(BUTT_F, INPUT);
  pinMode(BUTT_G, INPUT);
  pinMode(BUTT_A, INPUT);
  pinMode(BUTT_B, INPUT);
  pinMode(BUTT_H, INPUT);
  pinMode(SPEAKER, OUTPUT);
}

void loop()
{
  C = digitalRead(BUTT_C);
  D = digitalRead(BUTT_D);
  E = digitalRead(BUTT_E);
  F = digitalRead(BUTT_F);
  G = digitalRead(BUTT_G);
  A = digitalRead(BUTT_A);
  B = digitalRead(BUTT_B);
  H = digitalRead(BUTT_H);

       // check if any button is being pressed
  if((C == HIGH) || (E == HIGH) || (G == HIGH) || (D == HIGH) ||
     (F == HIGH) || (A == HIGH) || (B == HIGH) || (H == HIGH) )
  {
        // if a button is being pressed, check which one
    if (C == HIGH){
      Cur_tone = tones[0];
    }

    if (E == HIGH){
      Cur_tone = tones[1];
    }

    if (G == HIGH){
      Cur_tone = tones[2];
    }

    if (D == HIGH){
      Cur_tone = tones[3];
    }

    if (F == HIGH){
      Cur_tone = tones[4];
    }

    if (A == HIGH){
      Cur_tone = tones[5];
    }

    if (B == HIGH){
      Cur_tone = tones[6];
    }

    if (H == HIGH){
      Cur_tone = tones[7];
    }

    digitalWrite(SPEAKER, HIGH);
    delayMicroseconds(Cur_tone);
    digitalWrite(SPEAKER, LOW);
    delayMicroseconds(Cur_tone);
  }
  else{                //switch off the speaker if no button is being pressed
    digitalWrite(SPEAKER, LOW);
  }
}

**************************************

2

3

4

تعليقات

المشاركات الشائعة من هذه المدونة

تحميل كتاب محاط بالحمقى pdf

تحميل كتاب أكستاسي الجزء الثاني pdf عبدالهادي العمشان ج 2 _ 2021

كتاب رسائل من القرآن pdf تأليف ادهم شرقاوي