超声波传感器以及智能垃圾桶项目(3.13)

本文介绍了如何在智能垃圾桶项目中使用超声波传感器进行距离测量,结合定时器实现us级延时,并通过GPIO和中断处理控制LED灯、舵机和蜂鸣器,解决开盖功能的bug。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

超声波传感器概述:

c57645e88f5f4eb3aa0cf9258b9dc2e8.png

ed57689281a2402b8741c2d977f71902.png

4dee91635862493e9acd3d38520ddecd.png

利用定时器2计数,将PSC配置为71,这样利用公式计算得出计数一次代表1us

bfa27d77a0974b0dbf23c018ea26de5a.png

33a9f3239f3d40fdbb827026b6c95eba.png

利用定时器2来做一个us级得延时函数,方便使用超声波的触发信号。

以下是主函数代码:

3997e32bd62945a0819237bcfde1d6a1.png

ed259dc93fa647de98114fd7493f7edf.png

智能垃圾桶项目:

接线:

b2453927ec894bfc91eb2e6e4c38923e.png

LED1连接PB8,sg90舵机连接PB9,接线要正确!

函数封装:四个板块,板块1用来给超声波Trig端口至少10us的高电平,板块2利用超声波获得与物体的距离,记得在启动定时器2时将定时器2计数值清零。

b94bd29a88e6405e941f333e5235e419.pngceaf3f434d8e4974a038ebe5a536de65.png

板块3是LED灯的函数封装,板块4是舵机的,在初始化舵机时,需要打开定时器4通道4中的PWM功能。

6930585800bb4993953300fd1656e8f9.png35883430119646419480ae7f720879fa.png

main函数:在while循环外初始化舵机。

9fe569bb8cc14e0385fdf09dadc7b58a.png

加入按键开盖和震动传感器:

在cubeMX软件GPIO设置中设置PA0和PB5为下降沿触发中断

076b3dbda45f432db4dff5ddc4269e33.png

打开外部中断,并且将抢占优先级设置为2,并在main函数中设置滴答定时器优先级,防止在中断服务函数中使用延时函数时卡死。55178f00fe9b400492f3f34bb95b1a35.png

8beeeb99adbf4dd695c556f5430d1d99.png

在main函数中重写中断服务函数,中断线0和5共用一个中断服务函数,双重判断中断源是否来自PA0或者PB5,因为都是下降沿触发中断,所以可以在中断函数里检测PA0或者PB5是否为低电平。

57d557d5667f48a2b724c3376f738c67.png

最后在开盖函数中加入蜂鸣器,cubeMX中设置PB4为输出模式,默认高电平。

最后有个小bug,如果一直开盖蜂鸣器会一直响,所以我们在开关盖函数中加入flag标志位,初始化flag为close。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值