メインコンテンツまでスキップ

センサーを追加する - Wio Terminal

このレッスンのこの部分では、Wio Terminalの光センサーを使用します。

ハードウェア

このレッスンのセンサーは、光を電気信号に変換するフォトダイオードを使用する光センサーです。これはアナログセンサーで、0から1,023の整数値を送信し、標準的な測定単位(ルクスなど)に対応しない相対的な光の量を示します。

光センサーは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秒(1,000ms)の小さな遅延を追加します。遅延はデバイスの消費電力を減らします。

    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フォルダーにあります。

😀 ナイトライトプログラムにセンサーを追加することに成功しました!