给我生成一个arduino的用蜂鸣器演奏小星星音乐的配着7个LED灯来显示不同音调的程序代码
时间: 2024-11-22 13:47:35 浏览: 58
这是一份关于arduino蜂鸣器音乐代码
下面是一个简单的Arduino程序示例,它使用蜂鸣器播放“小星星”旋律,并通过七个LED灯代表音符高低来可视化音乐。这个例子假设你已经有一个连接到Arduino Uno或类似板子的蜂鸣器和七彩LED灯。
```cpp
#include <SoftwareSerial.h> // 引入软件串口库
// LED灯位置
const int ledPins[] = {2, 3, 4, 5, 6, 9, 10}; // 这里是假设LED从A0-A6连接
int ledCount = sizeof(ledPins) / sizeof(ledPins[0]);
// 蜂鸣器引脚
int buzzerPin = 9;
void setup() {
Serial.begin(9600);
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
}
pinMode(buzzerPin, OUTPUT);
}
void toneLED(int note, long duration) {
switch (note) {
case 1: // C
digitalWrite(ledPins[0], HIGH);
break;
case 2: // D
digitalWrite(ledPins[1], HIGH);
break;
// ... 其他音符的对应LED编号
case 7: // G
digitalWrite(ledPins[6], HIGH);
break;
default:
break;
}
delay(duration); // 音调持续时间
noTone(buzzerPin); // 结束音调
delay(100); // 短暂间隔以便观察每个音节
}
void playMelody() {
const uint8_t melody[] = {
1, 2, 3, 4, 5, 6, 5, 4, 3, 2, 1, 0, // 小星星前半部分
6, 5, 4, 3, 2, 1, 0, 0, 0, 0, 0, 0 // 后半部分结束
};
for (uint8_t i = 0; i < sizeof(melody)/sizeof(melody[0]); i++) {
toneLED(melody[i], 100 * i); // 音调持续时间随着音符上升而增加
delay(50); // 每个音符间的间隔
}
delay(1000); // 程序暂停一秒钟
}
void loop() {
playMelody();
}
```
阅读全文