Document
Everything about obniz

Lesson: Two obniz integration

obnizにつないだボリュームで別のobnizのサーボモーターを動かす

接続

今回は2つのobnizを使います。 1つのobnizにボリュームをつなぎます。 そしてその値で別のobnizにあるサーボモーターを回してみましょう。

まず、1つめのobniz(obnizAとします)の0,1,2にボリュームをつなぎます。 [ここに図]

そして、2つめのobniz(obnizBとします)の0,1,2にサーボモーターをつなぎます。 [ここに図]

プログラム

今までは1つのobnizにつなげばよかったのですが、今回は2つのobnizそれぞれに接続しなければなりません。 シンプルに行くなら、1つめのobnizの接続に成功してから2つめにつなぎに行くとトラブルが少なくて良いです。 obnizAを0000-0000として、obnizBを1234-5678とするならば

var obnizA = new Obniz("0000-0000");
obnizA.onconnect = async function () {
  var obnizB = new Obniz("1234-5678");
  obnizB.onconnect = async function() {
    // integration here 
  }
}

このようにしてはどうでしょうか。 0000-0000の接続に成功した後に1234-5678の接続を行っています。 そして1234-5678の接続に成功した後に色々なことを書くようにしています。 一番簡単です。 しかし、obnizAの接続が切れて再接続するとobnizBを再生成する問題があります。 今回はその件は無視していきましょう。

さて、integration hereのところにobnizAのボリュームでobnizBのサーボモーターを動かすプログラムを書いてみましょう。 ここは前回やったプログラムと全く同じです。 違うのはservoのwiredがobnizBになっているところぐらいです。

<div id="obniz-debug"></div>
<h1>Dial to Servo(two obniz)</h1>

<script>
var obnizA = new Obniz("OBNIZ_ID_HERE");
obnizA.onconnect = async function () {
  var obnizB = new Obniz("OBNIZ_ID_HERE");
  obnizB.onconnect = async function(){
    var meter = obnizA.wired("PotentionMeter", {pin0:0, pin1:1, pin2:2});
    var servo = obnizB.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
    meter.onChange(function(position) {
      servo.angle(position * 180);
    }); 
  }
}
</script>

このようなプログラムになります。 これをプログラム画面にコピーして実行してみましょう。 どうでしょう、遠く離れた別のobnizのサーボモーターを動かせると思います。