Arduino - 光敏電阻 + 溫溼度感測器 + LCD + LED(photocell + temperature and humidity sensor + LCD +LED)


目的


將光敏電阻、溫溼度感測器的值顯示於LCD(並讓LCD捲動顯示)
且當溫度感測器到達一個27度C,使一個LED閃爍(未達門檻不閃爍)。


成果:


Arduino Code:

#include < Wire.h > #include < SPI.h > #include < dht11.h > // DHT11 感測器程式庫
#include < LiquidCrystal.h >

const byte LED = 8;
LiquidCrystal lcd(12, 11, 6, 5, 4, 3);
dht11 DHT11; // 宣告溫濕度檢測器程式物件
const byte dataPin = 2;
int LDR = 0; //光敏電阻輸入,接在anallog pin 0
float readLDR = 0; //光敏電阻感應到的光源產生的電阻值

void setup() {
    pinMode(LED, OUTPUT);
    lcd.begin(16, 2); // 初始化 LCD
    lcd.setCursor(2, 0);
    lcd.print("Temp");
    lcd.setCursor(0, 1);
    lcd.print("Hu");
    Serial.begin(9600);
}
void loop() {
    lcd.setCursor(0, 1);
    readLDR = analogRead(LDR); //存取光敏電阻的電阻值
    int chk = DHT11.read(dataPin);

    if (chk == 0) {
        lcd.setCursor(7, 0); // 顯示溫度
        lcd.print((float) DHT11.temperature, 2);
        Serial.println(DHT11.temperature);
        lcd.print((char) 0xDF);
        lcd.print("C");
        if (DHT11.temperature > 27) {
            digitalWrite(LED, HIGH);
            delay(500);
            digitalWrite(LED, LOW);
        }

        lcd.setCursor(3, 1); // 顯示濕度
        Serial.println(DHT11.humidity);
        lcd.print((float) DHT11.humidity, 2);
        lcd.print("%");

        lcd.setCursor(10, 1);
        float test = (readLDR * 100) / 1024; //  顯示光敏
        lcd.print(test);
        lcd.print("%");
        Serial.println(readLDR);
    }
    delay(1000);
}

留言