Arduino 超声波控制风扇(一)

超声波模块使用

使用材料:

  1. Arduino UNO*1
  2. 超声波模块*1
  3. 面包板*1
  4. 杜邦线若干
原理图:

超声波模块原理图

实物图:

超声波模块实物图

代码:
int Trig = A4; 
int Echo = A5;  

int Distance = 0;

void setup()
{
  Serial.begin(9600);      // 初始化串口
  pinMode(Echo, INPUT);    // 定义超声波输入脚
  pinMode(Trig, OUTPUT);   // 定义超声波输出脚
}


void Distance_test()   // 量出前方距离 
{
  digitalWrite(Trig, LOW);    // 给触发脚低电平2μs
  delayMicroseconds(2);
  digitalWrite(Trig, HIGH);   // 给触发脚高电平10μs
  delayMicroseconds(10);
  digitalWrite(Trig, LOW);    // 持续给触发脚低电
  float Fdistance = pulseIn(Echo, HIGH);  // 读取高电平时间(单位:微秒)
  Fdistance= Fdistance/58;       //为什么除以58等于厘米,  Y米=(X秒*344)/2
  // X秒=( 2*Y米)/344 ==》X秒=0.0058*Y米 ==》厘米=微秒/58
  Distance = Fdistance;
}  

void loop()
{
  Distance_test();
  if((2<Distance)&(Distance<400))//超声波测距范围2cm到400cm
  {
    Serial.print("Distance:");
    Serial.print(Distance);
    Serial.println("cm");
  }
  else
  {
    Serial.println("The distance is beyond!");
  }
  delay(250);
}

PS:可能有一些代码与大神,如果侵犯,请联系我。
下一章(Arduino 超声波控制风扇速度(二))

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以考虑使用Arduino的GPIO口来控制红外遥控器的信号输出,以实现遥控风扇的转速。同时使用PWM输出控制电位器,以实现手动调节风扇的转速。超声波测距可以通过对接到Arduino超声波传感器模块来实现,当距离小于某一阈值时,关闭风扇。下面是一个简单的示例代码: ``` #include <IRremote.h> int fan_speed = 0; int trigPin = 4; // 超声波传感器的 trig 引脚 int echoPin = 5; // 超声波传感器的 echo 引脚 IRrecv irrecv(8); // 红外遥控器接收器的引脚 decode_results results; void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); irrecv.enableIRIn(); // 初始化红外接收器 } void loop() { // 红外遥控器控制风扇转速 if (irrecv.decode(&results)) { switch (results.value) { case 0xFF30CF: // 数字键1 fan_speed = 25; break; case 0xFF18E7: // 数字键2 fan_speed = 50; break; case 0xFF7A85: // 数字键3 fan_speed = 75; break; case 0xFF10EF: // 数字键4 fan_speed = 100; break; } irrecv.resume(); // 接收下一个红外信号 } // 电位器控制风扇转速 int pot_value = analogRead(A0); // 读取 A0 引脚的电位器值 fan_speed = map(pot_value, 0, 1023, 0, 100); // 超声波测距关闭风扇 long duration, distance; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration / 58.2; // 将时间转换为距离,单位为厘米 if (distance < 20) { // 当距离小于20cm时关闭风扇 fan_speed = 0; } // 控制风扇转速 int pwm_value = map(fan_speed, 0, 100, 0, 255); analogWrite(9, pwm_value); // 将 PWM 输出连接到风扇控制器的输入 } ``` 注意:上述代码仅供参考,具体实现方式可能需要根据硬件配置做出修改。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值