用Arduino Mega2560实现温湿度预警功能,当温度高于低于50摄氏度时,串口调试小助手窗口显示相对应的温湿度值,OLED屏幕中间显示secunity!屏幕上方显示DH11Test;温湿度传感器检测到温度高于50摄氏度时,蜂鸣器报警,OLED屏幕中间显示Warning!,屏幕上方显示DH11 Test;
时间: 2023-07-16 13:15:56 浏览: 217
好的,这个功能需要用到Arduino Mega2560、DHT11温湿度传感器、蜂鸣器、OLED屏幕和串口调试小助手。
首先,需要下载并安装DHT库和Adafruit_SSD1306库。然后连接硬件:
- DHT11传感器VCC引脚接5V,GND引脚接GND,DATA引脚接数字引脚2。
- 蜂鸣器正极接数字引脚3,负极接GND。
- OLED屏幕SDA引脚接数字引脚20,SCL引脚接数字引脚21。
- 串口调试小助手连接到Arduino Mega2560的USB端口上。
接下来,就是编写代码。以下是实现温湿度预警功能的完整代码:
```
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET -1
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int buzzerPin = 3;
void setup() {
Serial.begin(9600);
dht.begin();
pinMode(buzzerPin, OUTPUT);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("DHT11 Test");
display.display();
}
void loop() {
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" *C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("DH11 Test");
display.setTextSize(1);
display.setCursor(0, 25);
display.print("Temperature: ");
display.print(temperature);
display.println(" *C");
display.print("Humidity: ");
display.print(humidity);
display.println(" %");
display.display();
if (temperature > 50) {
digitalWrite(buzzerPin, HIGH);
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("DH11 Test");
display.setTextSize(2);
display.setCursor(20, 25);
display.println("Warning!");
display.display();
} else {
digitalWrite(buzzerPin, LOW);
}
}
```
代码中,首先引入需要用到的库。然后定义DHT11传感器的引脚和类型,创建DHT对象,并定义OLED屏幕和蜂鸣器的引脚。
在setup()函数中,初始化串口、DHT11传感器、OLED屏幕和蜂鸣器。在OLED屏幕上显示DH11 Test。
在loop()函数中,读取温湿度传感器的数值,并判断是否读取成功。将温湿度值显示在串口调试小助手窗口和OLED屏幕上。如果温度高于50摄氏度,蜂鸣器报警,OLED屏幕显示Warning!。
希望这个代码能够帮助到你实现温湿度预警功能。
阅读全文