由於量測極只能找金屬材質,但某些金屬遇水又會生鏽,所以在選材要小心,以免生鏽產生誤差值。
我選擇不鏽鋼材質,但不鏽鋼無法被焊接,所以只能夾在金屬材質,再進行讀取,另外要再與電阻分壓,再拉線到 Arduino 的 IO腳上讀取 (電路與之前相同)。
[量測結果]
[程式碼]
/* 將 DHT11 測得的 溫濕度 顯示在LCD顯示器 */ #include <LiquidCrystal.h> //使用LiquidCrystal Library #include <dht11.h> //使用DHT11 Library LiquidCrystal lcd(12, 11, 7, 6, 5, 4); //初始設定LCD顯示器的介面 dht11 DHT11; //定義DHT11 物件 #define DHT11PIN A1 //定義讀取資料的 Pin腳 void setup() { lcd.begin(16, 2); // 設定LCD有2列16欄 } void loop() { lcd.setCursor(0, 0); //將游標設定在第一行第一個位置(column 0, line 1) int chk = DHT11.read(DHT11PIN); //檢查DHT感測器的回應 switch (chk) { case 0: lcd.print("Humidity:"); lcd.print((float)DHT11.humidity, 1); lcd.print("%"); lcd.setCursor(0, 1); lcd.print("Temp:"); lcd.print((float)DHT11.temperature, 0); lcd.write(0xDF); lcd.print("C "); lcd.print( (float)Thermister(analogRead(A0)), 1); // display Fahrenheit lcd.write(0xDF); lcd.print("C "); break; case -1: lcd.print("Checksum error"); break; case -2: lcd.print("Time out error"); break; default: lcd.print("Unknown error"); break; } delay(500); } float pad = 9000; // balance/pad resistor value, set this to the measured resistance of your pad resistor float Thermister(int RawADC) { float Temp; long Resistance = ( ( 1000 * pad / RawADC) - pad ); Temp = log(Resistance); Temp = 1 / ( 0.001129148 + ( 0.000234125 + ( 0.0000000876741 * Temp * Temp ) ) * Temp ); Temp -= 273.15; // Convert Kelvin to Celcius Temp = ( Temp * 9.0 ) / 5.0; // + 32.0; // Convert Celcius to Fahrenheit Temp /= 10.0; Temp += 10.0; // Offset return Temp; }
COOL
回覆刪除請問大大您那個金屬片是什麼呢?何處可取得?
材質是鉑, 朋友給的, 我也不知道要去哪邊買耶 @@"
刪除你只要找到不易生鏽的金屬即可
你好
回覆刪除請問也是用dht11的程式碼?
電阻要如何接
是幾歐姆的
我直接用土壤溼度計 YL69加上ARDUINO程式測試土壤濕度如何顯示在LCD面板上
回覆刪除可以幫我解答嗎??
程式部分還要在加麼才能顯示再LCD顯示器上~建議
回覆刪除int wet_levela;
const int sensorPina= A0;
const int LEDPina= 13;
int wet_levelb;
const int sensorPinb= A1;
const int LEDPinb= 12;
int wet_levelc;
const int sensorPinc= A2;
const int LEDPinc= 11;
void setup() {
Serial.begin(9600);
pinMode(sensorPina, INPUT);
pinMode(LEDPina, OUTPUT);
pinMode(sensorPinb, INPUT);
pinMode(LEDPinb, OUTPUT);
pinMode(sensorPinc, INPUT);
pinMode(LEDPinc, OUTPUT);
}
void loop() {
wet_levela= analogRead(sensorPina);
wet_levelb= analogRead(sensorPinb);
wet_levelc= analogRead(sensorPinc);
if (sensorPina >0){
if(wet_levela > 750){
digitalWrite(LEDPina, HIGH);
}
else{
digitalWrite(LEDPina, LOW);
}
}
if (sensorPinb >0){
if(wet_levelb > 750){
digitalWrite(LEDPinb, HIGH);
}
else{
digitalWrite(LEDPinb, LOW);
}
}
if (sensorPinc >0){
if(wet_levelc > 750){
digitalWrite(LEDPinc, HIGH);
}
else{
digitalWrite(LEDPinc, LOW);
}
}
Serial.println(wet_levela);
Serial.println(wet_levelb);
Serial.println(wet_levelc);
delay(2000);
}