部品を使う:サーボモーターを回す

obnizでRCサーボモーターを使用してみましょう!

接続

サーボモーターはobnizのパーツライブラリにあり、 ServoMotor で詳細を見られます。

まずは、サーボモーターをobnizに接続しましょう。
グランド、電源、信号線の3本線で接続し、信号線を主にPWMで制御するものです。

繋いでみましょう。
obnizのio0,1,2にそれぞれサーボモーターのグランド、電源、信号線をつなぎます。

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

下の写真のような感じになるはずです。

スライダ

Web上のスライダ(つまみ付きの動かせる部品)からサーボが動かせたら最高にイケてないですか!?

スライダはこんなタグです: <input type="range">まずはスライダをHTMLに追加します。

<input id="slider" type="range"  min="0" max="180" />

これをbodyに追加します。
input type="range"というのが、スライダであることを意味しています。
idはsliderにしています。(idは何でも良いです。あなたの好きなキーワードでも!)
minとmaxは最小値と最大値を指定しています。
サーボモーターを0〜180度で動かしたいので、0〜180になるように指定しています。
これで、スライダを動かした時に0〜180の値が取得できます。

次にこれを動かした時にサーボモーターを動かすようにしましょう。
スライダが動かされた時に、どこまで動かされたか知りたいですよね。以下のように書くことができます。

$("#slider").on('input', function() {
  // this function will be called when someone move a slider.
  var val = $("#slider").val();
});

これで、idがsliderのものが少しでも動かされたら、この関数が呼ばれます。
この関数の中で現在の値を読み取る$("#slider").val() で値を変数valに取り込んでいます。
さきほどminとmaxを0と180に設定したので、スライダの位置によってvalは0〜180となるはずです。

サーボモーターを使う

次に、サーボモーターを動かすプログラムですが、ServoMotorを使ってこのように操作できます。

var servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});

servo.angle(90.0); // half position

servo.angle(90)はサーボモーターの位置を90度にするということです。
0~180で指定できます。
スライダを動かされた時にこのangle()をつかってサーボモーターの角度を変えられそうです。
完成した全体のプログラムはこのようになります。

<!-- 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>ServoMotor</h1>
<input id="slider" type="range"  min="0" max="180" />

<script>
var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  var servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
  $("#slider").on('input', function() {
    servo.angle($("#slider").val())
  });
};

obniz.onclose = async function(){
   $("#slider").off('input');
};
</script>
</body>
</html>

これをプログラム画面にコピーしてobnizのidを変えて実行すると
画面にスライダが出てくると思います。
動かしてみるとそれに合わせてサーボモーターが回転しませんか?

もちろん前回のLEDのときのようにボタンを使って、押したら決めた角度までモーターを動かすこともできます。ぜひチャレンジしてみてください!