实验十一 丰富的声音

实验十一 丰富的声音


一、实验目的

通过本实验,熟悉光敏电阻的工作原理、应用场景及安装使用过程,掌握在Arduino项目中获取光敏电阻输出值的方法,并能使用光敏电阻及不同欧姆值的电阻使蜂鸣器产生丰富的声音效果。


二、实验要求

 1、使用ESP 8266电路板、光敏电阻(如图所示)、蜂鸣器(如图所示)、电阻和导线搭建实验电路,并编写相应Arduino程序代码,实现通过改变照射到光敏电阻的光线强度使蜂鸣器发出不同声音的效果。

11-1光敏电阻11-2蜂鸣器

 2、将第1步实验中的光敏电阻换成开关,并添加电阻及导线,修改实验代码,通过不同的电阻组合使蜂鸣器发出不同频率的声音,模拟电子琴的几个音阶。


三、实验过程

 1、光敏电阻控制蜂鸣器声音

1)使用导线分别连接面包板的电源总线正极和负极到电路板的3V3GND接口;将1个光敏电阻放置在面包板上,注意2个针脚必须在不同的行上,其中1个针脚使用导线连接到电路板A0接口,并使用11K电阻连接到面包板电源总线负极,另1个针脚使用导线连接到面包板电源总线正极;放置1个蜂鸣器在面包板上,其2个针脚横跨在面包板中间小沟上,其中标注了正极符号的针脚使用导线连接到电路板的D8GPIO15)接口,另1个引脚使用导线连接到面包板电源总线负极。电路连接如图所示。

11-3实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

int sensorValue;//定义变量,用于存储光敏电阻的输出的模拟值

void setup() {

  Serial.begin(115200);

}

void loop() {

  sensorValue=analogRead(A0);//获取光敏电阻输出的模拟值

  int pitch=map(sensorValue,0,1023,50,4000);//将输出值变换到504000的频率范围

  Serial.println(pitch);//在串口监视器中换行输出当前蜂鸣器声音频率值

  tone(15,pitch,20);//在连接了蜂鸣器的D8GPIO15)接口发出声音

  delay(10);

}

3)将USB线缆插入计算机,待程序上传成功后蜂鸣器会发出声音,使用手掌在光敏电阻上方移动,蜂鸣器的声音会随之改变,同时在串口监视器中可查看到当前蜂鸣器发出的声音的频率。

 2、开关控制蜂鸣器声音

1)将第1步实验中的光敏电阻及其导线拆除,放置4个开关在面包板上,使用3根导线将它们其中的1个引脚连接起来,形成电阻阶梯;将靠近蜂鸣器开关的空引脚连接到面包板电源总线正极,分别使用1K10K的电阻(也可使用其它电阻值的电阻,不相同即可)将另外3个开关的空引脚连接到面包板电源总线正极;使用导线将离蜂鸣器最远开关的交汇点引脚连接到电路板A0接口,并使用11K电阻将其连接到面包板电源总线负极。电路连接如图所示。

11-4实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

//定义数组,分别存储中音哆唻咪发的声音频率

int notes[]={262,294,330,349};

void setup() {

  Serial.begin(115200);

}

void loop() {

  //定义变量,存储A0口获取到的不同电阻的输出值

  int keyVal=analogRead(A0);

  //通过串口监视器输出获取到的值

  Serial.println(keyVal);

  //当按下第1个按钮时会输出1个值,这个值可能会有波动,于是便定义1个小的范围来表示它

  if(keyVal>=485&&keyVal<=495){ //此处的值一定要根据串口监视器查看到的值进行修改

    tone(15,notes[0]);//使连接在D8GPIO15)接口的蜂鸣器发出哆的音

    delay(10);

  }

  else if(keyVal>=497&&keyVal<=507){

    tone(15,notes[1]);

    delay(10);

  }

  else if(keyVal>=80&&keyVal<=90){

    tone(15,notes[2]);

    delay(10);

  }

  else if(keyVal>=980&&keyVal<=990){

    tone(15,notes[3]);

    delay(10);

  }

  else{

    noTone(15);//不发音

  }

}

3)将USB线缆插入计算机,待程序上传成功后分别按下4个开关,聆听蜂鸣器发出的声音。注意务必打开串口监视器,观察依次按下开关时的输出值,并将程序代码中对应的数值进行修改,然后再次上传程序。

该实验的结果是:按下离蜂鸣器最远的1个开关,蜂鸣器发出中音C(即哆)的声音,依次按下开关,会依次发出中音DEF(即唻、咪、发)的声音,模拟电子琴的几个音阶。还可以尝试同时按下多个开关,并在程序代码中添加更多的声音频率输出,以模拟更多的音阶。