Document
Everything about obniz

Lesson: Servo Motor

今回はサーボモーターを使用します。

接続

まずは、サーボモーターを接続してみましょう。 obnizではパルス幅制御のサーボモーターをServoMotorパーツから制御できます。 グランド、電源、信号線の3本線で接続し、信号線を主にPWMで制御するものです。

まずは繋いでみましょう。 obnizの0,1,2にそれぞれサーボモーターのグランド、電源、信号線をつなぎます。 [ここに画像] 以上です。

スライダ

ページにスライダを追加して、それに合わせてサーボモーターを動かしてみましょう。

ページにスライダ(<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() {
  var val = $("#slider").val();
});

これでidがsliderのものが動かされたら少し動いただけでもこの関数が呼ばれます。 関数の中で現在の値を読み取るval()を読んで値を変数valに取り込んでいます。 現在の位置によって0~180になります。

サーボモーターを使う

次に、サーボモーターですがServoMotorを使ってこのように操作できます。

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

servo.angle(90.0); // half position

0, 1, 2はobnizのピンの番号で、それぞれサーボモーターのグランド、電源、信号です。 servo.angle(90)はサーボモーターの位置を90度にするということです。 0~180で指定できます。 ということはスライダを0~180にしたのはちょうどよかったですね! 動かされた時にこのangle()をつかってサーボモーターの角度を変えられそうです。 完成した全体のプログラムはこのようになります。

<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())
  });
}
</script>

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

もちろん前回のLEDのときのようにボタンを押したら決めた角度まで変えることも簡単ですが、 スライダをつかうとより面白いですよね!