Espruino setIntervalでLEDを点滅させてみる

Espruino Advent Calender 6日目です。
今日はEspruinoにLEDをつなげてsetInterval()でLチカしてみます。2日目とかぶってますが気にしないでください。書いてから気づきました。
LチカというのはLEDをチカチカ点滅させることで、はじめて電子工作をするときによく動作確認として試されます。
ソフトウェア開発でのHello Worldみたいなものですね。

ここではEspruinoに市販のLEDを配線してLチカしてみます。
Espruinoに搭載されているLEDでやってもいいんですが、せっかくなので電子工作っぽい感じを出してみます。

用意するもの

Espruino Board意外に用意するものは以下です。
秋月電子千石電商などの電子パーツ店によく売ってあるならだいたいなんでもいいんですが、具体例としてリンクを貼っておきます。

* LED
* ブレッドボード
* ジャンパワイヤー(2本 赤、黒)

Espruinoはピンヘッダまたはピンソケットがハンダ付けされた状態を前提としています。
ジャンパワイヤ購入の際はワイヤのオスメス構成をよく確認してから購入してください。

例えばEspruinoにピンソケット(メス)を取り付けている場合、ジャンパワイヤは(オス-オス)でブレッドボードと結線できます。

Espruino[メス][オス]---[オス][メス]ブレッドボード

というかたちです。

Espruinoにピンヘッダ(オス)を取り付けている場合、ワイヤは(メス-オス)でブレッドボードと結線と結線できます。

Espruino[オス][メス]---[オス][メス]ブレッドボード

というかたちです。

その他注意すべき点は4日目の記事にも書いてあるので参考にしてください。

LEDをブレッドボードに取り付ける

LEDをブレッドボードに取り付けます。
まず、ブレッドボードを横(長いほうを水平)におきます。

f:id:bathtimefish:20141206211111j:plain

次にブレッドボード上のたくさん空いている穴にLEDの足を挿します。
ここではLEDの足の長い方を左、短い方を右にしてブレッドボードに挿し込みます。

f:id:bathtimefish:20141206211158j:plain

LEDにはプラス極とマイナス極があります。
足の長いほうがプラス極、短いほうがマイナス極です。上の写真では左のほうがちょっと長いですね。左がプラス極です。
刺すときにどちらがプラスでどちらがマイナスかを覚えておきましょう。
ワイヤを刺すときに必要です。

f:id:bathtimefish:20141206211214j:plain

ブレッドボードを横に置いて、LEDの足を水平方向に挿しました。
これにも意味があります。
ブレッドボード内に流れる電気の方向には決まったルールがあります。
LEDを垂直方向に挿しても光らないので注意してください。

ジャンパワイヤをとりつける

ジャンパワイヤはLEDを挿した穴の真下の穴に挿し込みます。
LEDのプラス側(左)には赤いワイヤ、マイナス側(右)には黒いワイヤを挿します。

f:id:bathtimefish:20141206211331j:plain

実はワイヤは何色でもいいんですが、Espruinoにワイヤを挿すときにプラスとマイナスを間違えないようにこうしています。
電子工作ではプラスを赤、マイナスを黒で表現することが多いので、習慣にしておくといいでしょう。

Espruinoと結線する

ブレッドボードに取り付けたワイヤをEspruinoに挿します。
念のためEspruinoからUSBケーブルを抜いて電源が入っていない状態にしておきましょう。

まず黒いケーブル(LEDのマイナス側)をEspruino BoardのGND(PINOUTのボード写真の一番左下のピン)に取り付けます。
次に、赤いケーブル(LEDのプラス側)をEspruino BoradのA8(PINOUTの右上から6番目のピン)に取り付けます。

f:id:bathtimefish:20141206211445j:plain

A8はEspruino Boardにいくつかあるデジタル入出力ピンのひとつです。
今回はこのA8ピンに電流を流したり消したりすることで、LEDを点滅させます。

JavaScriptを書く

LEDを点滅させるためのJavaScriptコードを書きます。
EspruinoにはEspruino IDEという開発環境が用意されています。
ここではEspruino IDEのエディタにコードを書いて、Espruinoに転送して実行させてみます。

ソースコードは以下です。

 setInterval()を使って1秒間隔でコールバック内の処理が繰り返し実行されるようにします。
on = !on; の部分で onをtrue, falseと交互に変更しています。
A8.write(on); でLEDに電圧をかけたり電圧を落としたりしています。
A8.write(true); でLEDに電圧がかかり点灯、A8.write(false); でLEDの電圧が落ちて消灯となります。

Lチカを実行する

ソースコードをEspruino Boardに転送して実行します。
まず、USB-micro USBケーブルをPCにつなぎ、micro USB端子側をEspruino Boardに接続します。

次にEspruino IDE左上のConnectボタンをクリック。接続可能なポートの一覧が表示されるのでEspruinoのttyを選択します。
ポートは /dev/tty.usbmodem**** となっています。

f:id:bathtimefish:20141206215810p:plain

正常に接続されると、IDE左側のコンソールパネルにプロンプトが表示されます。

f:id:bathtimefish:20141206220025p:plain


この状態で、IDE中央の一番下の Send to Espruino ボタンをクリックします。

f:id:bathtimefish:20141206215904p:plain

正常に転送されると、1秒間隔でLEDが点滅しはじめます。

f:id:bathtimefish:20141206212012j:plain

うまくいったでしょうか。

まとめ

ArduinoでのLチカは

```
void loop()
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}
```

みたいにloop関数の中にdelay()を仕込んでやるわけですが、EspruinoはJavaScriptなのでsetIntervalのコールバックで処理します。
ちょっとプログラミングの感覚が違っていておもしろいんじゃないでしょうか。

Espruinoを購入したらまずはこのLチカからはじめてみてください。