arduino 创新训练 实验报告

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

贵州大学大数据与信息工程学院创新训练与设计性实验报告

学院:大数据与信息工程学院

专业:电子信息科学与技术

班级:电科151

学号:********** *********

学生姓名:蒋帅朱亮

指导教师:***

2017年7月12 日

贵贵州大学大数据与信息工程学院实习报告第 1 页基于Arduino UNO的倒车雷达系统设计与实现一、设计目标

利用Arduino UNO 设计倒车雷达系统的功能:

1、利用超声波模块HC-SR04 实现避障功能,并可以通过Arduino的串口监视器读取距

离的参数;

2、利用蜂鸣器模块实现不同频率的警报声音;

3、利用贴片式RBG LED实现不同颜色的警报灯光。

二、设计思路

超声波模块(如图一)的原理是使超声波发射器向某一方向发射超声波,在发射的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离s,即:s=340m/s×t

,作用为测距。

2

图一超声波HC-SR04模块

贵州大学大数据与信息工程学院实习报告第 2 页将超声波模块的Echo引脚设置为输入模式,Trig引脚设置为IO脚模式,通过Trig引脚发送脉冲触发HC-SR04 测距,并输出测得的距离值。设置不同的距离值范围,使之输出不同的函数,不同的函数将会输出不同的电平输入至LED(如图二)和蜂鸣器(如图三),然后使LED与蜂鸣器输出不同的结果,即不同颜色的灯光和不同频率的蜂鸣声。

图二贴片式RBG LED图三无源蜂鸣器

三、设计内容

本次实验使用的Arduino主板的型号为UNO(如图四),编程程序为Arduino IDE(如图五)。

图四Arduino UNO

图五Arduino IDE界面

贵贵州大学大数据与信息工程学院实习报告第 3 页代码如下(附带注释):

const int TrigPin = 3;

const int EchoPin = 4; // 定义变色灯LED的三个输出接口

int ledpin1 = 5; // R引脚

int ledpin2 = 6; // G引脚

int ledpin3 = 7; // B引脚

int beeppin = 8; // 蜂鸣器的pin

int i = 0;

void setup ()

{

Serial.begin(9600); //测量结果将通过此串口输出至PC 上的串口监视器

pinMode(EchoPin, INPUT); //设置EchoPin 为输入模式

pinMode(TrigPin, OUTPUT); //设置超声波数字IO脚模式,OUTPUT为输出

pinMode(ledpin1,OUTPUT);

pinMode(ledpin2,OUTPUT);

pinMode(ledpin3,OUTPUT);

pinMode(beeppin,OUTPUT); //设置蜂鸣器引脚输出模式

}

void loop()

{

digitalWrite(TrigPin, LOW); // 通过TrigPin 发送脉冲,触发HC-SR04 测距,使发出发出超声波信号接口低电平2μs delayMicroseconds(2);

digitalWrite(TrigPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs

delayMicroseconds(10);

digitalWrite(TrigPin, LOW); // 保持发出超声波信号接口低电平

int distance = pulseIn(EchoPin, HIGH); // 读出脉冲时间

distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)

Serial.println(distance); //输出距离值

if(distance<20) //当距离<20cm

{

setColor(255, 0, 0);//三色LED的设置颜色

buzzer1();

}

else if (distance<=120) //当距离<120cm

{

setColor(0, 0, 255);

buzzer2();

}

else

贵贵州大学大数据与信息工程学院实习报告第 4 页{

setColor(0, 255, 0);

buzzer3();

}

}

//*****************************************************************

void buzzer1()

{

tone(beeppin,900);

delay(300); //响声间隔300ms 听上去更急促

noTone(beeppin);

}

void buzzer2()

{

tone(beeppin,600);

delay(500); //响声间隔500ms 听上去普通

noTone(beeppin);

}

void buzzer3() //这里我用了除余的方法,目的是如果处在安全距离,在不用delay的情况下蜂鸣器响声不要那么频繁{

if(i%100 == 1){

tone(beeppin,500);

}

else{

noTone(beeppin);

}

i++;

}

void setColor(int red, int green, int blue) //三色LED的设置颜色函数

{

analogWrite(ledpin3, red);

analogWrite(ledpin2, green);

analogWrite(ledpin1, blue);

}

相关文档
最新文档