تعلم الوحدات · الدرس 2.5
الطنان النشط (Active Buzzer)
العودة إلى الدروسنظرة عامة والطنان
ستتعلم توليد صوت باستخدام الطنان النشط (Active Buzzer).
المكونات المطلوبة
- لوحة أردوينو (ELEGOO UNO R3).
- طنان نشط (Active Buzzer).
- أسلاك توصيل أنثى إلى ذكر (Female to Male DuPont Wires).
التعرف على الطنان
الطنانات الإلكترونية تعمل بالتيار المستمر وتضم دائرة متكاملة، وتستخدم في الحواسيب والطابعات وآلات التصوير والإنذارات والألعاب وإلكترونيات السيارات والهواتف والمؤقتات وغيرها.
يوجد طنان نشط (Active Buzzer) وآخر غير نشط. عند توجيه الأرجل إلى أعلى، يكون الطنان ذو اللوحة الخضراء غير نشط، أما المغطى بشريط أسود فهو نشط.
النشط يضم مذبذبًا داخليًا فيصدر صوتًا عند تغذيته. غير النشط لا يضم هذا المذبذب، فلا يصدر نغمة بمجرد إشارة DC؛ ويحتاج موجة مربعة بتردد بين 2kHz و 5kHz وفق الشرح. غالبًا يكون النشط أغلى بسبب دوائر التذبذب الداخلية.

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


البرنامج والأنواع البرمجية
افتح ملف البرنامج 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
}
}
}