تعلم الوحدات · الدرس 2.5

الطنان النشط (Active Buzzer)

العودة إلى الدروس

نظرة عامة والطنان

ستتعلم توليد صوت باستخدام الطنان النشط (Active Buzzer).

المكونات المطلوبة

التعرف على الطنان

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

يوجد طنان نشط (Active Buzzer) وآخر غير نشط. عند توجيه الأرجل إلى أعلى، يكون الطنان ذو اللوحة الخضراء غير نشط، أما المغطى بشريط أسود فهو نشط.

النشط يضم مذبذبًا داخليًا فيصدر صوتًا عند تغذيته. غير النشط لا يضم هذا المذبذب، فلا يصدر نغمة بمجرد إشارة DC؛ ويحتاج موجة مربعة بتردد بين 2kHz و 5kHz وفق الشرح. غالبًا يكون النشط أغلى بسبب دوائر التذبذب الداخلية.

الطنان النشط (Active Buzzer) وعلامة الطرف الموجب
الطنان النشط (Active Buzzer) وعلامة الطرف الموجب

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

مخطط توصيل الطنان النشط (Active Buzzer)
مخطط توصيل الطنان النشط (Active Buzzer)
توصيل الطنان بلوحة أردوينو (UNO R3 Board)
توصيل الطنان بلوحة أردوينو (UNO R3 Board)

البرنامج والأنواع البرمجية

افتح ملف البرنامج active.ino من ملفات الدرس في بيئة Arduino IDE. بعد إتمام التوصيلات، وصّل لوحة أردوينو (UNO R3 Board) بالحاسوب بكابل توصيل (USB Cable)، ثم اضغط زر Upload (رفع) لنقل البرنامج إلى اللوحة وتشغيله عليها.

while(condition)

تستمر الحلقة حتى يصبح التعبير داخل القوسين false. يجب أن يتغير المتغير المختبر وإلا لا تنتهي الحلقة. قد يحصل التغيير في الكود، مثل زيادة عداد، أو من شرط خارجي مثل قراءة حساس. condition تعبير منطقي true أو false. المثال while(1) حلقة مستمرة.

مقتطف من الشرح
while (condition) {

  // statement(s)

}

unsigned char

نوع غير موقّع يشغل بايتًا واحدًا، مثل byte، ويمثل الأعداد من 0 إلى 255. يُفضَّل استخدام byte لاتساق أسلوب برمجة Arduino.

مقتطف من الشرح
unsigned char i;

unsigned char var = val;

unsigned char myChar = 240;

var اسم المتغير و val قيمته الابتدائية.

الكود

active/active.ino

//www.elegoo.com
//2016.12.08

int buzzer = 12;//the pin of the active buzzer
void setup()
{
 pinMode(buzzer,OUTPUT);//initialize the buzzer pin as an output
}
void loop()
{
 unsigned char i;
 while(1)
 {
   //output an frequency
   for(i=0;i<80;i++)
   {
    digitalWrite(buzzer,HIGH);
    delay(1);//wait for 1ms
    digitalWrite(buzzer,LOW);
    delay(1);//wait for 1ms
    }
    //output another frequency
     for(i=0;i<100;i++)
      {
        digitalWrite(buzzer,HIGH);
        delay(2);//wait for 2ms
        digitalWrite(buzzer,LOW);
        delay(2);//wait for 2ms
      }
  }
} 

ملفات الدرس والمكتبات

ملفات الدرس

100%

عرض الصورة

استخدم + و− للتكبير والتصغير، أو اضغط Esc للإغلاق.