感应垃圾桶项目设计

 需求:做一个感应垃圾桶,10cm以内开盖、按下键一开盖、震动开盖,并在开盖时发出声音

需求一:10cm以内开盖

做到10cm以内开盖,我们这里使用超声波测距传感器(超声波测距传感器认知_dxdlnu的博客-CSDN博客),不清楚超声波原理的可以看上面链接。首先我们需要让Trig发送一个10us的高电平唤醒超声波测距传感器,我们给它封装一个函数。

 唤醒只是第一步,然后我们要实现测距功能,距离=时间*速度(340m/s)。时间怎么算,根据Echo口发送波到接收波的时间(也就是高电平持续时间),因为需要算时间,我们设置一个定时器1。

 然后根据Echo高电平时间实现如下代码。

 get_distance函数写完,我们测距的功能就已经实现了,接下来,我们要分情况在main函数中判断距离,如果距离<10,开盖。开盖、关盖的代码如下:

 我们是通过舵机实现物理上的开盖的,所以舵机的代码实现一并发出:

扫描二维码关注公众号,回复: 15945483 查看本文章

 舵机相关知识:初识PWM_dxdlnu的博客-CSDN博客

这里我们使用到了中断寄存器,为了保证时刻我们靠近超声波测距传感器时垃圾桶都会立马开盖,我们用它统计爆表次数,来控制舵机的角度。

使用舵机前要设置定时器,0.5ms爆表一次,并打开中断。

 目前阶段的主函数如下:

 别忘了初始化舵机角度为0度:

需求二:按下键一开盖

 

 简单的两个操作。

需求三:震动开盖

这里用到我们之前说过的震动传感器(​​​​​​​震动传感器使用_dxdlnu的博客-CSDN博客),根据单片机原理图:

 由于震动是一瞬间的事,可能与其他程序发生冲突,我们这时候就需要,震动的时候中断其他操作,所以我们加上外部中断

 

 并稍微修改主函数内容

 需求四:添加滴滴声

无论使用哪种方式开盖,我们都需要得到一个反馈,这个反馈就是通过蜂鸣器发出滴滴声。

猜你喜欢

转载自blog.csdn.net/weixin_62599865/article/details/129904633
今日推荐