出力

IOの出力はデバイスの端子電圧を操作することで電流を流したり止めたりすることです。これによりライトを点灯させたり、モーターを回転させたりできます。

出力にはio.output()関数を利用します。ioにはそれぞれ数字で番号が割り振られていて、その番号で指定したioを操作できます。例えば0番と名付けられたioに電圧をかけるには以下のようにします。

obniz.io0.output(true);

もしくはgetIO()関数で数字から指定することもできます。

obniz.getIO(0).output(true);

どのような電圧で出力されるのかなどは駆動方法の設定によります。なにも指定してない場合は「1番高い電圧でのプッシュプル駆動」となり一番パワフルな駆動が行われます。

出力の停止

出力の停止はio.end()を利用します。output(false)ではありません。output(false)では「0vを出力する」という出力が行われるため、出力自体を停止するにはio.end()を利用します。

過電流検知

obniz boardなど一部デバイスでは出力時の過電流検知や加熱による自動停止機能があります。自動停止された出力は一定時間後(数msecなど)に自動再開されることがあります。停止条件についてはデバイスのリファレンスを参照ください。

過電流検知が行われた場合は以下のような警告がobniz.js側に届きます

io1: heavy output. output voltage is too low when driving high

上記の警告は「想定している電圧より実際に出力されている電圧が低いです」という内容で、出力が高負荷であることを示しています。この場合、回路側が高速に出力の停止と再開を繰り返していることがあります。

または以下のようなエラーを受け取ることがあります。

[Error] Error: io1: output voltage is too low when driving high. io state has changed output to input

上記エラーの場合は回路に破損を受ける可能性があるので、自動的に出力を停止してioを初期状態に戻したことを意味しています。

これらの場合は、まず配線に問題がないか確認し、問題がないならより強力な電源から対象を動かす必要があります。

  • 対象がなにかの電源の場合、直接電源につなぐ
  • デバイスの2つ以上のioにつなぎ、2つのioから駆動する