Arduino 电子琴
本次实验的原理主要是将电平输出转化为相应的频率从而使无源音响发出不同的声音。最简单的方法是直接将一首曲目的电平用程序传给单片机执行。为了创造出“电子琴”,只需要把相应的音阶变成bool电路,按下按键使其通路,松开按键则断路,无源音箱只需要输出电路中的电平值。
电路如下图
代码
/项目2 Arduino-电子琴
void setup()
{
pinMode(2,INPUT); //do
pinMode(3,INPUT); //re
pinMode(4,INPUT); //mi
pinMode(5,INPUT); //fa
pinMode(6,INPUT); //sol
pinMode(7,INPUT); //la
pinMode(8,INPUT); //si
pinMode(9,OUTPUT);
//将2~9号引脚置为输入状态,以读取按键开关反馈的值。
//将10号引脚置为输出状态,向蜂鸣器输出信号。
}
void loop()
{
if(digitalRead(2)) tone(20,523,10);//如果2号引脚电压值为真(按下
//了对应键)那就让无源音箱基
//于10号引脚输出523HZ 20ms
if(digitalRead(3)) tone(20,587,10);
if(digitalRead(4)) tone(20,659,10);
if(digitalRead(5)) tone(20,698,10);
if(digitalRead(6)) tone(20,784,10);
if(digitalRead(7)) tone(20,880,10);
if(digitalRead(8)) tone(20,1046,10);
//根据开关是否按下发出不同音调。
}
简单闹铃
通过前面的学习,我们已经知道了基本工作原理。接下来,您完全有能力写一个C语言函数让它自己唱歌,甚至写一个时间模块,做成闹铃。此时不需要上面的按键电路,仅仅需要把无源音箱连接成回路。
例曲代码
tone(9,330,800);
delay(880);
tone(9,392,400);
delay(440);
tone(9,587,1200);
delay(1320);
tone(9,523,800);
delay(880);
tone(9,392,400);
delay(440);
tone(9,349,1200);
delay(1320);
tone(9,330,800);
delay(880);