obniz1
Servo1
Signal - 0
Servo2
Signal - 1
Servo3
Signal - 2
Servo4
Signal - 3
------------
obniz2
Joystick1
SW - 0
VRy - 1
VRx - 2
Joystick2
SW - 3
VRy - 4
VRx - 5
ロボットアーム制御2<br />
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@3.x/obniz.js" crossorigin="anonymous" ></script>
Robot Arm obniz ID:<input type="text" id="oid1" style="width: 100px;"><br />
Controller obniz ID:<input type="text" id="oid2" style="width: 100px;"><br />
<button onClick="init();">実行</button><br />
STS:<div id="sts"></div>
<script>
var obniz1, obniz2;
var servo1, servo2, servo3, servo4;
var joystick1, joystick2;
var ag1 = 90;
var ag2 = 90;
var ag3 = 90;
var ag4 = 90;
function init() {
obniz1 = new Obniz($("#oid1").val());
obniz1.onconnect = async function () {
servo1 = obniz1.wired("ServoMotor", {signal:0});
servo2 = obniz1.wired("ServoMotor", {signal:1});
servo3 = obniz1.wired("ServoMotor", {signal:2});
servo4 = obniz1.wired("ServoMotor", {signal:3});
servo1.angle(ag1);
servo2.angle(ag2);
servo3.angle(ag3);
servo4.angle(ag4);
obniz2 = new Obniz($("#oid2").val());
obniz2.onconnect = async function () {
joystick1 = obniz2.wired("JoyStick", {sw:0, y:1, x:2});
joystick2 = obniz2.wired("JoyStick", {sw:3, y:4, x:5});
setInterval(function() {
main();
}, 200);
};
};
}
async function main() {
var x1 = Math.round(await joystick1.getXWait() * 10);
var y1 = Math.round(await joystick1.getYWait() * 10);
var x2 = Math.round(await joystick2.getXWait() * 10);
var y2 = Math.round(await joystick2.getYWait() * 10);
if (y1 < -1 || y1 > 1) ag1 += y1 / 2;
ag1 = adjustRange(ag1, 40, 140);
if (x1 < -1 || x1 > 1) ag2 -= x1 / 2;
ag2 = adjustRange(ag2, 60, 150);
if (x2 < -1 || x2 > 1) ag3 += x2 / 2;
ag3 = adjustRange(ag3, 60, 180);
if (y2 < -1 || y2 > 1) ag4 += y2 * 1;
ag4 = adjustRange(ag4, 5, 100);
$("#sts").html(ag1+":"+ag2+":"+ag3+":"+ag4);
await servo1.angle(ag1);
await servo2.angle(ag2);
await servo3.angle(ag3);
await servo4.angle(ag4);
}
function adjustRange(v, vmin, vmax) {
let ret = v;
if (v < vmin) ret = vmin;
if (v > vmax) ret = vmax;
return ret;
}
</script>
これでJoystickにてロボットアームをコントロールできます。