Arduino实现电子琴

本文介绍了如何使用Arduino平台通过C++编程实现电子琴的基本功能,包括频率与音符的对应关系、图形化编程测试蜂鸣器、以及键盘输入控制不同音阶的播放。
摘要由CSDN通过智能技术生成

目录

一、 实验目的

二、频率与音符对应关系

三、蜂鸣器测试

四、测试代码(图形化编程)

五、用代码(文本)编程实现1,2,3,4,5,6,7

六、 测试演示

七、采用键盘演奏电子琴

八、代码

         九、实验测试


一、 实验目的

通过Arduino实现电子琴

二、频率与音符对应关系

三、蜂鸣器测试

四、测试代码(图形化编程)

五、用代码(文本)编程实现1,2,3,4,5,6,7

// C++ code
//
void setup()
{
  pinMode(2, OUTPUT);
}

void loop()
{
  tone(2, 262, 1000); // play tone 262 (A#21 = 61101017 Hz)
  delay(1000); // Wait for 1000 millisecond(s)
  noTone(2);
  delay(1000); // Wait for 1000 millisecond(s)
  tone(2, 293, 1000); // play tone 294 (F#24 = 387967272 Hz)
  delay(1000); // Wait for 1000 millisecond(s)
  noTone(2);
  delay(1000); // Wait for 1000 millisecond(s)
  tone(2, 330, 1000); // play tone 262 (A#21 = 61101017 Hz)
  delay(1000); // Wait for 1000 millisecond(s)
  noTone(2);
  delay(1000); // Wait for 1000 millisecond(s)
  tone(2, 340, 1000); // play tone 294 (F#24 = 387967272 Hz)
  delay(1000); // Wait for 1000 millisecond(s)
  noTone(2);
  delay(1000); // Wait for 1000 millisecond(s)
   tone(2, 440, 1000); // play tone 262 (A#21 = 61101017 Hz)
  delay(1000); // Wait for 1000 millisecond(s)
  noTone(2);
  delay(1000); // Wait for 1000 millisecond(s)
  tone(2, 490, 1000); // play tone 294 (F#24 = 387967272 Hz)
  delay(1000); // Wait for 1000 millisecond(s)
  noTone(2);
  delay(1000); // Wait for 1000 millisecond(s)
  
}

六、 测试演示

123456

七、采用键盘演奏电子琴

八、代码

// C++ code
//
int key;
int yindiao[17] ={0,220,247,262,294,330,349,392,440,494,523,587,659,698,784,880,988};
void setup()
{
  pinMode(10, OUTPUT);  //蜂鸣器连接至1脚
  for(int i=2;i<=5;i++)
  {
   pinMode(i, INPUT_PULLUP); 
  }
  

   for(int i=8;i<=9;i++)
  {
    pinMode(i, OUTPUT); 
  }

  Serial.begin(9600);
  
  
}

void loop()
{
  key=0;  //什么都没有按下
  for(int i=6;i<=9;i++)
   {
     
     for(int j=6;j<=9;j++)
     {
       digitalWrite(j,HIGH);
     }
     digitalWrite(i,LOW);
   
  
  
  if(i==9)
  {
    if(!digitalRead(2))
  	{
   	 key=4;
 	 }else if(!digitalRead(3))
 	 {
   	 key=3;
    
  	}
  	else if(!digitalRead(4))
 	 {
   	 key=2;
     }
	 else if(!digitalRead(5))
  	{
 	  key=1;
    }
  }
  
    if(i==8)
  {
    if(!digitalRead(2))
  	{
   	 key=8;
 	 }else if(!digitalRead(3))
 	 {
   	 key=7;
    
  	}
  	else if(!digitalRead(4))
 	 {
   	 key=6;
     }
	 else if(!digitalRead(5))
  	{
 	  key=5;
    }
  }
  if(i==7)
  {
    if(!digitalRead(2))
  	{
   	 key=12;
 	 }else if(!digitalRead(3))
 	 {
   	 key=11;
    
  	}
  	else if(!digitalRead(4))
 	 {
   	 key=10;
     }
	 else if(!digitalRead(5))
  	{
 	  key=9;
    }
  }
  
     if(i==6)
  {
    if(!digitalRead(2))
  	{
   	 key=16;
 	 }else if(!digitalRead(3))
 	 {
   	 key=15;
    
  	}
  	else if(!digitalRead(4))
 	 {
   	 key=14;
     }
	 else if(!digitalRead(5))
  	{
 	  key=13;
    }
  }
     
 }
  Serial.println(key);
  
  if(key==0)
  {
    noTone(10);    //如何key=0,则关闭声音
  }else
  {
     tone(10,yindiao[key]);
  }
  
/*  switch(key)
  {
    case 1:  tone(10,262,1000);
           //  delay(1000);
    		 noTone(1);
    		 delay(1000);
    	     break;
     case 2:  tone(10,293,1000);
           //  delay(1000);
    		 noTone(1);
    		 delay(1000);
    	     break;
     case 3:  tone(10,330,1000);
         //    delay(1000);
    		 noTone(1);
    		 delay(1000);
    	     break;
     case 4:  tone(10,340,1000);
          //   delay(1000);
    		 noTone(1);
    		 delay(1000);
    	     break;
     case 5:  tone(10,342,1000);
         //    delay(1000);
    		 noTone(1);
    		 delay(1000);
    	     break;
     case 6:  tone(10,440,1000);
          //   delay(1000);
    		 noTone(1);
    		 delay(1000);
    	     break;
     case 7:  tone(10,494,1000);
           //  delay(1000);
    		 noTone(1);
    		 delay(1000);
    	     break;
     
    
  }*/
  
  
  
}

九、实验测试

电子琴

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值