利用Arduino制作音乐播放+随节奏闪光仪器实现

发布时间 2023-04-24 21:49:55作者: Noiimplant

1.实验器材

Arduino开发板,面包板一块,杜邦线若干,LED灯若干,220欧电阻若干,蜂鸣器一个。

2.实验操作

  • 将六个led灯的正极依次接到arduino板I/O接口的2-7口,
  • 电源负极依分别接一个220欧的电阻 。
  • 整体负极接arduino板的GND接口。
  • 蜂鸣器正极接arduino板I/O接口的8口,负极接GND。

3.代码实现

int buzzer=8; //设置控制蜂鸣器的数字 设置控制蜂鸣器的数字 IO脚 
int BASE = 2 ; //第一颗 第一颗 LED 接的 I/O 腳 
int NUM = 6; //LED 的总数 
  int song[] = {
/* 儿歌《小星星》*/
277,277,415,415,466,466,415,
370,370,330,330,311,311,277,
415,415,370,370,330,330,311,
415,415,370,370,330,330,311,
277,277,415,415,466,466,415,
370,370,330,330,311,311,277,
415,415,370,370,330,330,311,
415,415,370,370,330,330,311,
277,277,415,415,466,466,415,
370,370,330,330,311,311,277,
};
void setup() {
for (int thisNote = 0; thisNote <154; thisNote++)
{
int noteDuration = 1000/noteDurations[thisNote];// 计算每个节拍的时间,以一个节拍一秒为例,四分之一拍就是1000/4毫秒,八分之一拍就是1000/8毫秒
tone(8, song[thisNote],noteDuration);
int pauseBetweenNotes = noteDuration * 1.10; // 每个音符间的停顿间隔,以该音符的130%为佳
delay(pauseBetweenNotes);
noTone(8);
}

for (int i = BASE;i < BASE + NUM; i ++) 
  {
    pinMode(i, OUTPUT); //设定数字 设定数字 I/O脚为输出 脚为输出 
    } 
 for (int i = BASE; i < BASE + NUM; i ++) 
  {
    digitalWrite(i, LOW); //设定数字 设定数字 I/O脚输出为 脚输出为 "低",即逐渐关灯 
    delay(200); //延迟 
    }
for (int i = BASE; i < BASE + NUM; i ++) 
    {
     digitalWrite(i, HIGH); //设定数字 I/O脚输出为 "高",即逐渐开灯
      delay(200); //延迟
     }
}
void loop() {
setup();
}

4.实现实物图

4.1 流水灯接口:

image

4.2 蜂鸣器接口:

image

4.3 Arduino板接口:

image