让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
实验设备:
温湿度传感器,照度传感器,LED灯,OLED屏幕,Arduino开发板,USB数据线。
代码实现:
首先,导入必要的库:DHT.h、Wire.h、Adafruit_SSD1306.h。
定义DHT类型和OLED类型的对象,并定义LED的IO口。
在setup函数中初始化各个设备,并打开串口。同时,屏幕输出“Smart Home System”。
在loop函数中,通过温湿度传感器和照度传感器获取温度、湿度和照度的数值,并将这些值存入变量中。
将温度、湿度和照度的值打印在串口监视器中,并在OLED屏幕的对应位置显示出来。
通过读取串口监视器中的信息,控制LED灯的开灭,并在OLED屏幕上显示对应的开关状态。
示例代码:
#include
#include
#include
#define DHT_Pin A0 // 温湿度传感器的引脚编号
#define DHT_Type DHT11 // 温湿度传感器的型号
#define Luminance_Pin A3 // 照度传感器的引脚编号
#define LED_Pin 3 // LED的引脚编号
#define SCREEN_Width 128
#define SCREEN_Height 64
Adafruit_SSD1306 oled(SCREEN_Width, SCREEN_Height, &Wire, -1); // OLED屏幕的初始化
DHT dht(DHT_Pin, DHT_Type); // 温湿度传感器的初始化
void setup() {
pinMode(LED_Pin, OUTPUT); // LED的IO口设置为输出
Serial.begin(9600); // 打开串口,并设置波特率为9600
if (!dht.begin()) {
Serial.println("Failed to initialize DHT sensor!");
while (1);
}
if (!oled.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("Failed to initialize OLED!");
while (1);
}
oled.clearDisplay();
oled.setTextSize(2);
oled.setTextColor(WHITE);
oled.setCursor(20, 20);
oled.println("Smart Home System");
oled.display();
}
void loop() {
float temperature = dht.readTemperature(); // 获取温度数值
float humidity = dht.readHumidity(); // 获取湿度数值
int luminance = analogRead(Luminance_Pin); // 获取照度数值
Serial.print("Temperature = ");
Serial.print(temperature);
Serial.print(" *C, Humidity = ");
Serial.print(humidity);
Serial.print(" %, Luminance = ");
Serial.println(luminance);
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 0);
oled.print("Temperature: ");
oled.println(temperature);
oled.setCursor(0, 16);
oled.print("Humidity: ");
oled.println(humidity);
oled.setCursor(0, 32);
oled.print("Luminance: ");
oled.println(luminance);
oled.display();
if (Serial.available() > 0) {
char command = Serial.read();
if (command == '1') {
digitalWrite(LED_Pin, HIGH); // 开灯
oled.setCursor(SCREEN_Width - 20, 0);
oled.println("OPEN");
} else if (command == '0') {
digitalWrite(LED_Pin, LOW); // 关灯
oled.setCursor(SCREEN_Width - 20, 0);
oled.println("CLOSE");
}
}
}