NETMF : アナログ入力の方法(AnalogInput)

これまで、汎用のデジタル入出力(GPIO) の方法を紹介してきました。

今回は .NET Micro Framework のアナログ入力の方法を紹介します。
温度にしろ加速度にしろ、または他の値にしても、センサーモジュールから取得する値は True / False だけということは少なく、多くの場合は連続値を取ります。

もちろんボタンのように bool を取るモジュールもあります。アナログ入力は連続値を取るといいながら実際には A/D 変換したデジタルデータです。
また I2C や SPI のようなインターフェイス(いずれ、また)で値を取得するモジュールもあります。

それでもやはり、アナログ入力の理解は必須です。そこでデジタル入出力に続いて紹介します。


アナログ入力には AnalogInput を使用します。

var input = new AnalogInput(<アナログチャンネル>);

の形でインスタンスを生成します。

データを読み取るには ReadRaw メソッド、または Read メソッドを利用します。

  • ReadRaw メソッド・・・ A/D コンバーターの出力値を読み出します。
    GR-PEACH, GR-SAKURA では A/D コンバーターの分解能は 12ビットなので 0~4095 の値が返ってきます。(分解能はマイコンボードによって異なります)
  • Read メソッド・・・0~1.0 の値が返ってきます。

アナログチャンネルはマイコンボードによって定義が異なります。

GR-PEACH

ピン アナログチャンネル
A0 0
A1 1
A2 2
A3 3
A4 5
A5 7

GR-SAKURA

ピン アナログチャンネル
AD0 0
AD1 1
AD2 2
AD3 3
AD4 4
AD5 5

GR-PEACH ではピン番号とアナログチャンネルとが一致していません

クラスライブラリを利用すると、

var input = new AnalogInput(Pins.ANALOG_0);

のように記述することができます。


CdS セルを使用したサンプルを用意しました。(クラスライブラリを利用しています)
CdS セルは明るさによって抵抗値が変わる部品です。非常に安価で回路がシンプルになるので、アナログ入力のちょっとした実験には便利です。(安価なぶんだけ、通信販売だと逆に買いづらかったりしますが・・・)

using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;
using GrFamily.MainBoard;

namespace CdsTrial
{
    public class Program
    {
        public static void Main()
        {
            var cdsInput = new AnalogInput(Pins.ANALOG_0);

            while (true)
            {
                var reg = cdsInput.ReadRaw();
                Debug.Print(reg.ToString());

                Thread.Sleep(1000);
            }
        }
    }
}

実行結果は以下の通り。

CdS_result

回路は以下を参考にしてください。

CdS_CircuitWP_20151018_001

IoT ALGYAN の PinKit をお持ちの方は、すでに AnalogInput のセンサーデバイスをお持ちです。ハンズオンで大活躍の温度センサー(サーミスター)も AnalogInput を使っています。これについてはまた改めて。

広告
カテゴリー: .NET Micro Framework, GrFamilyLibrary, IoT, IoT ALGYAN タグ: , , パーマリンク

NETMF : アナログ入力の方法(AnalogInput) への1件のフィードバック

  1. ピンバック: NETMF : PinKit センサーボードの AnalogInput | 技術との戯れ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中