一、实验目的
通过本实验,熟悉供电模块提供不同电压电源的方法,熟悉超声波传感器的安装使用过程,掌握在Arduino项目中读取并在串口监视器中输出距障碍物距离的方法,并掌握通过蜂鸣器表现不同距离的实现过程。
二、实验要求
1、使用供电模块(如图所示)、LED灯和导线搭建实验电路,测试不同输出电压点亮LED的不同亮度效果。
图5-1供电模块
2、使用ESP 8266电路板、超声波传感器(如图所示)、供电模块及导线搭建实验电路,编写Arduino程序代码,实现通过串口监视器显示障碍物离传感器的距离值。
图5-2超声波传感器
3、在第2步的实验中添加1个无源蜂鸣器(如图所示),修改实验代码,实现通过传感器获取到的距离值控制蜂鸣节奏的效果,模拟汽车倒车雷达。
图5-3无源蜂鸣器
三、实验过程
1、不同电压值对LED亮度的影响
(1)将1个供电模块放置在面包板上,注意正负极必须与面包板电源总线的正负极一致,通过跳线将两侧输出电压分别设置为3.3V和5V,使用9V电池供电(也可使用变压器将交流电源变为9V后供电)。分别放置2个LED(为了实现对比效果,建议选用相同颜色)在面包板的两个区域,分别使用1K的电阻将面包板电源总线正极与LED正极相连,使用导线将面包板电源总线负极与LED负极相连。电路连接如图所示。
图5-4实验电路连接图
(2)打开供电模块的开关,观察2个LED灯的亮度,发现输出电压为5V的LED灯的亮度要大于输出电压为3.3V的LED灯。
2、通过串口监视器输出障碍物距离数值
(1)拆除第1步中的LED、电阻及导线,将1个超声波传感器放置在面包板上,注意4个针脚必须位于不同的行,分别使用导线将传感器的VCC连接到面包板5V电源总线正极,将GND连接到5V电源总线负极,将Trig连接到电路板的D6(GPIO12)接口,将Echo连接到电路板的D5(GPIO14)接口。电路连接如图所示。
图5-5实验电路连接图
(2)在新建的Arduino程序窗口中输入如下代码:
//定义传感器针脚连接的电路板接口
#define TRIGGER 12
#define ECHO 14
void setup() {
Serial.begin (115200);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
}
void loop() {
long duration, cm, inches;
//先发送一个短的低脉冲,以保证数据准确性,再发送一个10微秒的高脉冲
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
//从传感器获取从发送脉冲到遇到障碍物返回接收到的时间差
duration = pulseIn(ECHO, HIGH);
//将时间分别转换成厘米和英寸
cm = (duration/2) / 29.1;
inches = (duration/2) / 74;
//输出结果
Serial.print("The distance is: ");
Serial.print(cm);
Serial.println("cm");
Serial.println(" OR ");
Serial.print(inches);
Serial.println("inches");
delay(1000);
}
(3)将USB线缆插入计算机,程序上传成功后打开供电模块开关,在Arduino的串口监视器窗口(修改波特率为115200)查看障碍物距传感器的距离值,通过改变障碍物的距离(在传感器前方移动手掌)观察数值的变化。结果如图所示。
图5-6串口监视器输出实验结果
3、通过障碍物距离控制蜂鸣器节奏
(1)在第2步实验的基础上放置1个无源蜂鸣器在面包板上,注意3个针脚必须位于不同的行,分别使用导线将蜂鸣器的中间引脚连接到面包板的5V电源总线正极,将负极连接到面包板的5V电源总线负极,将标注了S的引脚连接到电路板的D3(GPIO0)接口。电路连接如图所示。
图5-7实验电路连接图
(2)在新建的Arduino程序窗口中输入如下代码:
#define TRIGGER 12
#define ECHO 14
void setup() {
Serial.begin (115200);
pinMode(TRIGGER, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(0,OUTPUT);
}
void loop() {
long duration, cm;
digitalWrite(TRIGGER, LOW);
delayMicroseconds(2);
digitalWrite(TRIGGER, HIGH);
delayMicroseconds(10);
digitalWrite(TRIGGER, LOW);
duration = pulseIn(ECHO, HIGH);
cm = (duration/2) / 29.1;
int pinBuzzer = 0; //定义蜂鸣器S针脚连接的电路板接口
long frequency = 300; //频率,单位Hz
//如果距离大于15cm,蜂鸣器不叫
if(cm>15)
noTone(pinBuzzer); //停止发声
//如果距离大于10厘米小于等于15厘米,蜂鸣器缓叫
if(cm<=15 && cm>10){
//用tone()函数发出频率为frequency的波形
tone(pinBuzzer, frequency);
delay(500); //等待0.5秒
noTone(pinBuzzer); //停止发声
delay(500); //等待0.5秒
}
//如果距离大于5厘米小于等于10厘米,蜂鸣器急叫
if(cm<=10&&cm>5){
tone(pinBuzzer, frequency);
delay(300);
noTone(pinBuzzer);
delay(300);
}
//如果距离小于等于5厘米,蜂鸣器长叫
if(cm<=5){
tone(pinBuzzer, frequency);
delay(100);
}
}
(3)将USB线缆插入计算机,程序上传成功后打开供电模块开关,通过改变障碍物的距离(在传感器前方移动手掌)控制蜂鸣器的节奏。
该实验的结果是:当障碍物距超声波传感器较远时(本例设置为15厘米以上),蜂鸣器不响,当缓慢移动靠近传感器时,蜂鸣器开始缓慢间断响起,距离越近,响起的节奏越快,直到长响,模拟汽车倒车雷达的效果。