使用Arduino和蜂鸣器播放流行歌曲

使用蜂鸣器生成的流行歌曲和旋律

项目介绍

$ 使用 Arduino 和蜂鸣器播放流行歌曲 $

蜂鸣器用于生成歌曲的声音、哔哔声甚至旋律。它可以在警报设备、计算机、计时器和用户输入的确认(如鼠标点击或击键)中找到。

压电蜂鸣器不像您可能想到的普通扬声器。它使用的材料实际上会在您对其施加电力时改变形状,从而产生噪音。材料弯曲得越快,产生的噪音音调就越高。

接线方案

连接非常简单,它只有控制信号和GND。引脚 D9 将用于控制音调。

带蜂鸣器的Arduino Nano接线

Arduino代码

内置的Arduino函数将用于生成旋律。 Tone() 在引脚上生成指定频率(和 50% 占空比)的方波。可以指定持续时间,否则波会一直持续到调用 noTone() 。如果您尝试为人耳制作音调,那么 2000 到 5000 之间的值是我们耳朵调谐最多的地方。

主程序将遍历音符,并为音符使用指定的持续时间。该代码具有不言自明的注释,以便更好地理解正在执行的操作。

#include "pitches.h"

#define BUZZER_PIN 9

int melody[] = {

// Notes goes here

};

int durations[] = {

// Notes duration goes here

};

void setup()

{

pinMode(BUZZER_PIN, OUTPUT);

}

void loop()

{

int size = sizeof(durations) / sizeof(int);

for (int note = 0; note < size; note++) {

//to calculate the note duration, take one second divided by the note type.

//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.

int duration = 1000 / durations[note];

tone(BUZZER_PIN, melody[note], duration);

//to distinguish the notes, set a minimum time between them.

//the note's duration + 30% seems to work well:

int pauseBetweenNotes = duration * 1.30;

delay(pauseBetweenNotes);

//stop the tone playing:

noTone(BUZZER_PIN);

}

}

一次只能生成一个音调。如果一个音调已经在另一个引脚上播放,则对 tone() 的调用将不起作用。如果音调在同一针脚上播放,呼叫将设置其频率。使用 tone() 函数会干扰引脚 3 和 11 上的 PWM 输出(在 Mega 以外的电路板上)。此外,无法生成低于 31Hz 的音调。

音高库

用于生成旋律的代码使用我们的 $ GitHub 上提供的额外库。$ 此文件包含典型音符的所有音高值。

要导入库,请打开 Arduino IDE,转到 Sketch >Include Library >Add.ZIP Library,然后选择从我们的 GitHub 存储库下载的库文件。

包括Arduino IDE的外部库

然后,您可以简单地使用 include 语句:

#include "pitches.h"

它将包括具有预定义音高常数的库,因此旋律生成变得更加容易。

流行歌曲

目前,以下旋律可用。可以根据用户请求使用新列表更新列表。因此,请随时发表评论,并附上您想听的旋律。

歌曲

  1. 你的形状

电影

  1. 权力的游戏
  1. 哈利·波特
  1. 粉红豹
  1. 加勒比海盗
  1. 星球大战
  1. 教父
  1. 狮子今晚睡着了

游戏

  1. 厄运
  1. 马里奥兄弟
  1. 吃豆子
  1. 俄罗斯方块

其他

  1. 生日快乐
  1. 诺基亚铃声
  1. 圣诞快乐

Similar Posts

Leave a Reply