Help us understand the problem. What is going on with this article?

Raspberry PiをClojureから触る時のあれこれ

More than 5 years have passed since last update.

ご挨拶

どうも今晩は、Xcoo, Inc.にてインターン生をしていますBOXPです。

大分前にRaspberry Pi Bを購入した僕ですが、9月頃になれない手つきで半田ごてを握り、モーターのドライブ回路を作り繋いだ結果、思いっきり回路を焼いてしまい壊してしまいました…

その後、まるで焼かれたRaspberry Piの意思を継ぐかのようにRaspberry Pi B+が発売されたので早速購入しました

既出の様な気もしますが、Clojureでledを点滅させるまでのあれこれをまとめておきます

下準備

※既にRaspbianWiringPiが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でも試してみます

eure
オンラインデーティングサービス「Pairs」の運営・開発をしている企業。様々なモダンな技術を駆使してビジネスを成長させています。
https://eure.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした