添加感測器 - Wio Terminal
在本課程的這一部分,你將使用 Wio Terminal 上的光感測器。
硬體
本課程的感測器是一個光感測器,它使用光電二極體將光轉換為電信號。這是一個類比感測器,會傳送一個從 0 到 1,023 的整數值,表示相對的光量,這個值不對應於任何標準的測量單位,如lux。
光感測器內建於 Wio Terminal 中,通過背面的透明塑料窗戶可以看到。
程式設計光感測器
現在可以編程使用內建的光感測器。
任務
編程設備。
-
在 VS Code 中打開你在本作業的前一部分中創建的夜燈項目
-
在
setup
函數的底部添加以下一行:pinMode(WIO_LIGHT, INPUT);
這一行配置了用於與感測器硬體通信的引腳。
WIO_LIGHT
引腳是連接到內建光感測器的 GPIO 引腳號。這個引腳被設置為INPUT
,意味著它連接到一個感測器,並且數據將從引腳讀取。 -
刪除
loop
函數的內容。 -
將以下代碼添加到現在空的
loop
函數中。int light = analogRead(WIO_LIGHT);
Serial.print("Light value: ");
Serial.println(light);這段代碼從
WIO_LIGHT
引腳讀取一個類比值。這會從內建光感測器讀取一個 0-1,023 的值。然後這個值被傳送到串行端口,這樣當這段代碼運行時,你可以在串行監視器中讀取它。Serial.print
寫入文本時不帶換行符,因此每行將以Light value:
開頭,並以實際的光值結尾。 -
在
loop
的末尾添加一個一秒(1,000 毫秒)的短暫延遲,因為光水平不需要連續檢查。延遲可以減少設備的功耗。delay(1000);
-
將 Wio Terminal 重新連接到你的電腦,並像之前一樣上傳新代碼。
-
連接串行監視器。光值將輸出到終端。遮蓋和揭開 Wio Terminal 背面的光感測器,值將會改變。
> Executing task: platformio device monitor <
--- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
--- More details at http://bit.ly/pio-monitor-filters
--- Miniterm on /dev/cu.usbmodem101 9600,8,N,1 ---
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
Light value: 4
Light value: 5
Light value: 4
Light value: 158
Light value: 343
Light value: 348
Light value: 344
💁 你可以在 code-sensor/wio-terminal 文件夾中找到這段代碼。
😀 將感測器添加到你的夜燈程序成功了!