電路原理圖如下:
51hei.png (81 KB, 下載次數: 47)
下載附件
2023-7-25 00:42 上傳
- //This is the program for Aruino UNO R3 in the project.
- #include <DHT11.h>
- #include <LiquidCrystal.h>
- DHT11 dht11(2);
- const int rs = 12, en = 11, d4 = 6, d5 = 7, d6 = 8, d7 = 9;
- LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
- bool Alert = false;
- bool Init = true;
- int InitTime = 7200;
- int BZ = 10;
- int LED_R = 3;
- int LED_G = 4;
- int LED_B = 5;
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- lcd.begin(16,2);
- pinMode(LED_R, OUTPUT);
- pinMode(LED_G, OUTPUT);
- pinMode(LED_B, OUTPUT);
- pinMode(BZ, OUTPUT);
- digitalWrite(LED_R, LOW);
- digitalWrite(LED_G, LOW);
- digitalWrite(LED_B, LOW);
- lcd.setCursor(0, 0);
- lcd.print("Initiating......");
- analogWrite(BZ, 0);
- }
- void loop() {
- // put your main code here, to run repeatedly:
- float humidity = dht11.readHumidity();
- while(Init)
- {
- lcd.setCursor(0, 1);
- if(InitTime == 0)
- {
- lcd.setCursor(0, 0);
- lcd.print(" ");
- lcd.setCursor(0, 1);
- lcd.print(" ");
- Init = false;
- }
- else
- {
- if(InitTime / 3600 < 10)
- {
- lcd.print("0");
- lcd.setCursor(1, 1);
- lcd.print(InitTime / 3600);
- }
- else
- {
- lcd.print(InitTime / 3600);
- }
- lcd.setCursor(2, 1);
- lcd.print("h");
- lcd.setCursor(3, 1);
- if(InitTime % 3600 / 60 < 10)
- {
- lcd.print("0");
- lcd.setCursor(4, 1);
- lcd.print(InitTime % 3600 / 60);
- }
- else
- {
- lcd.print(InitTime % 3600 / 60);
- }
- lcd.setCursor(5, 1);
- lcd.print("m");
- lcd.setCursor(6, 1);
- if(InitTime % 3600 % 60 < 10)
- {
- lcd.print("0");
- lcd.setCursor(7, 1);
- lcd.print(InitTime % 3600 % 60);
- }
- else
- {
- lcd.print(InitTime % 3600 % 60);
- }
- lcd.setCursor(8, 1);
- lcd.print("s");
- }
- delay(1000);
- InitTime -= 1;
- }
- if (humidity != -1) {
- Serial.print("Humidity: ");
- Serial.print(humidity);
- Serial.println(" %");
- } else {
- Serial.println("Error reding data.");
- }
- // Humidity is too high
- if (humidity >= 55) {
- digitalWrite(LED_R, LOW);
- digitalWrite(LED_G, LOW);
- digitalWrite(LED_B, HIGH);
- analogWrite(BZ, 1);
- }
- // Humidity is too low
- else if (humidity < 45) {
- digitalWrite(LED_R, HIGH);
- digitalWrite(LED_G, LOW);
- digitalWrite(LED_B, LOW);
- analogWrite(BZ, 1);
- }
- // Humidity is good
- else {
- digitalWrite(LED_R, LOW);
- digitalWrite(LED_G, HIGH);
- digitalWrite(LED_B, LOW);
- }
- lcd.setCursor(0, 0);
- lcd.print(humidity);
- delay(1000);
- }
復制代碼
|