TY桃園智造感測器教學庫
感測器教學庫/環境感測器/雨水感測器
BATCH 02 · 已發布

SENSOR / RAIN

雨水感測器(AO/DO)用類比濕潤程度與數位門檻判斷是否下雨

傳統雨水模組以感測板上的導電程度反映表面水量,通常提供 AO 類比值與 DO 數位門檻。教學重點是校準與防腐蝕,而不是把一次讀值當成正式雨量。

入門45 分鐘Arduino UNO
READYDATA
SIGNAL STABLE
雨水感測器(AO/DO)
VCC / 5VGND / GND
01 / PREPARE

課前準備

先確認這一課要學會什麼,以及桌面上需要哪些材料。

學習目標

  1. 分辨雨水感測器 AO 與 DO 的用途。
  2. 使用桃園版 Blockly 同時讀取類比與數位訊號。
  3. 知道感測板受水、鹽分、氧化與環境光影響,需要重新校準。

材料清單

1 個雨水感測器模組確認 AO、DO、VCC、GND 腳位。
1 組Arduino UNO本例 AO=A0、DO=D2。
1 組滴管與少量清水只做少量滴水,不讓電路板浸水。
適用對象國中生活科技與 Arduino 初學者
建議課時45 分鐘
示範平台Arduino UNO
02 / HOW IT WORKS

導電程度變化,不是雨量計

雨水感測板的電阻會隨表面濕潤程度與導電性改變;DO 則是電位器設定的門檻結果。

01

讀乾燥基準

記錄乾燥感測板的 AO 值。

02

滴水觀察

少量水滴會改變導電路徑與 AO。

03

設定門檻

用電位器或程式門檻產生 DO 判斷。

DISTANCE FORMULAwetness = analogRead(AO)

數值方向會因模組電路而異;DO 常見為低電位有效,仍應以實測為準。

03 / WIRING

接線配置

AO 用於觀察連續變化,DO 用於門檻判斷;感測板與接頭都要保持乾燥可控。

MODULE雨水感測器(AO/DO)VCCGNDAODO
CONTROLArduino UNO5VGNDA0D2
模組腳位接到控制板訊號方向檢查重點
VCC5V電源依模組工作電壓。
GNDGND地線與 Arduino 共地。
AOA0類比輸出對應 ANALOG_PIN。
DOD2數位輸出對應 DIGITAL_PIN,常見低電位表示有雨。
✓ WIRING ROWS ALIGNED

已將 4 條線路依同一筆資料逐列對齊;電壓仍須依手上模組版本確認。

04 / BLOCK GUIDE

本課會用到的積木

積木名稱與型別以桃園版 Blockly 現行程式為準,不以通用積木替代。

雨水感測器初始化ANALOG_PIN A0DIGITAL_PIN 2
BLOCK 01playrobot_rain_setup

雨水感測器初始化

設定 AO/DO 腳位

位置:感測器 → 環境感測器 → 雨水感測器
ANALOG_PIN
A0感測板 AO 接到的類比腳。
DIGITAL_PIN
2模組 DO 接到的數位腳。
雨水感測器類比值
BLOCK 02playrobot_rain_analog

雨水感測器類比值

讀取濕潤程度原始值

位置:感測器 → 環境感測器 → 雨水感測器
雨水感測器是否下雨
BLOCK 03playrobot_rain_digital

雨水感測器是否下雨

讀取門檻後的布林狀態

位置:感測器 → 環境感測器 → 雨水感測器
序列埠列印
BLOCK 04serial_println

序列埠列印

觀察 AO 與 DO 的關係

位置:輸出
05 / BLOCK EXAMPLE

做一個雨滴提示器

滴水後讓 LED 亮起,並同時觀察 AO 數值。

桃園版 BLOCKLY / WORKSPACE● BLOCK STYLE
Arduino 程式
初始化
雨水感測器初始化(A0、D2)playrobot_rain_setup
重複執行arduino_delay
雨水感測器類比值playrobot_rain_analog
雨水感測器是否下雨?playrobot_rain_digital
序列埠列印並控制 LEDserial_println
重複執行
雨水感測器初始化(A0、D2)playrobot_rain_setup
重複執行arduino_delay
雨水感測器類比值playrobot_rain_analog
雨水感測器是否下雨?playrobot_rain_digital
序列埠列印並控制 LEDserial_println
X / 010Y / 024

組合步驟

01
先乾後濕

先記錄乾燥值,再逐滴加水。

為什麼:可看見自己的模組數值方向。
02
調整門檻

轉動電位器並觀察 DO。

為什麼:DO 是硬體比較器的結果。
03
清潔並晾乾

測試後擦乾感測板。

為什麼:殘留水與氧化會改變下一次量測。
積木使用重點先辨認積木是「回傳值」還是「執行動作」,再放到正確的拼接位置。

playrobot_rain_setup設定 AO/DO 腳位

預期觀察結果

測試情境可能讀值判讀
感測板乾燥AO 維持乾燥區間沒有明顯導電水膜。
滴水後AO 改變、DO 可能切換水滴改變感測板導電性。
06 / CODE EXPLAINED

範例程式逐段解說

這段程式把「雨水感測器(AO/DO)」的實體接線、桃園版 Blockly 積木與 Arduino 執行流程接在一起。先對照腳位,再看初始化、讀值、輸出與等待的順序;每一步都可以回到本頁的積木範例實測。

GENERATED LOGIC / EXCERPT積木背後的程式碼收合程式碼 −
TAOYUAN BLOCKLY / ARDUINO C++READ ONLY
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);
}
SELF STUDY GUIDE先看哪一段、為什麼?
01
先載入函式庫與建立裝置// 雨水感測器(AO/DO) library

函式庫提供桃園版 Blockly 產生器所需的底層功能;若這裡的函式庫或物件名稱不對,後面的 playrobot_rain_setup 就算接線正確也無法使用。

02
把程式腳位對回接線表pinMode(RAIN_AO, INPUT);

本頁接線是 VCC → 5V、GND → GND、AO → A0、DO → D2。程式常數、積木欄位與實體線材必須使用同一組設定;若改了其中一邊,另外兩邊也要一起改。

03
在 setup 只做一次初始化void setup() {

啟動序列埠、I²C/UART 或感測器初始化通常只需要做一次,所以要放在「初始化」區,不要每一圈重複建立裝置。這也對應範例中的啟動積木。

04
在 loop 更新並取得資料void loop() {

重複執行區先讓感測器更新,再讀取 雨水感測器初始化。若元件有 data ready、可用性或逾時條件,先判斷狀態再使用數值,避免把無效資料當成真實測量。

05
輸出結果並控制取樣速度Serial.print(analogRead(RAIN_AO));

先把原始值、單位或狀態送到序列埠,才能和預期結果比較;等待時間則決定更新速度。若看到亂碼,先檢查鮑率;若數值跳動,先增加合理的取樣間隔或做校正。

自學檢查
  • 實體接線:VCC → 5V、GND → GND、AO → A0、DO → D2。
  • 主要積木:playrobot_rain_setup;先確認它是回傳值還是執行動作。
  • 本課板子:Arduino UNO;更換控制板或模組版本時,電壓、腳位與函式庫都要重新確認。
07 / DEBUG

常見問題與故障排除

先從「電源、接線、腳位、物體」四個方向檢查,再修改程式。

ERR 01

DO 一直是有雨

先檢查:確認電位器、感測板是否潮濕。

處理方式:擦乾並重新調整門檻。

ERR 02

AO 方向與網路範例相反

先檢查:比較自己模組的乾濕值。

處理方式:依實測值設定門檻,不直接照抄數字。

ERR 03

感測板很快變色

先檢查:是否長時間通電或積水。

處理方式:只在取樣時供電,並於測試後擦乾。

08 / NEXT MISSION

延伸挑戰

從顯示數值,逐步走向條件判斷、燈號回饋與雷達專題。

L1

乾濕值表

題目:記錄乾燥、1 滴、5 滴的 AO。

解題方向

這題要延伸「雨水感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_rain_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「記錄乾燥、1 滴、5 滴的 AO。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
L2

雨滴警示燈

題目:DO 有雨時點亮 LED。

解題方向

這題要延伸「雨水感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。把結果接到題目指定的輸出元件。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_rain_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「DO 有雨時點亮 LED。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、把結果接到題目指定的輸出元件是否在所有測試情境都正確反應。
L3

防腐蝕取樣

題目:設計間歇供電與校準流程。

解題方向

這題要延伸「雨水感測器初始化」的基本讀值:先保留已驗證的接線與初始化,再把題目要求的資料處理加在重複執行區。先把資料整理成可觀察的序列埠或表格結果。

  1. 先匯入本頁 Blockly 範例,確認感測器在沒有加入挑戰功能時能穩定讀值。
  2. 保留 playrobot_rain_setup,先把讀值送到序列埠,建立正常範圍或基準值。
  3. 依題目「設計間歇供電與校準流程。」加入比較、分類、累計或時間判斷;門檻要用實測資料決定,不要直接猜一個數字。
  4. 用至少三種不同情境測試,記錄輸入、程式判斷與輸出結果,再修正門檻或取樣間隔。
完成檢核:完成後應能指出:哪一個積木取得資料、哪一段負責判斷或換算、先把資料整理成可觀察的序列埠或表格結果是否在所有測試情境都正確反應。
教師快速檢核4 POINT CHECK
  • 能區分 AO 與 DO。
  • 能依實測資料設定雨水門檻。
  • 能說明感測板需要擦乾與校準。
09 / EVIDENCE資料來源與版本展開查看 +
官方教學
Arduino rain detection guideDFRobot Maker Community

補充電阻/導電原理、AO 讀值與門檻概念。

桃園版 Blockly
桃園版 Blockly 雨水積木桃園版 Blockly

對照 rain setup、analog 與 digital 積木。

LOCAL
LAST REVIEWED / 2026-08-13

本頁使用零件圖鑑標準範本,內容可由網站編輯模式持續維護。

返回教學庫 →