學習目標
- ✓觀察雨滴數量與 AO 讀值的關係。
- ✓使用低電位有效的 DO 判斷水滴。
- ✓建立水滴測試、門檻調整與擦乾保養流程。
SENSOR / RAINDROP
雨滴感測器以導電感測板偵測水滴,提供 AO 類比輸出與可調整的 DO 數位輸出。它適合做雨滴警示與水滴互動,但不等於校準過的降雨量測站。
先確認這一課要學會什麼,以及桌面上需要哪些材料。
感測板上的水滴形成導電路徑,讓 AO 改變;DO 由電位器設定的比較門檻決定。
使用一個類比腳與一個數位腳。
由少到多增加水滴並記錄 AO。
用 DO 或程式門檻判斷是否有雨滴。
低電位有效是常見設定,但不同模組仍應先實測。
雨滴板與雨水板原理相近;本篇刻意使用逐滴測試,讓學生看見讀值變化而不是只看亮燈。
| 模組腳位 | 接到控制板 | 訊號方向 | 檢查重點 |
|---|---|---|---|
| VCC | 5V | 電源 | 依模組標示。 |
| GND | GND | 地線 | 共地。 |
| AO | A0 | 類比輸出 | 對應 ANALOG_PIN。 |
| DO | D2 | 數位輸出 | 對應 DIGITAL_PIN。 |
已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。
積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。
playrobot_raindrop_setup設定 AO/DO 腳位
位置:感測器 → 環境感測器 → 雨滴感測器playrobot_raindrop_analog讀取水滴造成的類比變化
位置:感測器 → 環境感測器 → 雨滴感測器playrobot_raindrop_digital讀取門檻判斷
位置:感測器 → 環境感測器 → 雨滴感測器serial_println記錄逐滴測試資料
位置:輸出每增加一滴水就記錄一次 AO,並觀察 DO 何時切換。
playrobot_raindrop_setuparduino_delayplayrobot_raindrop_analogplayrobot_raindrop_digitalarduino_serial_printplayrobot_raindrop_setuparduino_delayplayrobot_raindrop_analogplayrobot_raindrop_digitalarduino_serial_print使用同一支滴管逐滴加入。
為什麼:讓資料比較更公平。記下 DO 從否變成是的 AO 範圍。
為什麼:數位輸出是類比訊號的門檻化結果。每輪測試後清除水膜。
為什麼:殘水會造成下一輪起始值不同。playrobot_raindrop_setup:設定 AO/DO 腳位
下載桃園版 Blockly 專案或對應的文字程式。
| 測試情境 | 可能讀值 | 判讀 |
|---|---|---|
| 水滴變多 | AO 通常改變 | 導電面積與濕潤程度改變。 |
| 超過電位器門檻 | DO 切換 | 比較器將連續訊號轉成數位事件。 |
這段程式把「雨滴感測器(AO/DO)」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。
const int RAINDROP_AO = A0;
const int RAINDROP_DO = 2;
void setup() {
Serial.begin(115200);
pinMode(RAINDROP_DO, INPUT);
}
void loop() {
Serial.print(analogRead(RAINDROP_AO));
Serial.print(", drop=");
Serial.println(digitalRead(RAINDROP_DO) == LOW);
delay(300);
}// 雨滴感測器(AO/DO) library函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_raindrop_setup 就算接線正確也無法使用。
pinMode(RAINDROP_DO, INPUT);本頁接線是 VCC → 5V、GND → GND、AO → A0、DO → D2。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。
void setup() {啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。
void loop() {重複執行區先讓感測器更新,再讀取 雨滴感測器初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。
Serial.print(analogRead(RAINDROP_AO));先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。
先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。
先檢查:確認水滴落在感測銅箔,不是塑膠外殼。
處理方式:檢查 AO 接線與感測板是否有斷線。
先檢查:觀察電位器與環境水氣。
處理方式:調整門檻並建立乾燥基準。
先檢查:感測板是否仍有水膜。
處理方式:擦乾、通風,必要時短暫斷電。
從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。
題目:讓 LED 在 DO 切換時亮起。
這題要延伸「雨滴感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。
題目:用 AO 分成乾、少量、多量三區。
這題要延伸「雨滴感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
題目:加入多次平均與延遲解除機制。
這題要延伸「雨滴感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
參考類比水滴/蒸氣感測板的導電原理與非防水提醒。
對照 raindrop setup、analog 與 digital 積木。