View on GitHub

Seeed K.K. Wiki

grove/grove-rotary-angle-sensor

可変抵抗の回転量をシリアルモニタに表示するスケッチです。

概要

このスケッチはGrove - Analogの使用例です。 Grove - Analogコネクタに接続したGrove - Rotary Angle Sensorのノブ回転位置をシリアルモニタに表示します。 表示の周期は0.5秒です。

詳細

WioCellular.hをインクルードして、WioCellularインスタンスを使えるようにします。

#include <WioCellular.h>

セルラーモジュールとのインターフェースを初期化して、Groveの電源を投入します。

WioCellular.begin();
digitalWrite(PIN_VGROVE_ENABLE, LOW);

アナログ入力の分解能(ビット数)を14ビットに変更します。 (デフォルトは10ビットです。)

analogReadResolution(14);

analogRead()で回転位置に対応した値を取得します。

const auto rotaryAngleRaw = analogRead(ROTARY_ANGLE_PIN);

analogRead()の値はADコンバーターで、

  1. アナログ入力の電圧をゲインで増幅
  2. 増幅した電圧を基準電圧で指定した分解能のデジタルに変換

と計算されています。

ADコンバーターは、

  • ゲイン … 1/6
  • 基準電圧 … 0.6V
  • 分解能 … 14ビット

と設定されているので、次の計算でアナログ入力をアナログ入力電圧に換算します。

const auto rotaryAngleVoltage = (float)rotaryAngleRaw / 16383 * 0.6f / (1.0f / 6);

そして、横棒グラフの長さを計算しやすいように、アナログ入力電圧0~3.3Vを0~1に正規化します。

const auto rotaryAngle = rotaryAngleVoltage / 3.3f;