跳至主要内容

添加感測器 - Wio Terminal

在本課程的這一部分,你將使用 Wio Terminal 上的光感測器。

硬體

本課程的感測器是一個光感測器,它使用光電二極體將光轉換為電信號。這是一個類比感測器,會傳送一個從 0 到 1,023 的整數值,表示相對的光量,這個值不對應於任何標準的測量單位,如lux

光感測器內建於 Wio Terminal 中,通過背面的透明塑料窗戶可以看到。

Wio Terminal 背面的光感測器

程式設計光感測器

現在可以編程使用內建的光感測器。

任務

編程設備。

  1. 在 VS Code 中打開你在本作業的前一部分中創建的夜燈項目

  2. setup 函數的底部添加以下一行:

    pinMode(WIO_LIGHT, INPUT);

    這一行配置了用於與感測器硬體通信的引腳。

    WIO_LIGHT 引腳是連接到內建光感測器的 GPIO 引腳號。這個引腳被設置為 INPUT,意味著它連接到一個感測器,並且數據將從引腳讀取。

  3. 刪除 loop 函數的內容。

  4. 將以下代碼添加到現在空的 loop 函數中。

    int light = analogRead(WIO_LIGHT);
    Serial.print("Light value: ");
    Serial.println(light);

    這段代碼從 WIO_LIGHT 引腳讀取一個類比值。這會從內建光感測器讀取一個 0-1,023 的值。然後這個值被傳送到串行端口,這樣當這段代碼運行時,你可以在串行監視器中讀取它。Serial.print 寫入文本時不帶換行符,因此每行將以 Light value: 開頭,並以實際的光值結尾。

  5. loop 的末尾添加一個一秒(1,000 毫秒)的短暫延遲,因為光水平不需要連續檢查。延遲可以減少設備的功耗。

    delay(1000);
  6. 將 Wio Terminal 重新連接到你的電腦,並像之前一樣上傳新代碼。

  7. 連接串行監視器。光值將輸出到終端。遮蓋和揭開 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 文件夾中找到這段代碼。

😀 將感測器添加到你的夜燈程序成功了!