智慧生活第四組 arduino程式碼
智慧生活程式碼unknown
c_cpp
3 years ago
4.4 kB
4
Indexable
//***lcd***// #include<Wire.h> #include<LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); //***DHT***// #include <DHT.h> #define DHTPIN 9 #define DHTTYPE DHT11 DHT dht(DHTPIN,DHTTYPE); //***control***// int ledpin = 13; int buttonpin = 2; int buttonstate = 0; int klick = 0; int motor = 8; //***Declare UltraSonic&&Buzzer***// int trigPin = 11; // 超音波感測器 Trig腳接 Arduino pin 11 int echoPin = 12; //超音波感測器 Echo 腳接 Arduino pin 12 int speakerpin = 7; //蜂鳴器 + 腳接 Arduino pin 7 float duration, cm ; //宣告計算距離時,需要用到的兩個實數 //***declare LDR***// #define LDR 0 //A0腳位 int readLDR = 0; //用以儲存光敏電阻之數值 //////////////////////以上為初始化區域////////////////// void setup() { Serial.begin(9600); dht.begin(); //初始化DHT pinMode(motor,OUTPUT); //馬達為輸出訊號 pinMode(buttonpin,INPUT_PULLUP); //設定按鈕為上拉電阻 pinMode(ledpin,OUTPUT); //led輸出 pinMode(trigPin, OUTPUT); //Arduino 對外啟動距離感測器Trig腳,射出超音波 pinMode(echoPin, INPUT); //超音波被障礙物反射後,Arduino讀取感測器Echo腳的時間差 pinMode(speakerpin, OUTPUT); //Arduino對蜂鳴器送出電壓,使其鳴叫 lcd.init(); lcd.begin(16, 2); // 初始化LCD lcd.setBacklight(255);//背光設置為255 lcd.clear(); lcd.setCursor(0, 0); //設定游標位置 (字,行) lcd.print("*Welcome to "); //lcd顯示:“歡迎來到” lcd.setCursor(0, 1); lcd.print("Sweet H0me!!"); //lcd顯示:“溫暖的家!!” } void loop() { //****************************風扇=可變電阻+直流馬達************************// int vr = analogRead(2); //讀取可變電阻之類比訊號 if(vr > 512){ //如果訊號大於512,則啟動直流馬達 digitalWrite(motor,HIGH); } else { digitalWrite(motor,LOW); } delay(390); //**************************************溫濕度************************// float h = dht.readHumidity(); //讀取濕度 float t = dht.readTemperature(); //讀取溫度 //************************************防盜器=超音波加光敏加蜂鳴器*********************************// 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 (20< cm&&cm <1500){ // 當超音波偵測到窗戶開啟,則蜂鳴器會斷斷續續的叫,每次叫0.1秒 digitalWrite(speakerpin, HIGH); delay (100); digitalWrite(speakerpin, LOW); delay (100); } //***************************光敏*********************************// readLDR = analogRead(LDR); Serial.print(readLDR); //***************************按鈕切換lcd顯示**********************// buttonstate = digitalRead(buttonpin); //讀取按鈕電位 Serial.print(buttonstate); //***當按鈕未被按下***// if(buttonstate ==LOW){ delay(100); digitalWrite(ledpin,HIGH); delay(100); //***display***// lcd.clear(); lcd.setCursor(0,0); lcd.print("humid:"); lcd.setCursor(7,0); lcd.print(h); lcd.print(14,0); lcd.print("%"); lcd.setCursor(0,1); lcd.print("Temp:"); //Temp = abbrevitation for Temperature lcd.setCursor(7,1); lcd.print(t); lcd.setCursor(13, 1); lcd.print((char)223); //用特殊字元顯示符號的"度" lcd.print(14,1); lcd.print("c"); delay(1000); } //***當按鈕已被按下***// if(buttonstate == HIGH){ delay(100); //to prevent from debouncing, we set a time interval of 100 millisecond as an precautionary measure. //***Display :distance +illuminance***// lcd.clear(); lcd.setCursor(0,0); lcd.print("dis:"); //超音波所測得之距離distance lcd.setCursor(7,0); lcd.print(cm); lcd.print(14,0); lcd.print("cm"); lcd.setCursor(0,1); lcd.print("E:"); //照度 lcd.setCursor(5,1); lcd.print(readLDR); // 光敏電阻所讀取之數值 lcd.print(13,1); lcd.print("lux"); //lux為每單位面積之光通量的SI單位 delay(1000); } }
Editor is loading...