クリエイター手抜きプロジェクト[556]IoT obniz編 LEDを制御する(1)/古籏一浩

投稿:  著者:  読了時間:9分(本文:約4,000文字)



今回は、obnizでLEDを制御してみます。多くのプログラミング言語では、最初のサンプルプログラムとして、Hello Worldの文字を表示するのがよくありますが、IoT関係の場合も似たようなものがあります。それがLEDを点灯させる、というものです。Lチカと呼ばれることもあります。

obnizには基板上にはLEDがないので、自分でLEDを用意する必要があります。LEDには抵抗入りのものと、そうでないものがあります。ほとんどのものは抵抗が入っていないので、どうにかして抵抗をつける必要があります。

そこで活躍(?)するのが、ブレッドボードです。ブレッドボード上に抵抗とLEDを接続します。抵抗値は(電源電圧-順方向電圧降下)÷順方向電流で計算します。(以下の資料に詳しい計算式と説明があります。だいたい380Ω程度の抵抗を付けておけばよさそうです)

http://akizukidenshi.com/download/led-r-calc.pdf





抵抗を取り付けたり計算が面倒な人は、抵抗付きのLEDを使うとよいでしょう。抵抗なしのLEDをそのまま直結すると、一瞬光って焼き切れたりしてしまいますので注意してください。焼き切れてしまったらもう使えません(何らかのオブジェとして使うという手はあるかもしれません)

・抵抗内蔵5mm赤色LED(5V用) OSR6LU5B64A-5V
http://akizukidenshi.com/catalog/g/gI-12517/

さて、無事に準備ができたらobnizと抵抗を接続します。ここではLEDの+側(アノード)をio0、-側(カソード)をio11につなぎます。つないだらobnizの電源を入れます。

それではプログラムでLEDを点灯させてみます。点灯させる前にLEDを制御する
ためのI/O端子の設定を、obnizオブジェクトのwired()メソッドで行う必要が
あります。

LEDの場合、wired()の最初のパラメーターに"LED"の文字を指定します。2番目のパラメーターで+側(アノード)と-側(カソード)を指定します。それぞれanode、cathodeに端子番号を指定します。今回は+側をio0に、-側をio11にしてありますので、以下のようになります。

var myLED=obniz.wired("LED", {anode:0, cathode:11 });

LEDを制御するオブジェクトが生成されれば、あとはもう好きに制御することができます。まず、LEDを点灯させてみましょう。以下のプログラムを実行すると、LEDが点灯します。プログラムを終了すると、LEDの灯りは消えます。


<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.5.2/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<script>
var obniz = new Obniz("機器番号");
obniz.onconnect = function () {
var myLED=obniz.wired("LED", {anode:0, cathode:11 });
myLED.on();
}
</script>
</body>
</html>


それでは次に、定期的にLEDを点滅させてみましょう。普通は点灯、ウェイト、消灯、ウェイトの繰り返しになりますが、obnizには自動的に点滅処理をしてくれるblink()メソッドが用意されています。

パラメーターには点滅間隔(ウェイト)をミリ秒で指定します。1000なら1秒間隔で点滅します。パラメーターを省略した場合は、100ミリ秒(0.1秒)になります。以下のプログラムを実行すると1秒ごとにLEDが点滅します。


<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.5.2/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<script>
var obniz = new Obniz("機器番号");
obniz.onconnect = function () {
var myLED=obniz.wired("LED", {anode:0, cathode:11 });
myLED.blink(1000);
}
</script>
</body>
</html>


LEDの点灯、点滅をobnizデバイスのスイッチを使って制御することもできます。スイッチが押された、回された時のイベントを捕捉し処理を行います。

ボタンを押すと点滅し、ボタンを左右どちらかに回すと点滅が終了します。なお、点滅を終了するにはendBlink()メソッドを使います。

以下のプログラムを実行すると、最初にLEDが点灯します。ボタンを押すと点滅が始まります。ボタンを左右のどちらかに回すと点滅が終了します。


<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
<script src="https://unpkg.com/obniz@1.5.2/obniz.js"></script>
</head>
<body>
<div id="obniz-debug"></div>
<script>
var obniz = new Obniz("機器番号");
obniz.onconnect = function () {
var myLED=obniz.wired("LED", {anode:0, cathode:11 });
myLED.on();
obniz.switch.onchange=function(state){
if(state=="push"){ myLED.blink(1000); }
if((state=="left")||(state=="right")){ myLED.endBlink(); }
}
}
</script>
</body>
</html>


【古籏一浩】openspc@alpha.ocn.ne.jp
http://www.openspc2.org/

右手の親指が痛くなって、ほとんど使えない状態に。医者に行ったら腱鞘炎でしょう、と。腱鞘炎って何もしなくても痛いのか……。膏薬をはっても改善されず。

キーボードは元々一本指(中指)で入力するのでいいけど、絵の練習とかができない……。あと、意外なところで困ったのが車のエンジンのキーを回せないこと。これが一番大変。リッチな車はボタン押すだけみたいだけど、そういう車じゃないし。

何もしなければ直るのか。前に少し痛くなった時は一〜二日くらいで直ったけど今度は全然駄目……。まあ、仕方ない……。


・創って学ぼうプログラミング
https://news.mynavi.jp/series/makeprogram

・みんなのIchigoLatte入門 JavaScriptで楽しむゲーム作りと電子工作
https://www.amazon.co.jp/dp/4865940936
[正誤表]
http://www.openspc2.org/book/error/ichigoLatte/

・After Effects自動化サンプルプログラム 上巻、下巻
https://www.amazon.co.jp/dp/4844397591
https://www.amazon.co.jp/dp/4844397605

・IchigoLatteでIoT体験
https://www.amazon.co.jp/dp/B06X3X1CHP
http://digiconcart.com/dccartstore/cart/info/2561/218591

・みんなのIchigoJam入門 BASICで楽しむゲーム作りと電子工作
http://www.amazon.co.jp/dp/4865940332/

・Photoshop自動化基本編
http://www.amazon.co.jp/dp/B00W952JQW/

・Illustrator自動化基本編
http://www.amazon.co.jp/dp/B00R5MZ1PA/

・4K/ハイビジョン映像素材集
http://www.openspc2.org/HDTV/

・クリエイター手抜きプロジェクト
http://www.openspc2.org/projectX/