基于arduino的超声波小风扇常见BUG及解决方法
(文章目录)
前言
例如:随着嵌入式的不断发展,嵌入式这门技术也越来越重要,很多人都开启了学习嵌入式,本文就介绍了一个基于arduino的超声波风扇小项目。
这个代码很简单,我看网上也有很多人出教程,我就简单的说一下在我制作时遇到的问题以及常见的bug的解决方法把。
一、实现的功能
根据距离的远近,通过超声波模块的反馈,输出不同的电平,从而控制风扇的转动并且控制转速。
二、要用到的模块
1.esp8266模块
##2.超声波模块
3.L9110驱动模块
4.还需要使用一个小电机,电池盒,若干杜邦线
5.成品连接
代码如下:
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);
}
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;
//如果距离小于30的时候,就转动,否则就不转
while(dis--){ //dis = 5 4 3 2 1 dis = 20 19 18 17 .....0
digitalWrite(D5, LOW);
digitalWrite(D6, HIGH);
delayMicroseconds(260);
}
}
---
# 总结
这个代码很简单,但是无论是接线还是还是代码编译都很容易遇见bug,下面我就列举了一些常见的问题
1.尽量使用CH340G接口,出现安装失败的可以先点击卸载再安装试试。
2.接线时尽量不要虚接,各个模块尽量保持较远距离,避免产生信号干扰。
3.使用Arduino编译代码时,没有出现编译错误但是无法编译上传成功的可以尝试拔插usb串口,或关闭Arduino程序重新打开代码进行编译上传。
4.使用L9110时一定注意接线顺序,不然容易造成模块损坏。
5.若使用过程中出现代码没有出现错误,而且供电以及连接正常,但小电机无法工作的现象,可以试着更换电池盒或者小电机。
(可能代码与网上好多大神有类似及相同的地方,如需删除请联系我)