基于arduino的超声波小风扇

基于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.若使用过程中出现代码没有出现错误,而且供电以及连接正常,但小电机无法工作的现象,可以试着更换电池盒或者小电机。
(可能代码与网上好多大神有类似及相同的地方,如需删除请联系我)
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
超声波避障是一种常见的避障方式,可以通过Arduino来实现。下面是一个基于Arduino超声波避障的简单实现步骤: 1. 准备材料:Arduino超声波传感器、驱动电机、电池、杜邦线等。 2. 将超声波传感器连接到Arduino板的数字引脚上,其中Trig接D7,Echo接D6。 3. 将驱动电机连接到Arduino板的PWM引脚上,其中ENA接D11,IN1接D9,IN2接D10。 4. 编写代码,实现超声波传感器测量距离并控制电机运动。具体代码实现可以参考以下示例代码: ``` #define TrigPin 7 #define EchoPin 6 #define ENA 11 #define IN1 9 #define IN2 10 void setup() { pinMode(TrigPin, OUTPUT); pinMode(EchoPin, INPUT); pinMode(ENA, OUTPUT); pinMode(IN1, OUTPUT); pinMode(IN2, OUTPUT); } void loop() { long distance; digitalWrite(TrigPin, LOW); delayMicroseconds(2); digitalWrite(TrigPin, HIGH); delayMicroseconds(10); digitalWrite(TrigPin, LOW); distance = pulseIn(EchoPin, HIGH) / 58.0; if (distance <= 10) { digitalWrite(IN1, LOW); digitalWrite(IN2, HIGH); analogWrite(ENA, 200); } else { digitalWrite(IN1, LOW); digitalWrite(IN2, LOW); analogWrite(ENA, 0); } delay(100); } ``` 以上代码中,通过pulseIn函数测量超声波传感器发出的信号返回的时间,并将其转换为距离值。当距离小于等于10cm时,电机开始运动;反之则停止运动。 5. 上传代码到Arduino板上,将电路连接好后,开启电源即可实现超声波避障功能。 需要注意的是,超声波传感器和电机的电源需要分别连接到不同的电源上,以免电机对超声波传感器的测量结果产生干扰。同时,在使用电机时需要注意其电流和电压等参数,以免损坏电路。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值