生日快乐歌arduino
时间: 2023-12-20 09:05:17 浏览: 35
以下是使用Arduino UNO开发板播放“生日快乐”歌曲的代码,需要连接一个蜂鸣器到数字引脚8上:
```arduino
int speakerPin = 8;
void setup() {
pinMode(speakerPin, OUTPUT);
}
void loop() {
// 生日快乐歌曲的音符频率
int notes[] = {262, 262, 294, 262, 349, 330, 262, 262, 294, 262, 392, 349, 262, 262, 523, 440, 349, 330, 294, 466, 466, 440, 349, 392, 349};
// 生日快乐歌曲的音符时长
int durations[] = {4, 4, 4, 4, 4, 2, 4, 4, 4, 2, 4, 4, 4, 2, 4, 4, 4, 2, 4, 4, 4, 4, 4, 4, 4};
// 播放每个音符
for (int i = 0; i < 25; i++) {
tone(speakerPin, notes[i]);
delay(200 / durations[i]);
noTone(speakerPin);
delay(20);
}
}
```
相关问题
arduino蜂鸣器生日快乐歌程序
Arduino蜂鸣器是一种通过控制电平以产生声音的电子元件。编写一个Arduino蜂鸣器生日快乐歌程序可以通过控制蜂鸣器的频率和持续时间来创造出生日快乐歌的声音。
以下是一个简单的Arduino蜂鸣器生日快乐歌程序:
```c++
#include <toneAC.h> // 引入音频库
void setup() {
// 设置蜂鸣器引脚
pinMode(9, OUTPUT);
}
void loop() {
// 生日快乐歌的音符
int melody[] = {
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_F4, NOTE_E4,
NOTE_C4, NOTE_C4, NOTE_D4, NOTE_C4, NOTE_G4, NOTE_F4,
NOTE_C4, NOTE_C4, NOTE_C5, NOTE_A4, NOTE_F4, NOTE_E4, NOTE_D4, NOTE_AS4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_G4, NOTE_F4
};
// 音符持续的时间
int noteDurations[] = {
4, 4, 2, 2, 2, 4,
4, 4, 2, 2, 2, 4,
4, 4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
};
// 播放生日快乐歌
for (int i = 0; i < sizeof(melody) / sizeof(melody[0]); i++) {
toneAC(9, melody[i]); // 控制蜂鸣器产生指定频率的声音
delay(noteDurations[i] * 250); // 控制音符的持续时间
noToneAC(9); // 关闭蜂鸣器
}
// 播放完整首歌曲后,等待一段时间再重新播放
delay(2000); // 2秒钟的延迟
}
```
通过将上述代码上传到Arduino控制板上,并将蜂鸣器连接到数字引脚9上,便可以听到Arduino通过蜂鸣器演奏出生日快乐歌的声音。在代码中我们定义了生日快乐歌的音符和音符持续时间,并通过循环遍历的方式控制蜂鸣器发声。
基于arduino的生日快乐
以下是基于Arduino的生日快乐歌曲演奏代码:
```arduino
int speakerPin = 9; // 定义扬声器引脚
int length = 28; // 歌曲长度
char notes[] = "GGAGcB GGAGdc GGxecBA yyecdc"; // 歌曲音符
int beats[] = { 2, 2, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 8, 16, 1, 2, 2, 8, 8, 8, 16, 1 }; // 歌曲节拍
void playTone(int tone, int duration) {
for (long i = 0; i < duration * 1000L; i += tone * 2) {
digitalWrite(speakerPin, HIGH);
delayMicroseconds(tone);
digitalWrite(speakerPin, LOW);
delayMicroseconds(tone);
}
}
void playNote(char note, int duration) {
char names[] = { 'C', 'D', 'E', 'F', 'G', 'A', 'B', 'x', 'y' };
int tones[] = { 1915, 1700, 1519, 1432, 1275, 1136, 1014, 0, 0 };
for (int i = 0; i < 9; i++) {
if (names[i] == note) {
playTone(tones[i], duration);
}
}
}
void setup() {
pinMode(speakerPin, OUTPUT);
}
void loop() {
for (int i = 0; i < length; i++) {
if (notes[i] == ' ') {
delay(beats[i] * 300);
} else {
playNote(notes[i], beats[i] * 300);
}
delay(30);
}
}
```
这段代码使用Arduino的数字引脚9连接扬声器,然后定义了一个生日快乐歌曲的音符和节拍数组。接下来,使用`playTone()`函数播放音符,使用`playNote()`函数将音符转换为频率并播放。最后,在`loop()`函数中循环播放整个歌曲。