Robofun 機器人論壇
標題: 請教各位前輩~ DHT11 光敏 [打印本頁]
作者: 小牙 時間: 2014-11-21 21:58
標題: 請教各位前輩~ DHT11 光敏
本帖最後由 小牙 於 2014-11-21 22:03 編輯
各位前輩您好,最近小弟剛接觸ARDUINO UNO想做一個隨著亮度變暗LED較便亮,還有當霧氣產生時LED也會同時變亮,因為找不到可以量測霧氣感測器,所以想說可不可以用露點計算知道相對濕度以及實際氣溫時,露點可以透過以下公式求得近似值:
當中的則是:
溫度 和露點 單位為攝氏、相對濕度 為百分比, 則代表自然對數。常數 和分別是:
℃此公式是基於 Magnus-Tetens 近似法( Magnus-Tetens Approximation),當中把飽和水氣壓視為溫度的函數。[2]此方法僅在以下範圍時有效:
0℃ < < 60℃1% < < 100%0℃ < < 50℃簡易近似法[編輯]當知道乾球溫度、而相對濕度大於50%時,露點可以用下列的公式求得,其誤差值僅為 ±1℃。
或者
但就不知道如何用。或者限定到某種上下線也可以
下面是我打的程式,我把光敏跟DHT11程式做結合但還是沒辦法同步沒辦法說溼度和溫度到某種程度LED就會變亮
int lightLevel;float humidity;
float temperature;
#include "DHT.h"
#define DHTPIN 8
#define DHTTYPE DHT11
#define LED_PIN 12
#define SERIAL_BAUDRATE 115200DHT dht(DHTPIN, DHTTYPE);
void setup(void){ dht.begin();
Serial.begin(115200) ;
Serial.begin(SERIAL_BAUDRATE);}
void loop(void)
{ float humidity = dht.readHumidity();
float temperature = dht.readTemperature()
int lightLevel = analogRead(A0);
Serial.print("Temperature: ");
Serial.println(temperature);
Serial.print("Humidity: ");
Serial.println(humidity);
Serial.print("Light level: ");
Serial.println(lightLevel);
Serial.println("");
delay(2000);
int r = analogRead(lightLevel);
int b = map(r, 0, 1023, 0, 255);
// 環境光線越弱強,LED就越亮
analogWrite(LED_PIN, b);
}
懇請各位前輩能幫忙,真的很想完成第一項自己所做的
作者: ates1687 時間: 2014-11-22 01:41
有個問題,你是要光敏跟溫濕度感測同時在一顆 pin_LED=12 上面嗎?
作者: 小牙 時間: 2014-11-24 22:40
本帖最後由 小牙 於 2014-11-24 23:12 編輯
回復 2# ates1687
是的,只用一顆有辦法嗎,試了很久了還是想不出問題出在哪,請大大幫幫忙TT
作者: ates1687 時間: 2014-11-25 01:41
我做個整理↓
光敏:亮度越暗,LED越亮
反之:亮度越亮,LED越暗
還有當霧氣產生時LED也會同時變亮
變亮是指恆亮,還是像光敏電阻那樣
隨著值亮暗變化?
作者: 小牙 時間: 2014-11-27 23:16
本帖最後由 小牙 於 2014-11-27 23:19 編輯
回復 4# ates1687
我做個整理↓
光敏:亮度越暗,LED越亮 對
反之:亮度越亮,LED越暗 對
還有當霧氣產生時LED也會同時變亮
變亮是指恆亮,還是像光敏電阻那樣
隨著值亮暗變化? 有霧氣就變最亮
感謝你關住我的問題,再麻煩你摟
作者: ates1687 時間: 2014-11-28 00:03
本帖最後由 ates1687 於 2014-11-28 00:25 編輯
以下是我的大概程式結構圖
建議你把最暗跟最亮的值跟濕度跟LED亮度拆成5等份,進行交叉判斷
只是大概怎麼寫而已
光敏 level(光小)1 2 3 4 5(光亮) = 0, 205, 410, 615, 820, 1025
濕度 level(乾燥)1 2 3 4 5(最濕) = 0, 20, 40, 60, 80, 100
LED level(最暗)1 2 3 4 5(最亮) = 0, 200, 400, 600, 800, 1000(1K)
以此類推
光亮度跟濕度交叉組合排列,決定LED的亮度就是這樣
如果是大型程式碼,可能就要個逐擊破(演算法)簡化程式碼這樣!
那你真正要寫的概念是
如果(光線在範圍內&&濕度在範圍內){
相對LED亮度為多少;
}
不然就是(光線在範圍內&&濕度在範圍內){
相對LED亮度為多少;
}
不然就是(光線在範圍內&&濕度在範圍內){
相對LED亮度為多少;
..............自己要去寫在紙上設定!
作者: 小牙 時間: 2014-11-29 22:54
回復 6# ates1687
謝謝你,我大概知道要如何下手
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) |
Powered by Discuz! X3.2 |