Lesson: Servo Motor

今回は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にしています。(なんでも良いです。あなたの好きなキーワードで)
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に取り込んでいます。
位置によって0~180となるはずです。
だからminとmaxを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.io/js/jquery-3.2.1.min.js"></script>
  <script src="https://unpkg.com/obniz@1.14.1/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のときのようにボタンを押したら決めた角度まで変えることも簡単ですが、
スライダをつかうとより面白いですよね!