一、实验目的
1掌握tone()发声函数的功能;
2熟悉数组、自动函数的使用;
3编写乐曲演奏程序;
4编写简易电子琴演奏程序。
二、实验设备与环境
ArduinoUNO套件、ArduinoIDE、计算机、按键、LED灯、蜂鸣器、杜邦线等
三、实验重点
1实验电路连接;2控制程序代码编写;3程序功能调试
四、实验难点
⑴程序代码编写、调试
五、实验内容
5.1实验任务
任务描述:蜂鸣器驱动;调用调声函数演奏乐曲片段;模拟电子琴演奏
5.2实验原理
1.数组
语法:typearrayName[n];
参数:n,数组元素个数;数组元素编号从0开始至n-1
功能:声明一个type类型、n个元素的数组。数组名称与变量命名规则一致,类型为数据类型。数组元素通过再数组名称后永等号与一个大括号包含的初始化值列表进行初始化。
2.调声函数tone()
语法:tone(pin,frenquency,duration);
参数:pin,引脚号;frenquency,发声频率;duration,声音持续时间。功能:产生指定频率的方波,若未指定持续时间,则持续到noTone()时止。在同一时间只能产生一个频率的方波,如果tone正执行在一个pin上,在其他pin上调用tone()将不起作用.如果在同一个pin上再次调用tone,则使用新指定的频率。注意,使用tone()会与pin3和pin11脚的PWM输出冲突。
noTone(pin):停止引脚pin上tone()函数产生的方波信号。
基本音调的频率:Do,;Re,;Mi,;Fa,;So,;La,;Xi,
5.3实验内容
电路图:
原理图:
实验1.蜂鸣器驱动
constbuzzerPin=5;//蜂鸣器引脚接D5接口
consttonebase=;
voidsetup(){
pinMode(buzzerPin,OUTPUT);
}
Voidloop(){
inti=0;
do{
tone(buzzerPin,tonebase+i*5,);//蜂鸣器发声
noTone(buzzerPin);
i++;
}while(i=)
delay(0);
}
ArduinoIDE程序2:
//自定义函数驱动蜂鸣器发声
constbuzzerPin=5;//蜂鸣器引脚接D5接口
consttonebase=;
voidsetup(){
pinMode(buzzerPin,OUTPUT);
}
Voidloop(){
buzzerTone();//调用buzzerTone()函数
delay(0);
}
voidbuzzerTone(){//自定义函数
inti=0;
do{
tone(buzzerPin,tonebase+i*5,);//蜂鸣器发声
noTone(buzzerPin);
i++;
}while(i=)
}
实验2.乐曲片段演奏
voidsetup(){
intbuzzerPin=10;
intDo=;
intRe=;
intMi=;
intFa=;
intSo=;
intLa=;
intXi=;
intmusicTone[]=
{Do,Do,So,So,La,La,So,Fa,Fa,Mi,Mi,Re,Re,Do,So,So,Fa,Fa,Mi,Mi,Re,So,So,Fa,Fa,Mi,Mi,Re};
intmusicduration[]={4,4,4,4,4,4,2,4,4,4,4,4,4,2,4,4,4,4,4,4,2,4,4,4,4,4,4,2};
}
voidloop(){
for(inti=0;i=27;i++){
tone(buzzer,musicTone[i]);
//音符时长,如4分音符,时长/4毫秒
delay(/musicduration[i]);
noTone(buzzer);
}
delay(0);
}
实验3.模拟电子琴演奏
voidsetup(){
intdoPin=2;
intrePin=3;
intmiPin=4;
intfaPin=5;
intsoPin=6;
intlaPin=7;
intxiPin=8;
intmusicPin[]={doPin,rePin,miPin,faPin,soPin,laPin,xiPin};
for(inti=0;i=6,i++){
pinMode(musicPin[i],INPUT);
}
intbuzzerPin=10;
pinMode(buzzer,OUTPUT);
intDo=;
intRe=;
intMi=;
intFa=;
intSo=;
intLa=;
intXi=;
intmusicTone[]={Do,Re,Mi,Fa,So,La,Xi};
}
voidloop(){
//按下按键,发出按键对应音调的声音
if(digitalRead(musicPin[0])){
tone(buzzer,musicTone[0],10);
}
if(digitalRead(musicPin[1])){
tone(buzzer,musicTone[1],10);
}
if(digitalRead(musicPin[2])){
tone(buzzer,musicTone[2],10);
}
if(digitalRead(musicPin[3])){
tone(buzzer,musicTone[3],10);
}
if(digitalRead(musicPin[4])){
tone(buzzer,musicTone[4],10);
}
if(digitalRead(musicPin[5])){
tone(buzzer,musicTone[5],10);
}
if(digitalRead(musicPin[6])){
tone(buzzer,musicTone[6],10);
}
}
实验显示:
转载请注明:http://www.0431gb208.com/sjszlfa/6437.html