- UID
- 373967
- 帖子
- 9013
- 主題
- 2609
- 精華
- 0
- 積分
- 1004
- 楓幣
- 0
- 威望
- 981
- 存款
- 35926
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 460 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-12-23
|
製作Arduino智能溫室系統需要以下零件:
Arduino UNO 控制板 x 1
DHT11 溫度濕度傳感器 x 1
BH1750 光照度傳感器 x 1
5V 電風扇 x 1
5V 水泵 x 1
5V 電磁閥 x 1
5V LED燈 x 1
杜邦線若干
面包板 x 1
以下是相關的程式碼,你可以根據自己的需求進行修改:
#include <DHT.h>
#include <Wire.h>
#include <BH1750.h>
#define DHTPIN 2 // DHT11傳感器的引腳接到Arduino的2號引腳
#define DHTTYPE DHT11 // 傳感器的類型
DHT dht(DHTPIN, DHTTYPE);
BH1750 lightMeter;
byte buff[2];
int fanPin = 3; // 風扇控制引腳
int pumpPin = 4; // 水泵控制引腳
int valvePin = 5; // 電磁閥控制引腳
int ledPin = 6; // LED燈控制引腳
void setup() {
Serial.begin(9600);
dht.begin();
lightMeter.begin();
pinMode(fanPin, OUTPUT);
pinMode(pumpPin, OUTPUT);
pinMode(valvePin, OUTPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
// 讀取溫度和濕度
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// 讀取光照度
uint16_t lux = lightMeter.readLightLevel();
// 判斷溫度是否過高
if (temperature > 30) {
digitalWrite(fanPin, HIGH); // 打開風扇
} else {
digitalWrite(fanPin, LOW); // 關閉風扇
}
// 判斷濕度是否不足
if (humidity < 60) {
digitalWrite(pumpPin, HIGH); // 打開水泵
} else {
digitalWrite(pumpPin, LOW); // 關閉水泵
}
// 判斷光照度是否不足
if (lux < 500) {
digitalWrite(ledPin, HIGH); // 打開LED燈
} else {
digitalWrite(ledPin, LOW); // 關閉LED燈
}
// 判斷溫度和濕度是否適宜
if (temperature > 18 && temperature < 28 && humidity > 50 && humidity < 80) {
digitalWrite(valvePin, HIGH); // 打開電磁閥
} else {
digitalWrite(valvePin, LOW); // 關閉電磁閥
}
// 在序列監視器上顯示溫度、濕度和光照度
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.print(" %, Light: ");
Serial.print(lux);
Serial.println(" lux");
// 延遲1秒
delay(1000);
} |
|