obniz SDK for javascript
obniz やobnizOSをobniz websocket APIを使いJavaScriptから操作するためのsdkです。
ドキュメント
関係するサイト
obniz.js内 Example集
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://unpkg.com/obniz/obniz.js"></script>
</head>
<body>
<input id="text">
<button id="send">send</button>
<script>
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
// embed parts
obniz.display.print("hello!");
obniz.switch.onchange = function(state) {
$('body').css({
"background-color" : (state == "push") ? "#F00" : "#FFF"
});
}
// parts library
var servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
servo.angle(90);
// peripherals
var uart = obniz.getFreeUart();
uart.start({tx: 5, rx: 6, baud:9600});
$('#send').click(function () {
uart.send($("#text").val());
});
obniz.io7.drive("5v")
obniz.io7.output(true)
obniz.io8.pull("3v");
obniz.io8.drive("open-drain");
obniz.io8.output(false);
}
</script>
</body>
</html>
import * as Obniz from 'obniz'
const obniz = new Obniz("0000-0000");
obniz.onconnect = async () => {
obniz.display.print("hello!");
obniz.switch.onchange = (state: string) => {
console.log(state);
}
const servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
servo.angle(90);
}
次のscriptタグをhtmlに組み込むだけです
<script src="https://unpkg.com/obniz/obniz.js"></script>
npmでインストールします。
npm install obniz
そしてjsの中でrequireして下さい。
const Obniz = require('obniz');
obnizデバイスをobniz idを使ってインスタンス化します。
そして接続が完了した時に呼ばれる関数をセットします。
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
}
接続完了後にobnizデバイスを遠隔で操作できます。
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
obniz.display.print("hello!");
obniz.switch.onchange = function(state) {
if (state === "push") {
obniz.display.print("Button Pressed");
}
}
}
obniz.onloop = async function () {
// 接続中は繰り返し呼ばれる関数
}
obniz.onclose = async function () {
// 切断時に呼ばれる関数
}
IOペリフェラルも利用可能です。詳しくはそれぞれのペリフェラルドキュメントを見てください。
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
obniz.io0.drive("5v");
obniz.io0.output(true)
obniz.io1.pull("3v");
obniz.io1.drive("open-drain");
obniz.io1.output(true);
obniz.io2.drive("3v");
obniz.io2.output(true);
obniz.ad3.start(function(voltage){
console.log("changed to "+voltage+" v")
});
var pwm = obniz.getFreePwm();
pwm.start({io: 4});
pwm.freq(1000);
pwm.duty(50);
var uart = obniz.getFreeUart();
uart.start({tx: 5, rx: 6, baud:9600});
uart.onreceive = function(data, text) {
console.log(data);
}
uart.send("Hello");
}
パーツライブラリはobniz.jsに含まれています。ドキュメントはこちらで
obniz Boardにつながれた部品をつかうにはpartsをonconnect関数の中でインスタンス化します。どんな関数があるかなども obniz Parts Library で確認できます。
例えば LED https://obniz.com/sdk/parts/LED
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
var led = obniz.wired("LED", {anode:0, cathode:1});
led.blink();
}
HC-SR40(distance measure) https://obniz.com/sdk/parts/HC-SR04
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
var hcsr04 = obniz.wired("HC-SR04", {gnd:0, echo:1, trigger:2, vcc:3});
hcsr04.unit("inch");
hcsr04.measure(function( distance ){
console.log("distance " + distance + " inch")
})
}
HTML上のUIとハードウェアの連携
<input id="slider" type="range" min="0" max="180" />
<script src="https://unpkg.com/obniz/obniz.js"></script>
<script>
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
var servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
$("#slider").on('input', function() {
servo.angle($("#slider").val())
});
}
</script>
DropboxやTwitterなどのwebサービスとの連携
// save data from obniz to dropbox
var obniz = new Obniz("0000-0000");
obniz.onconnect = async function () {
var dbx = new Dropbox({ accessToken: '<YOUR ACCESS TOKEN HERE>' });
var button = obniz.wired("Button", {signal:0, gnd:1});
button.onchange = function(pressed){
if (pressed) {
dbx.filesUpload({path: '/obniz.txt', contents: "[Button Pressed]\n" + new Date(), mode: 'overwrite' });
}
};
}
obniz Boardにつながれたサーボモーターを別のobniz Boardにつながれたつまみから操作。
// control servomotor from potention meter which connected to another obniz.
var obnizA = new Obniz("0000-0000");
obnizA.onconnect = async function () {
var obnizB = new Obniz("0000-0001");
obnizB.onconnect = async function(){
var meter = obnizA.wired("Potentiometer", {pin0:0, pin1:1, pin2:2});
var servo = obnizB.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
meter.onchange =function(position) {
servo.angle(position * 180);
};
}
}
See LICENSE.txt