obniz Boardにつないだボリュームで別のobniz Boardにつながったサーボモーターを動かしてみましょう。
接続
今回は2つのobnizを使います。
1つのobnizにボリュームをつなぎます。
そしてその値をもとに別のobnizにつながったサーボモーターを回してみましょう。
まず、1つめのobniz(obnizAとします)の0,1,2にボリュームをつなぎます。
そして、2つめのobniz(obnizBとします)の0,1,2にサーボモーターをつなぎます。
- io0 servomotor gnd
- io1 servomotor vcc
- 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さえあればサーボモーターを違う国から動かすこともできます!