obniz入門レッスン(html Lチカ編）

はじめてのobniz、はじめてのQiita投稿になります。
平成の最後にobnizをやってみて、新しい時代に備えようと思います。

obnizのサイトの [すべてのレッスン](https://obniz.io/ja/lessons) にあるようにこのボードはNode.jsやpythonからも制御できるようですが、
まずは取り掛かりとしてhtmlでやってみます。

[obniz入門レッスン(html)](https://obniz.io/ja/lessons/lessons/quickstart) を選択して、そこに示されている手順通りにやってみることにします。
あと、2019/04/19の [技術書典6](https://techbookfest.org/event/tbf06) で販売されていた「Web技術でIoTをしよう」も参考にします。
リサーチ・アンド・デベロップメント、R&Dの８割はリサーチのほうに費やす！！
![Web技術でIoTをしよう.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/177dcb49-cc6b-9916-d4b8-13f7159ed03f.png)
#obnizのセットアップ
obnizeにmicroUSBを挿すとWiFiを探し始めます。
![wifi_01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/e1cfbe55-2f9d-5fdd-6e46-7e52589d88a6.png)
スイッチはここだよと教えてくれます。
![wifi_02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/ee4103f8-ef77-add6-1bd2-0fc9e698e74b.png)
スイッチを押すとWiFiのリストが出てくるので、スイッチを左右に倒しながら接続したいWiFiを選択します。
![wifi_03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/b8821966-568e-57a6-d1a8-4d1bf4dbdb96.png)
WiFiを選択するとパスワードを聞いてきますので、スイッチを左右に倒しながら文字を一文字づつ選択確定して
![wifi_04.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/e8bb42bd-49dc-63a1-0705-1c69cc401936.png)
最後に END を選択確定してパスワードの入力を終了します。
![wifi_05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/f3801c78-0479-0c65-541f-d592f3602219.png)
接続を完了すると、QRコードが表示されます。右側の75174418というのは obnize id というようです。
WiFiに接続する前から表示されていたので、ボード固有のIDだと思われます。
![wifi_06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/ad54efe9-a560-62c2-46fc-65ad3e66d6c5.png)
<https://obniz.io/ja/program> にアクセスすると obnize id を聞いてきます。
![obniz_program_01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/2e20c20c-1e34-fc6a-4d46-b452e05c1948.png)
#プログラムを動かしてみる
obnize id を入力すると、ソースが記載された状態でhtmlエディターが開かれました。
![obniz_program_02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/9f08c8a0-a20e-a605-8705-201b263d4161.png)
ソースはこんなふうになっています。

```
<html>
<head>
  <meta charset="utf-8">
  <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@2.0.2/obniz.js" crossorigin="anonymous"></script>
</head>
<body>

<div id="obniz-debug"></div>
<h1>obniz instant HTML</h1>
<button id="on">ON</button>
<button id="off">OFF</button>
<div id="print"></div>

<script>
var obniz = new Obniz("7517-4418");
obniz.onconnect = async function () {

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

  obniz.display.clear();
  obniz.display.print("Hello World");

  obniz.switch.onchange = function(state) {
    $('#print').text(state);
    obniz.display.clear();
    obniz.display.print(state);
  }  

  $('#on').click(function () {
      led.on();
      obniz.display.clear();
      obniz.display.print("ON");
  });
  $('#off').click(function () {
      led.off();
      obniz.display.clear();
      obniz.display.print("OFF");
  });
}

</script>
</body>
</html>
```

とりあえず、ためしにブラウザの「実行」ボタンを押してみます。
![obniz_program_03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/9a4725d8-e08a-55ec-b88e-68051dfc88b6.png)
obnizのディスプレイに "Hello World"が表示されました。
![obniz_program_04.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/14f28830-a8f9-ea27-ef69-360ee237ae47.png)
スクリプトのこの箇所が働いているようです。

```
  obniz.display.clear();
  obniz.display.print("Hello World");
```

ブラウザの「オン」「オフ」ボタンを押すと
![obniz_program_05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/a131e153-2a2c-c482-e76c-0efcb1ec8d2f.png)
obnizのディスプレイはそれぞれこのようになり、
![obniz_program_06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/ea006138-8cd8-6e27-bceb-a24ebba4a3dd.png)
![obniz_program_07.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/85e8f5d2-d98b-c5d6-9767-667406f4971b.png)
スクリプトのこの箇所が働いているようです。

```
  $('#on').click(function () {
      led.on();
      obniz.display.clear();
      obniz.display.print("ON");
  });
  $('#off').click(function () {
      led.off();
      obniz.display.clear();
      obniz.display.print("OFF");
  });
```

#LEDを点灯させてみる
ブラウザの「オン」ボタンを押すとled.on()、「オフ」ボタンではled.off()となるようようなので、
次にLEDをチカチカさせるにはどうすればいいか、やってみます。

LEDについては、obnizサイトの [JavaScript SDK パーツライブラリ](https://obniz.io/ja/doc/obnizjs_parts) の情報をたどって
秋月電子通商で抵抗内蔵のこれを買っていました。
![LED_01.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/17e455f6-d239-ea9f-98fc-0e56e372e3aa.png)
![LED_02.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/82a7d551-b602-6514-54c0-3be12e935ebb.png)


スクリプトの最初のところで

```
  var led = obniz.wired("LED", { anode:0, cathode:1 } );
```

となっています。


ウィキペディアの [発光ダイオード](https://ja.wikipedia.org/wiki/%E7%99%BA%E5%85%89%E3%83%80%E3%82%A4%E3%82%AA%E3%83%BC%E3%83%89) を見ると
足の長いほうが＋でアノード、短いほうが－でカソードということなので間違いはないと思いますが、
いちおう [５ｍｍ青色ＬＥＤ　ＯＳＢ５ＳＡ５Ｂ６４Ａのデータシート](http://akizukidenshi.com/download/ds/optosupply/OSB5SA5B64A.pdf) を確認して、
足の長いほうがAnode、短いほうがCathodeと記載されていることを確認しました。

ここまで確認したところで、obnizの入門サイトの [LEDをつける](https://obniz.io/ja/lessons/lessons/lessons_turning_on_led) にちゃんと写真付きで説明されていることを確認しました。なぁんだ、書いてありました。

つまり、こうすればいいようです。
![LED_03.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/6539f5a1-0771-0017-7982-ec6daf30de1e.png)
抵抗が入っているので、そのまま挿しても大丈夫でしょう。たぶん。。。
![LED_04.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/78e1ac98-de7b-6343-86fe-809113900d95.png)

ブラウザの「オン」「オフ」ボタンを押すと
![obniz_program_05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/a131e153-2a2c-c482-e76c-0efcb1ec8d2f.png)
LEDが灯いたり消えたりします。成功です。
![LED_05.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/e9f472e0-2b8b-0ac9-3cd5-c5243a2998d2.png)
![LED_06.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/5180e07f-c986-97df-36ab-448c792469cb.png)

#こんどはLEDをチカチカさせてみる
でもこれだと「点灯」「消灯」でチカチカにはならないのでソースに手を入れてみます。
ボタンを追加して

```
<button id="tikatika">チカチカ</button>
```

ボタンが押されたときの処理を追加します。
OFF と ON の間にディレイを入れるのは面倒そうなのでこのまま動かしてみます。

```
  $('#tikatika').click(function () {
    for(var i = 1; i < 10; i++){
      led.off();
      obniz.display.clear();
      obniz.display.print("OFF");
      led.on();
      obniz.display.clear();
      obniz.display.print("ON");
    }
  });
```

ソースの全体はこうなります。

```
<html>
<head>
  <meta charset="utf-8">
  <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@2.0.2/obniz.js" crossorigin="anonymous"></script>
</head>
<body>

<div id="obniz-debug"></div>
<h1>obniz instant HTML</h1>
<button id="on">ON</button>
<button id="off">OFF</button>
<button id="tikatika">チカチカ</button>
<div id="print"></div>

<script>
var obniz = new Obniz("7517-4418");
obniz.onconnect = async function () {

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

  obniz.display.clear();
  obniz.display.print("Hello World");

  obniz.switch.onchange = function(state) {
    $('#print').text(state);
    obniz.display.clear();
    obniz.display.print(state);
  }  

  $('#on').click(function () {
      led.on();
      obniz.display.clear();
      obniz.display.print("ON");
  });
  $('#off').click(function () {
      led.off();
      obniz.display.clear();
      obniz.display.print("OFF");
  });
  $('#tikatika').click(function () {
    for(var i = 1; i < 10; i++){
      led.off();
      obniz.display.clear();
      obniz.display.print("OFF");
      led.on();
      obniz.display.clear();
      obniz.display.print("ON");
    }
  });
}

</script>
</body>
</html>
```

うまくいきました。チカチカしてます。（動画じゃなくてごめんなさい）
![LED_07.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225878/ac74bb7c-668a-e386-79de-20ca22002f7d.png)

#まとめ
・obniz の最初の一歩、できました。
・Qiita の初投稿、できました。
・Qiita の投稿を考えなければ obniz だけだと簡単にできることが分かりました。
　→ obniz すごい。
・Qiita に投稿している先輩方は作ることとQiitaに投稿することの両方をやってて、すごいと思いました。
　→ Qiita に投稿に投稿している人たち、すごい。
・これからもっとやっていきたい。