1101 智慧生活第三組 期末專題
主題:arduino冰箱 完成日期:20220121 作者:張瑞顯ida
plain_text
3 years ago
3.9 kB
9
Indexable
//光敏電阻顯示 const int P_resistor = A0;//讀取光敏電阻腳位 int light=0;//光敏電阻數值 //LED const int LED_Rpin = 3;//燈泡腳位 //溫溼度顯示面板 #include <LiquidCrystal_PCF8574.h> #include "DHT.h" #define DHTPIN 9 //腳接pin 9 #define DHTTYPE DHT11 LiquidCrystal_PCF8574 lcd(0x27); // 設定i2c位址,一般情況就是0x27和0x3F兩種 DHT dht(DHTPIN, DHTTYPE); //蜂鳴器 int speakerpin = 7; //腳接pin 7 //切換LCD顯示面板 int inPIN = 8; //腳接pin 8 int val = 0; //超音波感應器 int trigPin = 11; //超音波感測器 Trig腳接 Arduino pin 11 int echoPin = 12; //超音波感測器 Trig腳接 Arduino pin 11 float duration, cm ; //宣告計算距離時,需要用到的兩個實數 //////以上為初始化區域////// void setup() { //將溫溼度設為input pinMode(P_resistor, INPUT); //將按鈕設為input pinMode(inPIN, INPUT_PULLUP); //將LED燈泡設為output pinMode(LED_Rpin, OUTPUT); //將蜂鳴器設為output pinMode(speakerpin, OUTPUT); //Arduino對蜂鳴器送出電壓,使其鳴叫 //超音波感應器 pinMode(trigPin, OUTPUT); //Arduino 對外啟動距離感測器Trig腳,射出超音波 pinMode(echoPin, INPUT); //超音波被障礙物反射後,Arduino讀取感測器Echo腳的時間差 //LCD面板初始化 Serial.begin(9600); Serial.println("DHTxx test!"); dht.begin(); //初始化DHT lcd.begin(16, 2); // 初始化LCD lcd.setBacklight(255); lcd.clear(); lcd.setCursor(0, 0); //設定游標位置 (字,行) lcd.print("Open your"); lcd.setCursor(0, 1); //設定游標位置 (字,行) lcd.print("Refrigerator~"); } void loop() { light=analogRead(P_resistor); //將讀取到的數值存入light delay(50); Serial.println(light); //在Serial port顯示light數值 //將按鈕設為讀取值 Serial.print(val); val = digitalRead(inPIN); //取得溫度濕度 float h = dht.readHumidity(); //取得濕度 float t = dht.readTemperature(); //取得溫度C Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C "); //取得距離數值 digitalWrite(trigPin, LOW); delayMicroseconds(5); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); pinMode(echoPin, INPUT); duration = pulseIn(echoPin, HIGH); //來回時間長 cm = (duration/2) / 29.1; //計算距離 Serial.println(cm); if(val==LOW){ //當按鈕鬆開 delay(500); lcd.clear(); lcd.setCursor(0, 0); //設定游標位置 (字,行) lcd.print("RH :"); //Relative Humidity 相對濕度簡寫 lcd.setCursor(7, 0); lcd.print(h); lcd.setCursor(14, 0); lcd.print("%"); lcd.setCursor(0, 1); //設定游標位置 (字,行) lcd.print("Temp:"); //Temperature lcd.setCursor(7, 1); lcd.print(t); lcd.setCursor(13, 1); lcd.print((char)223); //用特殊字元顯示符號的"度" lcd.setCursor(14, 1); lcd.print("C"); delay(500); } if(val==HIGH){//當按鈕按住 delay(500); lcd.clear(); lcd.setCursor(0, 0); //設定游標位置 (字,行) lcd.print("light:"); //光敏度 lcd.setCursor(7, 0); lcd.print(light); lcd.setCursor(12,0); lcd.print("lux"); //lux為每單位面積之光通量的SI單位 lcd.setCursor(0,1); lcd.print("dis:"); //超音波所測得之距離distance lcd.setCursor(7,1); lcd.print(cm); lcd.setCursor(14,1); lcd.print("cm"); delay(500); } if(light>100){ //當光敏度值大於100 燈泡發亮 蜂鳴器過5秒後發出聲音 digitalWrite(LED_Rpin, HIGH); delay(5000); digitalWrite(speakerpin, HIGH); } if(light<40){ //當光敏度值小於40 燈泡不亮 蜂鳴器關閉 digitalWrite(LED_Rpin, LOW); digitalWrite(speakerpin, LOW); } }
Editor is loading...