很早以前就買了這個感測器,可是一直沒實作有關水位的檢測,利用最近在複習Arduino的同時,找出來練習一下,順便記錄實作過程。測試過程中,沒有實際加水讓水位升高來測試感測器,而是將感測板慢慢放入水中,模擬水位上升。
在測試水位的過程,覺得取得的感測器誤差值很大,同一位置得到的值都不太一樣,調了很久,只能大致符合。如果您也要實做這個電路,記得要找到適合的範圍區間。
在測試水位的過程,覺得取得的感測器誤差值很大,同一位置得到的值都不太一樣,調了很久,只能大致符合。如果您也要實做這個電路,記得要找到適合的範圍區間。
[材料]
- Arduino Uno 開發板
- 雨水感測器 Water Sensor
- LED x3
- 220歐姆電阻 x3
- 蜂鳴器 x1
- 麵包板 x1
- 裝水水杯 x1
- 排線 N 條
[接線圖]
Arduino接腳 | Water水位感測器 | 其他 |
---|---|---|
+5V | 正(+) | - |
GND | 負(-) | - |
A0 | S | - |
D4 | - | 綠色LED正極,負極接220歐姆電阻,電阻另一端接地。 |
D3 | - | 黃色LED正極,負極接220歐姆電阻,電阻另一端接地。 |
D2 | - | 紅色LED正極,負極接220歐姆電阻,電阻另一端接地。 |
D5 | - | 蜂鳴器正極,另一端接地。 |
[程式]
int red=2; int yellow=3; int green=4; int buzz=5; void setup () { pinMode (red,OUTPUT); pinMode (yellow,OUTPUT); pinMode (green,OUTPUT); pinMode (buzz,OUTPUT); Serial.begin (9600); digitalWrite(buzz,LOW); } void loop() { //從A0讀取輸入 int value = analogRead(A0); Serial.print(value); Serial.print(" "); if (value > 480) { Serial.println("High Level"); digitalWrite (red,HIGH); digitalWrite(yellow,LOW); digitalWrite(green,LOW); digitalWrite(buzz,HIGH); } else if ((value > 340) && (value <= 480)) { Serial.println("Middle Level"); digitalWrite (red,LOW); digitalWrite (yellow,HIGH); digitalWrite (green,LOW); digitalWrite(buzz,LOW); } else if ((value > 100) && (value <=340)){ Serial.println("Low Level"); digitalWrite (red,LOW); digitalWrite (yellow,LOW); digitalWrite (green,HIGH); digitalWrite(buzz,LOW); } else if (value <=100){ Serial.println("NO Water"); digitalWrite (red,LOW); digitalWrite (yellow,LOW); digitalWrite (green,LOW); digitalWrite(buzz,LOW); } delay(500); }
[實作結果]
[參考資料]
- Arduino.cc:Basic Water Sensor
For 本文作者:
回覆刪除我最近正在寫一個論文,在網路上無意間發現與您上述的內容跟我論文中想發表的一個部份很相同,我發現在您的實例中有我很需要的素材,不知道我可不可以冒昧在其他通訊軟體上跟您聯絡,最好是可以與您通上一個語音電話。
我會非常感謝您的回覆!
張貼留言