本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
HC-SR 04超声波传感器最常用于测量距离,但是该项目将讲解如何使用此传感器测量物体的移动速度,即在短时间内进行两次距离测量,distance2-distance1 =给定时间的距离速度,如果在在1秒钟的时间内进行测量,那么我们得到的物体移动速度将以cm / s为单位,还可将测量结果显示在LCD屏上。
如果所测对象正在移动,则LCD第一行显示距离,第二行显示速度;还有一个LED发出信号,指示物体放置的距离。如果距离小于5厘米,则LED持续亮起。随着距离的增加,LED开始以取决于物体距离的速度闪烁。如果物体移开,则闪烁会变慢,反之亦然。当物体沿相反方向移动时,显示屏上显示的速度带有负号。
硬件部件:
示意图:
代码:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);// RS,E,D4,D5,D6,D7
//定义引脚号
const int trigPin = 9;
const int echoPin = 10;
// 定义变量
long duration;
int distance1=0;
int distance2=0;
double Speed=0;
int distance=0;
void setup()
{
lcd.begin(16, 2);// LCD 16X2
pinMode(trigPin, OUTPUT); // 将 trig引脚设为输出
pinMode(echoPin, INPUT); // 将echo引脚设置为输入
pinMode( 7 , OUTPUT);
Serial.begin(9600); // 开始串行通讯
}
void loop()
{
//计算速度
distance1 = ultrasonicRead(); //在下面调用ultrasoninicRead()函数
delay(1000);//留出1秒的时间间隔
distance2 = ultrasonicRead(); //在下面调用ultrasoninicRead()函数
//公式的距离变化除以时间变化
Speed = (distance2 - distance1)/1.0; //由于时间间隔为1秒,因此我们将其除以1
//显示速度
Serial.print("Speed in cm/s :");
Serial.println(Speed);
lcd.setCursor(0,1);
lcd.print("Speed cm/s ");
lcd.print(Speed);
// LED指示灯
if (distance >0 && distance <5)
{
digitalWrite( 7 , HIGH);
delay(50); // 等待一秒钟
}
if (distance > 5 && distance <10 )
{
digitalWrite( 7 , HIGH);
delay(50); // 等待一秒钟
digitalWrite( 7 , LOW); // 关闭LED
delay(50); // 等待一秒钟
}
if (distance >10 && distance < 20)
{
digitalWrite( 7 , HIGH);
delay(210); //等待一秒钟
digitalWrite( 7 , LOW); // 关闭LED
delay(210); // 等待一秒钟
}
if (distance >20 && distance < 35)
{
digitalWrite( 7 , HIGH);
delay(610); // 等待一秒钟
digitalWrite( 7 , LOW); //关闭LED
delay(610); // 等待一秒钟
}
}
float ultrasonicRead ()
{
// 清除trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// 将trigPin设置为HIGH状态10微秒
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 读取echoPin,返回声波传播时间(以微秒为单位)
duration = pulseIn(echoPin, HIGH);
//计算距离
distance= duration*0.034/2;
// 在串行监视器上打印距离
Serial.print("Distance in cm : ");
Serial.println(distance);
lcd.setCursor(0,0);
lcd.print("Dist. in cm ");
lcd.print(distance);
lcd.print(" ");
return distance;
}
开启“人工智能”——贝尔金WeMo智能插座套装拆解
2014-05-23
iPhone 6 plus最专业传感器深入解析
2014-10-22
智能手机里面都装着哪些传感器?它们都记录了你的什么?
2016-04-11
NXP开发板不知道选什么,看这里就对了!
2016-07-28
盘点全球知名传感器芯片巨头Top10
2015-08-21
这套工业物联网解决方案把乐高变成了一座智慧城市
2019-06-24
[项目实录]全流程LoRaWAN开发
2019-07-22
【视频秀】用STM32和光传感器控制电机马达开关窗户
2019-06-12
一款小尺寸、高性能的智能家居设备
2019-06-21
无线传感器网络——传感器原理与应用系列课程
2019-07-24
讨论