obnizを待たせる

obnizに対して「何もしなくていいからちょっとまってて!」という指示を送ることができます。
これを使うと、例えば1秒だけLEDをつけてその後また消すといったときに使えます。

obnizを待たせるには

obniz.wait();

を使います。
引数は待たせたいミリ秒を渡します。なので、1秒であれば1秒は1000ミリ秒なので

obniz.wait(1000);

となります。
早速LEDを使ってやってみましょう。

io.outputのレッスンのようにio0とio1に抵抗入りLEDをつなぎます。

そして、LEDをつけたら1秒待って1秒後にオフにしてみます。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function(){
  obniz.io0.output(true);
  obniz.io1.output(false);

  obniz.wait(1000);

  obniz.io0.output(false);
}

どうでしょうか。

ちなみにオフにする方法はたくさんあります。さっきの場合は5vにしたio0を0vにするという方法を使いましたが。他にも

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function(){
  obniz.io0.output(true);
  obniz.io1.output(false);

  obniz.wait(1000);

  obniz.io0.end();
}

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function(){
  obniz.io0.output(true);
  obniz.io1.output(false);

  obniz.wait(1000);

  obniz.io1.output(true);
}

などでもLEDは光らなくなります。

obniz.jsはコマンドをなるべく一緒に送るようにします。
ですが、いつもそうなるわけではありません。
なので、LEDをオンにするコマンドがobnizに届いてから「1秒待ってね」が3秒ぐらい後に届く可能性があります。
その場合はLEDはもっと長い時間光ることになります。
これはWi-Fiの速度などに依存します。

await obniz.wait()

obniz.wait()でobnizを待たせることができますが、
プログラムを動かしているJavaScriptはまってはくれません。
obniz.wait(1000)を実行してobnizに「待ってね」というコマンドを送ったらさっさと次のプログラムに移ってそのコマンドをobnizに送り始めます。

JavaScriptの動きも止めたくなるときもあります。
例えば、無限ループなどです。
ここでobniz.waitを読んでもコマンドを送るだけなので、いっこうにJavaScriptは止まりません。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function(){
  while(true) {
   obniz.wait(1000); // bad example
    console.log("here");
  }
}

この場合、JavaScriptが無限ループに耐えられず停止してしまうことがあります。
obnizに送ったのと同じ時間だけJavaScriptも停止させるには

await obniz.wait(1000)

このようにawaitを使って呼び出せば同じ時間だけJavaScriptも停止させられます。
つまりこのようにすればJavaScriptはきちんと動作します。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function(){
  while(true) {
   await obniz.wait(1000); // it wait 1000msec
    console.log("here");
  }
}

obnizにも1秒待ってねと送り、JavaScriptにも1秒待ってねとコマンドをお送ります。
このコマンドはio.inputWaitad.getWaitと違ってobnizからの返事を待つわけではなく、単純にJavaScriptの機能を使って同じ時間だけJavaScriptも停止させるという動きをします。

JavaScriptだけ待たせる

逆にobnizには何もコマンドを送らずに、JavaScriptだけ待たせるにはどうしたら良いでしょうか。
obniz.jsにはそのような関数はないのですが、JavaScriptの機能を使えばこのようにかけます。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function(){
  while(true) {
   await new Promise(resolve => setTimeout(resolve, 1000));
    console.log("here");
  }
}


Next : IO: switch 5v/3v/open-drain

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