由於量測極只能找金屬材質,但某些金屬遇水又會生鏽,所以在選材要小心,以免生鏽產生誤差值。
我選擇不鏽鋼材質,但不鏽鋼無法被焊接,所以只能夾在金屬材質,再進行讀取,另外要再與電阻分壓,再拉線到 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);
}