Arduino二十行完成距离感应风扇

用Arduino写小项目,相比于stm32来说,确确实实是方便了许多,非常适合新手小白来入坑嵌入式。


前言

这个项目虽然已经是老掉牙到不能再老掉牙了,但是我还是选择这个项目作为我的第一篇博客。为什么呢,答案当然是因为简单,因为疫情等等原因自己已经蛮久没做过小项目了,选这个项目纯粹拿来练练手,找找自信。


一、实现的功能

示例:根据不同的靠近距离,控制风扇是否转动,可以设计根据距离不同,风扇转速不同。

二、硬件模块

WemosD1 -- 核心控制单片机
超声波模块 -- 测量距离
L9110 模块 -- 电机控制器
电机风扇模块

三、模块原理

1.超声波模块

超声波测距模块是用来测量距离的一种产品,通过发送和收超声波,利用时间差和声音传播速度,
计算出模块到前方障碍物的距离

Trig 一个 10us TTL 电平,模块内部就会发出信号,信号发出后,模块把 ECHO 从低电平切换成
高电平,当模块收到返回波,模块把 ECHO 从高电平切回到低电平,所以 ECHO 维持高电平的时间
就是波在空气中的传播速度
距离 = 速度 * 时间
速度 =340m/s
时序图如下:

所以我们只要读ECHO高电平的持续时间就知道超声波传播了多久,然后根据时间算出距离。

四、具体代码

1.初始化

代码如下(示例):

void setup() {
// put your setup code here, to run once:
// 这个函数只会在上电后执行一次
pinMode(D5, OUTPUT);
pinMode(D6, OUTPUT);//把D5 D6引脚配置成输出引脚,为了向电机控制器输出信号
pinMode(D8, OUTPUT);//把D8(Trig)引脚配置成输出引脚,为了向超声波发送10us高电平信号
pinMode(D7, INPUT);// 把D7(Echo)引脚配置成输入引脚,检测Echo引脚高电平持续的时间=波在
空气中的时间
Serial.begin(9600);  //开启串口
}

2.循环

代码如下(示例):

void loop() {
// put your main code here, to run repeatedly:
//把主要控制逻辑的代码放在这里,重复运行
unsigned long time;
unsigned long dis;
//时刻让风扇处于停止状态
digitalWrite(D5, HIGH);
digitalWrite(D6, HIGH);
// 1、10us的脉冲
digitalWrite(D8, LOW);
digitalWrite(D8, HIGH);
delayMicroseconds(10);
digitalWrite(D8, LOW);
//2. 检测D7echo高电平持续时间
time = pulseIn(D7,HIGH); //us
// 3.计算距离 2s = time * 340m/s
dis = time * 0.017;
Serial.print(dis);
Serial.println("cm"); //32cm
if(dis > 80) return;
//如果距离小于80的时候,就转动,否则就不转
while(dis--){ //改变占空比
digitalWrite(D5, LOW);
digitalWrite(D6, HIGH);
delayMicroseconds(200);
}
}

五、遇到的问题及解决过程

之前用过stm32所以有安装过CH340,这次第一次用Arduino说是要用CH340G,我一安装和我说安装失败,再次安装依旧失败,然后我点了先卸载后安装这次成功了,但是设备管理器还是看不见端口,搞了半天,最后换了个数据线,问题解决,告诉我们线一定得对不能是简单的电源线。

关于硬件连接,我一开始直接用铜丝搭在直流电机上,这种做法接触不良,最好有固定,别只是搭在上面。

一开始我想直接把功放模块的vcc接在单片机上来着,不应该这么做,因为功耗大会影响单片机稳定。但是超声波测距模块可以直接连,因为功耗小。

关于代码烧录,烧不进去重新打开软件就行了。


总结


虽然项目硬件简单且代码很少哈,但是还是能学到些东西的。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值