← العودة لمغامرة الأردوينو
🎮 أردوينو للأطفال — عالم الصوت

🎼 تشغيل ألحان كاملة

⏱ 22 د
لتشغيل ألحان كاملة نخزّن النغمات ومددها في مصفوفتين متوازيتين: مصفوفة الترددات ومصفوفة المدد. ثم نمر عليهما بحلقة for ونشغّل كل نغمة بالترتيب. يمكن بهذه الطريقة برمجة أي لحن تريده — من نشيد وطني إلى مقطع من أغنيتك المفضلة!
// ===== لحن 'تويكل تويكل' =====

#define BUZZER 8

// ترددات النغمات (0 = صمت)
int melody[] = {
  262, 262, 392, 392, 440, 440, 392, 0,
  349, 349, 330, 330, 294, 294, 262, 0,
  392, 392, 349, 349, 330, 330, 294, 0,
  392, 392, 349, 349, 330, 330, 294, 0,
  262, 262, 392, 392, 440, 440, 392, 0,
  349, 349, 330, 330, 294, 294, 262
};

// مدد النغمات بالميلي ثانية
int durations[] = {
  400,400,400,400,400,400,800,400,
  400,400,400,400,400,400,800,400,
  400,400,400,400,400,400,800,400,
  400,400,400,400,400,400,800,400,
  400,400,400,400,400,400,800,400,
  400,400,400,400,400,400,800
};

int noteCount = sizeof(melody) / sizeof(melody[0]);

void setup() {}

void loop() {
  for (int i = 0; i < noteCount; i++) {
    if (melody[i] == 0) {
      noTone(BUZZER);
    } else {
      tone(BUZZER, melody[i], durations[i] * 0.9);
    }
    delay(durations[i]);
    noTone(BUZZER);
  }
  delay(2000); // استراحة بين التكرارات
}
ضرب مدة النغمة بـ 0.9 قبل تشغيلها يُنشئ فراغاً صغيراً بين النغمات يجعل اللحن يبدو طبيعياً وغير متلاصق!
مدة النغمةالرمز الموسيقيالمدة بالـ ms (BPM=120)
كاملة𝅝2000 ms
نصف𝅗𝅥1000 ms
ربع500 ms
ثمن250 ms
سادس عشر𝅘𝅥𝅯125 ms
🧠 سؤال سريع
ما دالة إيقاف النغمة الحالية؟
🎉 رائع!