obniz フルカラーLEDライトを操作するサンプルコード
■メイン処理
<script>
var obniz = new Obniz('[ID]');
//消灯を押下した時の状態を0・1で切替
var switchFlag = 0;
obniz.onconnect = async function () {
//パーツライブラリに登録してwiredによる呼び出しを可能にする
Obniz.PartsRegistrate(MyLed);
//端子0・2・3はアノード(+極) 1はカソード(-極)
var led = obniz.wired("MyLed", { red:0, cathode:1, blue:2, green:3 } );
//赤点灯
$('#red_on').on('click', function() {
led.redOn();
});
//青点灯
$('#blue_on').on('click', function() {
led.blueOn();
});
//緑点灯
$('#green_on').on('click', function() {
led.greenOn();
});
//順に全て点灯
$('#all_on').on('click', async function() {
var res = switchFlag;
console.log('全点灯ON時のswitchFlag:' + res);
//デバイス接続中は繰り返す
while (obniz.connectionState === 'connected') {
try {
console.log('条件分岐時のswitchFlag:' + switchFlag);
//消灯が押下されたかどうかの判定
if (res != switchFlag) {
switch (switchFlag) {
case 0:
switchFlag = 1;
console.log('switchFlagを0に変更');
break;
case 1:
switchFlag = 0;
console.log('switchFlagを1に変更');
break;
}
console.log('全点灯解除');
break;
}
//赤青緑の順にLEDを点灯
led.allOn();
// 通信確認
await obniz.pingWait();
} catch(e) {
console.log('error!!');
}
}
});
//消灯
$('#all_off').on('click', function() {
led.allOff();
//全点灯時の消灯の為に消灯を押下される度にフラグを切り替える
switch (switchFlag) {
case 0:
switchFlag = 1;
break;
case 1:
switchFlag = 0;
break;
}
});
};
</script>
自作パーツ
"use strict";
/**
* @packageDocumentation
* @module Parts.MyLed
*/
class MyLed {
constructor() {
<!-- キー -->
this.keys = ['red', 'cathode', 'blue', 'green'];
<!-- 必須キー -->
this.requiredKeys = ['red', 'cathode', 'blue', 'green'];
}
<!-- 部品名 -->
static info() {
return {
name: 'MyLed',
};
}
<!-- obniz.wiredが呼ばれた時に呼ばれる関数 -->
wired(obniz) {
this.obniz = obniz;
this.io_red = obniz.getIO(this.params.red);
this.io_red.output(false);
this.io_cathode = obniz.getIO(this.params.cathode);
this.io_cathode.output(false);
this.io_blue = obniz.getIO(this.params.blue);
this.io_blue.output(false);
this.io_green = obniz.getIO(this.params.green);
this.io_green.output(false);
}
<!-- 赤点灯 -->
redOn() {
this.io_red.output(true);
}
<!-- 青点灯 -->
blueOn() {
this.io_blue.output(true);
}
<!-- 緑点灯 -->
greenOn() {
this.io_green.output(true);
}
<!-- 順に全て点灯 -->
allOn() {
this.io_red.output(true);
obniz.wait(1000);
this.io_red.output(false);
this.io_blue.output(true);
obniz.wait(1000);
this.io_blue.output(false);
this.io_green.output(true);
obniz.wait(1000);
this.io_green.output(false);
}
<!-- 消灯 -->
allOff() {
this.io_red.output(false);
this.io_blue.output(false);
this.io_green.output(false);
}
}
<!-- キーをthis.paramsとして使用可能にする -->
if (typeof module === 'object') {
module.exports = MyLed;
}