用Arduino实现DHT11自动控制L9110电机风扇
本项目是通过Arduino软件来编写程序实现硬件的控制,通过设置阈值来确定温度控制风扇的打开与关闭。
一、准备
1.Arduino板子
2.DT11温湿度传感器
3.L9110电机驱动风扇模块
4.杜邦线
5.USB数据线
二.硬件图片
.在这里准备Arduinoleixing的板子,建议使用Arduino nano或者UNO板子,我在这里使用的是Arduino UNO R3板子
L9110电机驱动风扇模块是可以应用到灭火当中,我在这里是作为风扇来使用的
DHT11温湿度传感器
三、硬件连线
**DHT11温湿度传感器
I/O ---------- D2
VCC ---------- 3.3V
GND --------- GND
****L9110电机驱动风扇模块连接图
IA ---------- D8
IB ---------- D9
VCC --------- 3.3V
GND --------- GND
四、程序
#include "DHT.h" //加载DHT11库
#define DHTPIN 2 // 定义DHT11的数据引脚
#define DHTTYPE DHT11 // DHT 11
const int IA = 8; // pin 8 connected to pin IA
const int IB = 9; // pin 9 connected to pin IB
byte speed = 255; // L9110转速设为255
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
//初始化
Serial.begin(9600); //设置波特率为9600
pinMode(IA, OUTPUT); // 定义IA脚输出
pinMode(IB, OUTPUT); // 定义IB脚输出
dht.begin();
}
void loop()
{
delay(2000);
float h = dht.readHumidity();
// Read temperature as Celsius (the default)
float t = dht.readTemperature();
Serial.print(F("Humidity: "));
Serial.print(h);
Serial.print(F("% Temperature: "));
Serial.print(t);
Serial.println(F("°C "));
if(t>=31) //设置温度的上限阈值为31℃,高于31℃风扇打开
{
int offsetX=525; //当控制杆位于中位时的模拟输入值,不同的控制杆可能有不同的偏差。
int x =analogRead(A0);
bool isFoward = x <= offsetX;
speed = x==offsetX ? 0: (isFoward ? (255- map(x,0,offsetX,0,255)): map(x,0,1024,0,255));
Serial.println(speed);
isFoward ? forward() : backward();
}
if(t<31) //设置温度的阈值为31℃,低于31℃风扇关闭
{
int offsetX=0; //当控制杆位于中位时的模拟输入值,不同的控制杆可能有不同的偏差。
int x =0;
bool isFoward = x <= offsetX;
speed = x==offsetX ? 0: (isFoward ? (0- map(x,0,offsetX,0,0)): map(x,0,1024,0,0));
Serial.println(speed);
isFoward ? forward() : backward();
}
}
void backward()
{
analogWrite(IA, 0);
analogWrite(IB, speed);
}
void forward()
{
analogWrite(IA, speed);
analogWrite(IB, 0);
}
链接为DHT11的Arduino库没使用的话请自取
链接:https://pan.baidu.com/s/1RNyOjeNndeN5xYaPjL1AVg
提取码:qu4d
以上为整个Arduino中实现硬件的程序,通过Arduino程序实现DHT11自动打开L9110驱动风扇,希望对您多多少少有些帮助!*
来源:oschina
链接:https://my.oschina.net/u/4305019/blog/4501687