电脑,windows系统
零知开发板(点击购买)
micro-usb线
面包板一个(点击购买)
蜂鸣器一个(点击购买)
按键(点击购买)
电阻(点击购买)
跳线若干(点击购买)
实物连线如图所示:
/**********************************************************
* 文件: 制作简单的电子钢琴.ino by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
* -^^- 零知开源,让电子制作变得更简单! -^^-
* 时间: 2019/07/24 9:07
* 说明:
************************************************************/
int buzzer = 10;//设置蜂鸣引脚
int KEY_1 = 1;//按键1的引脚为一号
int KEY_2 = 2;//按键2的引脚为二号
int KEY_3 = 3;
int KEY_4 = 4;
int KEY_5 = 5;
int KEY_6 = 6;
int KEY_7 = 9;//按键7的引脚为九号
int A = 0;//定义7个变量存放各个按键的电平状态
int B = 0;
int C = 0;
int D = 0;
int E = 0;
int F = 0;
int G = 0;
void tone1_YES();
void tone2_YES();
void tone3_YES();
void tone4_YES();
void tone5_YES();
void tone6_YES();
void tone7_YES();
// 复位或上电后运行一次:
void setup() {
pinMode(1,INPUT);//对按键进行初始化,也可以将代码写成pinMode(KEY_1,INPUT);
pinMode(2,INPUT);
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);
pinMode(9,INPUT);
digitalWrite(buzzer,HIGH);//设置蜂鸣器的电压为高
pinMode(10,OUTPUT);//初始化蜂鸣器的状态
//在这里加入初始化相关代码,只运行一次:
}
//一直循环执行:
void loop() {
A = digitalRead(KEY_1);//把读到的按键1电压存放到A
B = digitalRead(KEY_2);
C = digitalRead(KEY_3);
D = digitalRead(KEY_4);
E = digitalRead(KEY_5);
F = digitalRead(KEY_6);
G = digitalRead(KEY_7);
if(A == HIGH)//当按下第一个按键A,即A的电压为高
{
tone1_YES();//执行第一个音符
}
if(B == HIGH)
{
tone2_YES();//执行第二个音符,同理也可以将所有音符放入,按下按键就可以播放一首歌。
}
if(C == HIGH)
{
tone3_YES();
}
if(D == HIGH)
{
tone4_YES();
}
if(E == HIGH)
{
tone5_YES();
}
if(F == HIGH)
{
tone6_YES();
}
if(G == HIGH)
{
tone7_YES();
}
}
void tone1_YES()
{
tone(10,1523,100);//第一个数字是代表使发音的引脚,第二个数字是发音频率,第三个数字代表声音持续的时间
//音符do
}
void tone2_YES()
{
tone(10,1587,100);//音符 ri
}
void tone3_YES()
{
tone(10,1659,100);// 音符 mi
}
void tone4_YES()
{
tone(10,1698,100);//音符 fa
}
void tone5_YES()
{
tone(10,1784,100);//so
}
void tone6_YES()
{
tone(10,1880,100);//la
}
void tone7_YES()
{
tone(10,2420,100);//xi
}
//ps,根据版本不同,tone的音符 数据有不同。