obnizでRCサーボモーターを使用してみましょう!
接続
サーボモーターはobnizのパーツライブラリにあり、 ServoMotor で詳細を見られます。
まずは、サーボモーターをobnizに接続しましょう。
グランド、電源、信号線の3本線で接続し、信号線を主にPWMで制御するものです。
繋いでみましょう。
obnizのio0,1,2にそれぞれサーボモーターのグランド、電源、信号線をつなぎます。
- io0 servomotor gnd
- io1 servomotor vcc
- 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のときのようにボタンを使って、押したら決めた角度までモーターを動かすこともできます。ぜひチャレンジしてみてください!