基于 Arduino 的温度+湿度传感器

虽然根本不懂电路,但经过查阅资料,总算是实现了。在这里做一个记录,以免忘记。

开发环境

硬件

  • Arduino uno r3 开发板,点我看Arduino各版本的比较,uno的第3个版本,也是目前市面上用于学习最多的板子,意大利原版的价格是20欧,淘宝山寨板的价格是20元左右。
  • 温度湿度传感器,型号DHT11,几块钱,淘宝上都有。
  • 杜邦线,1块钱10根(注意分公母,区别是插还是被插)。
  • 针排,1块钱很多根,结合杜邦线连接板子和传感器。
  • USB线,特制的,方口的一头接板子,另一头接电脑(供电和调试),板子一般都会送。

软件

文档

操作步骤

硬件

  1. Arduino 5V供电,直接用USB线接入电脑即可。红灯和绿灯会亮。
  2. DHT11有3个引脚,分别是VDD, DATA, GND,用3根杜邦线连接后,根据颜色连接Arduino的引脚,对应关系是VDD接5V,DATA接Digital口的任一个(2~13),GND接GND(地线)。
  3. 注意:要连接DHT11和板子,需要用到针排和杜邦线。将杜邦线扯开一点,因为板子上需要用到的3个引脚距离有点远,将要用到的3个针排一个个扯开,使劲儿将中间的黑塑料撸到中间,让两头露出的针一样多,以便两边都容易插的稳固一些。所以连接的方式是:板子的三个引脚–>针排<–>杜邦线<–>DHT11。
  4. 注意不要将VDD和GND接反了,以防板子或模块被烧。
  5. 接完的效果如图:
    这里写图片描述

程序

  1. 启动Arduino IDE
  2. 设置偏好,比如语言和项目保存路径,如图:这里写图片描述
  3. 检查驱动是否安装正确,在Tools –> Ports 下查看是否有串口,如如果下图这样:
<think>好的,我现在需要帮助用户找到基于Arduino的温湿度传感器控制直流电机风扇的代码示例。首先,我得回顾用户提供的引用内容,看看有没有相关的信息。用户给出的引用中有几个涉及到温湿度传感器和电机的控制,比如引用[1]提到了使用DHT11和直流电机控制遮阳器,引用[3]也有温湿度传感器和舵机的例子,而引用[2]和[4]则涉及步进电机和感应电机。不过用户的需求是直流电机,所以需要重点关注引用[1]和[3]中的相关内容。 接下来,我需要确认用户的需求细节。用户想要通过温湿度传感器来驱动直流电机风扇,也就是当温度或湿度超过某个阈值时,启动风扇。这可能类似于引用[1]中的遮阳器控制逻辑,但需要调整条件判断和电机控制部分。同时,用户可能需要代码示例,所以得结合已有的引用内容,整合出一个可行的示例。 首先,硬件连接方面,DHT11通常连接到数字引脚,直流电机可能需要通过晶体管或电机驱动模块(如L298N)连接到Arduino,因为直接连接可能会电流不足。引用[1]中使用了motorPin来控制电机,这里可能需要类似的设置,但需要确保使用正确的驱动电路。 然后,代码部分需要包括初始化传感器和电机引脚,读取温湿度数据,根据条件控制电机开关。例如,当温度超过28度或湿度超过70%时,启动电机。这里可以借鉴引用[1]中的逻辑结构,但去掉时间判断部分,专注于温湿度条件。 另外,引用[3]中的温度控制舵机的例子可能对条件判断有帮助,但舵机控制与直流电机不同,所以主要参考其读取温度和映射角度的部分,不过这里只需要开关控制,不需要角度映射。 需要注意的是,直流电机的控制通常使用数字引脚输出高或低电平,或者通过PWM调节速度。如果用户只需要开关控制,那么简单的digitalWrite即可。如果需要调速,可能需要analogWrite,但这需要电机驱动支持PWM。 在编写代码时,要确保包含必要的库,比如DHT库,并正确处理传感器数据。同时,延时和循环间隔的设置也很重要,避免过于频繁的读取导致系统不稳定。 可能还需要考虑异常处理,比如传感器读取失败的情况,但为了示例的简洁,可能暂时省略,但最好在注释中提醒用户在实际应用中加入这些考虑。 最后,根据用户提供的引用,特别是引用[1]中的结构,整合出一个完整的代码示例,并解释各部分的功能,确保用户能够理解如何修改和扩展。</think>以下是为您整理的Arduino湿度传感器控制直流电机风扇的代码实现方案: ```cpp #include <DHT.h> #define DHTPIN 2 // 传感器连接引脚 #define MOTOR_PIN 9 // 电机控制引脚 #define DHTTYPE DHT11 // 传感器型号 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); pinMode(MOTOR_PIN, OUTPUT); dht.begin(); } void loop() { delay(2000); // 传感器读取间隔 float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("传感器读取失败!"); return; } Serial.print("温度: "); Serial.print(t); Serial.print("°C"); Serial.print("\t湿度: "); Serial.print(h); Serial.println("%"); // 控制逻辑:温度>28°C或湿度>70%时启动风扇 if (t > 28 || h > 70) { digitalWrite(MOTOR_PIN, HIGH); Serial.println("风扇启动"); } else { digitalWrite(MOTOR_PIN, LOW); Serial.println("风扇关闭"); } } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值