当前位置:首页Arduino > 正文

ARDUINO音乐代码

作者:野牛程序员:2023-07-05 18:11:23Arduino阅读 2758

当使用Arduino编程播放音乐时,通常会涉及到控制蜂鸣器或扬声器来发出音频信号。以下是一个简单的Arduino音乐代码示例,用于播放经典音乐《小星星》:

// 定义蜂鸣器引脚
#define BUZZER_PIN 9

// 定义音符频率
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523

// 定义音符持续时间
#define QUARTER_NOTE 400
#define EIGHTH_NOTE 200
#define HALF_NOTE 800

// 定义音符序列
int melody[] = {
  NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4,
  NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_C4,
  NOTE_G4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4,
  NOTE_G4, NOTE_G4, NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4,
  NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4,
  NOTE_F4, NOTE_F4, NOTE_E4, NOTE_E4, NOTE_D4, NOTE_D4, NOTE_C4
};

// 定义音符持续时间序列
int noteDurations[] = {
  QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, HALF_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, HALF_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, HALF_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, HALF_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE, QUARTER_NOTE,
  QUARTER_NOTE, QUARTER_NOTE, HALF_NOTE
};

void setup() {
  // 设置蜂鸣器引脚为输出
  pinMode(BUZZER_PIN, OUTPUT);
}

void loop() {
  // 播放音符序列
  for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
    int noteDuration = 1000 / noteDurations[i];
    tone(BUZZER_PIN, melody[i], noteDuration);
    delay(noteDuration * 1.3);
    noTone(BUZZER_PIN);
  }

  // 延迟一段时间后再次播放
  delay(2000);
}

这个示例代码使用tone()函数来发出音频信号,它接受两个参数:引脚和频率。delay()函数用于控制音符的持续时间。在loop()函数中,通过循环遍历音符序列,使用tone()播放音符,并使用delay()延迟相应的时间。然后,使用noTone()停止播放音符。代码的最后,通过delay()函数在每次播放结束后延迟2秒再次播放音乐。

请注意,该代码假设你将蜂鸣器连接到Arduino的9号引脚。如果连接到其他引脚,请相应地修改BUZZER_PIN的定义。

这只是一个简单的示例,你可以根据需要修改音符序列和持续时间来播放其他曲目。


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击