AD: 電圧を調べる

ioのinputと違って、実際にioが「何vなのか」を調べるのがアナログ-・デジタル変換であるADC(シンプルにADということが多い)です。
obnizのioにはすべてADがあり、ioやuartなど他の機能と同時に使えるのが特徴です。

実際に使ってみましょう。

まず、obnizには何も繋がないで下さい。

io.output()を使って、io0に出力してio0を5vにしてみます。
そしてio0の電圧をadを使って調べてみましょう。つまり、本当に出ているのか調べるような感じです。

io0の電圧を調べるにはad.getWait()を使います。

var voltage = await obniz.ad0.getWait();

これもinputと同じくawaitです。返事を待つ関数です。
ad0がio0の電圧を調べてくれるadということです。これでio0の電圧を調べて、返事を受け取ったらその電圧をvoltage変数に入れてくれます。

早速やってみましょう。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  obniz.io0.output(true);
  var voltage = await obniz.ad0.getWait();
  console.log(voltage);
}

実行するとログに5.00などの数字が出ると思います。
実際は繋いでいるUSBアダプタ等によって値が変わってきます。4.2なんてこともあるかもしれません。

逆にfalseを出力したら0に近い値になるはずです。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  obniz.io0.output(false);
  var voltage = await obniz.ad0.getWait();
  console.log(voltage);
}

obnizのadは10bit精度で、電源電圧補正がついています。
つまり、電池が減ってきて電源電圧が下がっていても、正しいadの結果が出るようにobnizが補正してくれます。

callback

inputと同じく「電圧が変わったらこの関数を呼んで」というcallback方式でadすることもできます。

その場合はadX.start()関数を使います。startの引数として渡した関数が電圧変わったときに呼ばれます。
adが開始されると値に変化があってもなくても最初の1回は関数が呼び出されます。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  obniz.ad0.start(function(voltage){
    console.log("voltage is "+voltage+" v")
  });
  obniz.io0.output(true);
}

実行してみると、たくさんのログが出てくると思います。
ad変換というのは「誤差」を持っていて、電圧が一定だったとしても計測するたびに5.00v 4.97v 5.02v、、、のように毎回といっていいほど結果が違うため、何度もcallback関数が呼ばれてしまうのです。

adはioそれぞれにあるので全部で12ありますが、同時に使うこともできます。
同時に全部(12こ)使うことも可能です。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  obniz.ad0.start(function(voltage){
    console.log("io0: voltage is "+voltage+" v")
  });
  obniz.ad1.start(function(voltage){
    console.log("io1: voltage is "+voltage+" v")
  });
  obniz.io0.output(true);
  obniz.io1.output(true);
}

また、callback関数は後から設定したり、変更することもできます。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  obniz.ad0.start();
  obniz.ad0.onchange = function(voltage) {
    console.log("voltage = "+voltage);
  }
  obniz.io0.output(true);
}

終了

start()を使って開始したadは自分で止めない限り停止しません。終了するにはend()を呼びます。
end()してしまえば、電圧が変わっても関数が呼ばれることはありません。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  obniz.ad0.start(function(voltage) {
    console.log("voltage = "+voltage);
    obniz.ad0.end();
  });
  obniz.io0.output(true);
}


Next : AD: read external voltage

You will Get in Few Days

Circuit for Starter “obniz Board” is available on Amazon and other online stores.
You can get it at below

Our products and resellers

Forum

Visit our developer’s forum to discuss and discover technologies.

Forum

Contact

Feel free to contact out support and technical team.

Contact us