學習目標
- ✓分辨雨水感測器 AO 與 DO 的用途。
- ✓使用桃園版 Blockly 同時讀取類比與數位訊號。
- ✓知道感測板受水、鹽分、氧化與環境光影響,需要重新校準。
SENSOR / RAIN
傳統雨水模組以感測板上的導電程度反映表面水量,通常提供 AO 類比值與 DO 數位門檻。教學重點是校準與防腐蝕,而不是把一次讀值當成正式雨量。
先確認這一課要學會什麼,以及桌面上需要哪些材料。
雨水感測板的電阻會隨表面濕潤程度與導電性改變;DO 則是電位器設定的門檻結果。
記錄乾燥感測板的 AO 值。
少量水滴會改變導電路徑與 AO。
用電位器或程式門檻產生 DO 判斷。
數值方向會因模組電路而異;DO 常見為低電位有效,仍應以實測為準。
AO 用於觀察連續變化,DO 用於門檻判斷;感測板與接頭都要保持乾燥可控。
| 模組腳位 | 接到控制板 | 訊號方向 | 檢查重點 |
|---|---|---|---|
| VCC | 5V | 電源 | 依模組工作電壓。 |
| GND | GND | 地線 | 與 Arduino 共地。 |
| AO | A0 | 類比輸出 | 對應 ANALOG_PIN。 |
| DO | D2 | 數位輸出 | 對應 DIGITAL_PIN,常見低電位表示有雨。 |
已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。
積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。
playrobot_rain_setup設定 AO/DO 腳位
位置:感測器 → 環境感測器 → 雨水感測器playrobot_rain_analog讀取濕潤程度原始值
位置:感測器 → 環境感測器 → 雨水感測器playrobot_rain_digital讀取門檻後的布林狀態
位置:感測器 → 環境感測器 → 雨水感測器serial_println觀察 AO 與 DO 的關係
位置:輸出滴水後讓 LED 亮起,並同時觀察 AO 數值。
playrobot_rain_setuparduino_delayplayrobot_rain_analogplayrobot_rain_digitalserial_printlnplayrobot_rain_setuparduino_delayplayrobot_rain_analogplayrobot_rain_digitalserial_println先記錄乾燥值,再逐滴加水。
為什麼:可看見自己的模組數值方向。轉動電位器並觀察 DO。
為什麼:DO 是硬體比較器的結果。測試後擦乾感測板。
為什麼:殘留水與氧化會改變下一次量測。playrobot_rain_setup:設定 AO/DO 腳位
下載桃園版 Blockly 專案或對應的文字程式。
| 測試情境 | 可能讀值 | 判讀 |
|---|---|---|
| 感測板乾燥 | AO 維持乾燥區間 | 沒有明顯導電水膜。 |
| 滴水後 | AO 改變、DO 可能切換 | 水滴改變感測板導電性。 |
這段程式把「雨水感測器(AO/DO)」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。
const int RAIN_AO = A0;
const int RAIN_DO = 2;
void setup() {
Serial.begin(115200);
pinMode(RAIN_AO, INPUT);
pinMode(RAIN_DO, INPUT);
}
void loop() {
Serial.print(analogRead(RAIN_AO));
Serial.print(", raining=");
Serial.println(digitalRead(RAIN_DO) == LOW);
delay(500);
}// 雨水感測器(AO/DO) library函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_rain_setup 就算接線正確也無法使用。
pinMode(RAIN_AO, INPUT);本頁接線是 VCC → 5V、GND → GND、AO → A0、DO → D2。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。
void setup() {啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。
void loop() {重複執行區先讓感測器更新,再讀取 雨水感測器初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。
Serial.print(analogRead(RAIN_AO));先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。
先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。
先檢查:確認電位器、感測板是否潮濕。
處理方式:擦乾並重新調整門檻。
先檢查:比較自己模組的乾濕值。
處理方式:依實測值設定門檻,不直接照抄數字。
先檢查:是否長時間通電或積水。
處理方式:只在取樣時供電,並於測試後擦乾。
從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。
題目:記錄乾燥、1 滴、5 滴的 AO。
這題要延伸「雨水感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
題目:DO 有雨時點亮 LED。
這題要延伸「雨水感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。
題目:設計間歇供電與校準流程。
這題要延伸「雨水感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。
補充電阻/導電原理、AO 讀值與門檻概念。
對照 rain setup、analog 與 digital 積木。