基于arduino的超声波小风扇

基于arduino的超声波小风扇常见BUG及解决方法
(文章目录)

前言

例如:随着嵌入式的不断发展,嵌入式这门技术也越来越重要,很多人都开启了学习嵌入式,本文就介绍了一个基于arduino的超声波风扇小项目。
这个代码很简单,我看网上也有很多人出教程,我就简单的说一下在我制作时遇到的问题以及常见的bug的解决方法把。


一、实现的功能

根据距离的远近,通过超声波模块的反馈,输出不同的电平,从而控制风扇的转动并且控制转速。

二、要用到的模块

1.esp8266模块

基于arduino的超声波小风扇_第1张图片
##2.超声波模块
基于arduino的超声波小风扇_第2张图片
3.L9110驱动模块
基于arduino的超声波小风扇_第3张图片
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.若使用过程中出现代码没有出现错误,而且供电以及连接正常,但小电机无法工作的现象,可以试着更换电池盒或者小电机。
(可能代码与网上好多大神有类似及相同的地方,如需删除请联系我)

你可能感兴趣的:(单片机,stm32,嵌入式硬件)