Raspberry PiでLEDを制御する(Lチカ)

参考

http://qiita.com/toshihirock/items/880a43ff4a5506b629c5

前提

Raspberry Pi 2 +
(3でもいけるはず)

Raspberry PiにLEDを接続する

Raspberry Piの電源が落ちている状態で実施すること。

ブレッドボードにLEDをさす。

(長い方の足が+になるのでどちらの足が長い方か覚えておく。)

※ブレッドボードの使い方は以下参照

http://bbradio.sakura.ne.jp/guide1/guide1.html

ジャンパーピンでRaspberry Piとつなぐ。
  • 足が長い方とGPIO18
  • 足が短い方とGround

こんな感じ。抵抗はあった方がより良い。

※PIN配置は以下参照

http://3.bp.blogspot.com/-Ku5ebiKuzUY/VQDt2QcUllI/AAAAAAAAASA/wh6XOwIBQDw/s1600/raspberrypi_gpio_pinassign.png

コマンドでLEDを光らせる

Raspberry Piの電源を入れる。

GPIO18を使いますよ、と教えてあげる。

出力

使い終わったら解放。

まずは最初の状態を確認
$ ls -la /sys/class/gpio/
gpio18は表示されてないので準備できていない。

準備
$ echo 18 > /sys/class/gpio/export

もっかい確認
$ ls -la /sys/class/gpio/
gpio18が出力されることを確認。

GPIO18を出力信号として利用することを書き込む
$ echo out > /sys/class/gpio/gpio18/direction

これで準備OK。

ON
$ echo 1 > /sys/class/gpio/gpio18/value
光る!

OFF
$ echo 0 > /sys/class/gpio/gpio18/value

使い終わったらこのコマンド
$ echo 18 > /sys/class/gpio/unexport

解放されたことを確認
$ ls -la /sys/class/gpio/
GPIO18がないことを確認

node.jsで制御する

node.jsのセットアップ方法は別エントリー参照。

sleepを使えるようにする。
$ npm install sleep
nodejsのコードを書く。
$ vi led.js
var fs = require('fs');
var sleep = require('sleep');
var pin = 18;

fs.writeFileSync('/sys/class/gpio/export', pin);
fs.writeFileSync('/sys/class/gpio/gpio' + pin + '/direction', 'out');

console.log("ON");
fs.writeFileSync('/sys/class/gpio/gpio' + pin + '/value', 1);
sleep.sleep(5);

console.log("OFF");
fs.writeFileSync('/sys/class/gpio/gpio' + pin + '/value', 0);

fs.writeFileSync('/sys/class/gpio/unexport', pin);
実行
$ sudo node led.js

Raspberry PiにNode.js実行環境を構築

nodeのバージョン管理するためのnodebrewをインストール

$ curl -L git.io/nodebrew | perl - setup
出力された"export PATH~"の行をコピーする。

ログインしたときにパスに追加されるようにする。
$ vi ~/.bashrc
先ほどコピーした行を最終行に張り付ける。

設定を反映
$ source ~/.bashrc

確認
$ nodebrew help

Node.jsとnpmをインストール

Node.jsのstableをインストール
$ nodebrew install-binary stable

デフォルトを設定
$ nodebrew alias default v6.6.0
ここで指定するバージョンは前の手順でインストールされたstableのバージョン。

デフォルトを使用する宣言
$ nodebrew use default

確認
$ node -v
v6.6.0

$ npm -v
3.10.3

sudoでつかえるようにする。

$ sudo node -v を実行したらcommand not foundになったので、rootユーザのPATH(ここでは/usr/bin)にリンクを張ってあげる。

(ならなかったらやらなくてもいいんじゃないかな。)

$ which node
/home/pi/.nodebrew/current/bin/node

$ sudo ln -s /home/pi/.nodebrew/current/bin/node /usr/bin
$ sudo ln -s /home/pi/.nodebrew/current/bin/npm /usr/bin

$ sudo node -v
$ sudo npm -v
使えることを確認する。