ご挨拶
どうも今晩は、Xcoo, Inc.にてインターン生をしていますBOXPです。
大分前にRaspberry Pi Bを購入した僕ですが、9月頃になれない手つきで半田ごてを握り、モーターのドライブ回路を作り繋いだ結果、思いっきり回路を焼いてしまい壊してしまいました…
その後、まるで焼かれたRaspberry Piの意思を継ぐかのようにRaspberry Pi B+が発売されたので早速購入しました
既出の様な気もしますが、Clojureでledを点滅させるまでのあれこれをまとめておきます
下準備
※既にRaspbian・WiringPiがRaspberry Piにインストールされているものとして書きます
(インストール方法はRaspberry Pi Documentationが参考になります)
Clojureを実行するために以下のパッケージをインストールしましょう
- oracle-java7-jdk
- leiningen
REPLを立ち上げる
作業用のディレクトを準備します
cd ~/
mkdir -p program/clojure
cd program/clojure
lein new raspi-test
手前味噌ではありますが、簡素なライブラリを作りましたのでproject.cljの:dependenciesに追記します
ついでにcore.asyncも追記します
[raspberrypi "0.1.0-SNAPSHOT"]
[org.clojure/core.async "0.1.346.0-17112a-alpha"]
REPLを立ち上げます
lein trampoline repl :headless
ライブラリの前準備をします
(use 'raspberrypi.core)
(require '[clojure.core.async :refer [go <! timeout]])
ledを点滅させる
最初にgpioを使ってする事と言えば、Blink(LEDチカチカ)ですよね
まず、ledが繋がれたピン番号をもとに、ledを定義します。
(def pin "0")
(def my-led (->PIN pin))
ledに電流を流す前に、ledが接続されたピンを出力に設定します
(set-out! my-led)
前準備が出来たので、実際に点滅させてみます
(go (while true
(<! (timeout 500))
(write my-led 1)
(<! (timeout 500))
(write my-led 0)))
これで、0番ピンに接続されたledが点滅します
まとめ
とにかくREPLを立ち上げるまでの時間が長く、trampolineを付けて起動しないとあまりにも起動に時間がかかりすぎてタイムアウトを起こします
今回はClojureをそのまま使いましたが、使い勝手としてはClojureScriptを使った方が良いかもしれません
快適な開発が出来ると信じて、近いうちにClojureScriptでも試してみます