2つのobniz Boardを連携

obniz Boardにつないだボリュームで別のobniz Boardにつながったサーボモーターを動かしてみましょう。

接続

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

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

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

  1. io0 servomotor gnd
  2. io1 servomotor vcc
  3. io2 servomotor signal

下の写真のようになります。

プログラム

今までは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のサーボモーターを動かすプログラムを書いてみましょう。
ここは前回のプログラムとほとんど同じです。
obnizAとobnizBの二つが存在する点に注意しましょう。

 <!-- HTML Example -->
<html>

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <script src="https://obniz.com/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@3.3.0/obniz.js"></script>
</head>
<body>

<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("Potentiometer", {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>
</body>
</html>

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

インターネット経由ですからこの2つは近くになくてもいいのです、Wi-Fiさえあればサーボモーターを違う国から動かすこともできます!