零知开源小项目-制作简单的电子钢琴

1、材料

电脑,windows系统
零知开发板(点击购买)
micro-usb线
面包板一个(点击购买)
蜂鸣器一个(点击购买)
按键(点击购买)
电阻(点击购买)
跳线若干(点击购买)

2、硬件连接

实物连线如图所示:

2、程序


							
												
	/**********************************************************
	*    文件: 制作简单的电子钢琴.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的音符 数据有不同。