IO: 出力する

obnizではioから単純に電気を流したり止めたりすることができます。GPIOという使い方です。
分かりやすいようにLEDを繋いでやってみましょう。
LEDという部品は電気を流すと光るので、obnizにつないでioから電気を流し光らせてみましょう。

確認用にLEDをつなぐ

LEDはこの下の写真のような部品で電気を流すと光るのですが、長い足と短い足があります。
長い方をプラスに、短い方をマイナスにつなぐことで光ります。

ただ、普通のLEDはobnizと直接つなぐと電気が強すぎて壊れるので、必ず”抵抗入りLED”を使って下さい。

どこにつないでもいいですが、今回はio0に長い方を、io1に短い方を差し込みます。

プログラム

ちなみにobnizのioは起動後"フロート"している状態となります。
つまりどこともつながっていないのと同じ状態となります。
もちろんLEDをつないでもそれだけでは光りません。両手でLEDを持っても光らないのと同じです。

では、ioを制御して光らせてみましょう。
まずはプログラムからobnizに接続する必要があります。以前のレッスンのように以下のように接続します。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function(){

}

そして、接続が完了したところでobnizのioを操作します。
出力をするには以下のようにします。

obniz.io0.output(true);

obnizには0~11のioがありますが、それぞれobniz.ioXのXのところに数字が来たものがobnizのioを操作するためのクラスとなります。
output()が出力をするための関数です。
trueを渡すことで5Vが出力され、繋がれたものに電気を流すことができます。
つまり上のプログラムでio0が5vになるわけです。そしてfalseで0vとなります。
tureかfalseのどちらかです。4.5vみたいな半端な数字はありません。これを「デジタル」といいます。

5vというのはUSBの電圧です。乾電池が1つ1.5Vですから、電池3つ分ぐらいのエネルギーがあります。

もちろんこれはインターネット経由でobnizのio0をtrueにしています。
なので、このobniz.io0.output(true);を実行することでobnizに対して、インターネット経由で「io0を5vにしなさい」というコマンドが送信されることになります。

さっそく、LEDを光らせてみましょう。

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

さて、これで光るでしょうか。
光らないと思います。

なぜでしょうか。

マイナスをつないでないからです。

LEDのマイナス側はio1につないでいますが、io1はまだ何の設定もしていません。
つまり”フロート”の状態です。
電気はプラスから流れてマイナスに行くので、マイナスも必要です。片方だけではだめです。

obnizからマイナスを出すには

obniz.io1.output(false);

のようにします。
これでio1は0Vの電圧を出力します。
「0vなのに出力」というのが変な感じがしますが、考えてみて下さい。乾電池の1.5Vはどっちが1.5Vなのでしょうか。プラスが+1.5Vならマイナスは0Vではないでしょうか。

「出力」というのはコンピューターの世界では「電気を出す」という意味ではありません「その電圧にする」という意味になります。

なので、output(true)は 「5v」にする。output(false) は「0v」にする。
というコマンドになります。

そうすると、この2つの間にLEDとかモーターを繋げば、5vも差があるので、電気が流れて光ったり動いたりするということです。

じゃあ出力していない"フロート"しているioは何vなのでしょうか。それは「不明」です。5vでもなく0vでもありません。
もちろんLEDをつないでも光りません。
乾電池のプラスが1.5Vでマイナスが0Vのときに、電池の横が何ボルトか聞かれて、「0V!」とはならないはずです。もし電池の横が0Vならそこにつないでも電気が流れることになりますが、そうならないからです。

説明はここまでで一度LEDをつけてみましょう。

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

LEDがつくと思います。

出力について

obnizのioは5vが標準です。trueで5v。falseで0v、その間を繋げば電気が流れます。
どちらもoutputなのに、電気が流れるのは不思議ですが(片方はinputでも良さそうな気がしますよね。でも違います)outputは「電圧を設定しているだけで、電流がどっちに流れるかは気にしてない」ということを覚えていて下さい。
とにかく電気を流すにはoutputする必要があるんです。

では、どれだけの電流を流せるでしょうか。
obnizのioではそれぞれ1Aまで流せるようになっています。
モータードライバーという部品を使っていてそうなっています。

オームの法則を使って考えると5vと0vの場合1A流れる抵抗は5オームです。
それより小さな抵抗ですと1Aを超えてしまいます。

超えるとどうなるでしょうか。
obnizのioは過電流検知といって、電気が流れすぎた場合に自動的に電流を停止する機能がありますので、
それが動いて自動的に止まったり、また動き出したりするようになっています。
詳しくは「過電流検知」のページをご覧ください。

フロートに戻す

一度出力したioから出力をやめるにはioX.end()を呼びます。

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

このようにすると、一瞬だけio0から5vが出力されて、そのあとすぐにフロートの状態に戻ります。



Next : IO: digital input

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