きっかけ
- Raspberry Piが余っていたから
- クリスマスまでに何かしたかったから
- 外で見た自転車を漕ぐと点灯するイルミネーションを見たから
- 友達に「工学部だからキーボードで点灯するようにしたら」と言われたから
本屋で見たイケメンが「Raspberry Piで何か作りてーな」っていう意識高いことを言っていたのがムカついたから
参考にしたもの
やりたいことはLチカ(LEDをチカチカ点灯させること)だったので、以下を参考にしました。
さっそく
できました。
キーボードを叩くと、
点滅します。
仕組み
まず、OSの準備からですが、第8回「2皿目のラズベリーパイ!Model B+のスピード調理に書いてあるので割愛します。
次に、ブレッドボードにLEDと抵抗、導線を次のように置きます。
ちなみに置きかたについても、第9回「ラズベリーパイで電子工作!Lチカ…の前にLピカ!」に書いてあるので割愛します。
LEDを光らせる電源として利用するのはRaspberry PiのGPIOです。
GPIOはRaspberry Piからの命令を電気信号で送る部分のことです。
LEDは次のようにつなぎます。抵抗を反対につなげると光りません。
GPIOのピンは次のような配置になっています。
黄色丸は命令が来るピンで、黒丸はアース(接地)のピンです。ちなみに、濃い黄色丸や赤丸は安定して電気が流れているピンです。
使用しているのはRaspberry Pi B+なのでA+と比べ、ピンの本数が違いますが、左から26本目までは同じらしいです。
今回は、3、6、14を利用します。(14番は本当は必要ないんだけど、接地まで導線が届かなかった...。)
さて、この3番のGPIOに電気信号を流す方法です。
Raspberry Piのターミナルを開いて、次のコマンドを打ちます。
Raspberry Piのターミナルを開いて、次のコマンドを打ちます。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
echo 2 > /sys/class/gpio/export |
すると、
ここで、次のコマンドを打ちましょう。
/sys/class/gpio/
内に、gpio2へのエイリアスが作られます。ここで、次のコマンドを打ちましょう。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
echo out > /sys/class/gpio/gpio2/direction //これで信号を送れるようにする。 | |
echo 1 > /sys/class/gpio/gpio2/value //信号を送る | |
echo 0 > /sys/class/gpio/gpio2/value //信号を停止する |
これで点灯テストは終了です。
次に、点灯させるためにキーボード入力の検出をしましょう。
とは言っても、調べてみると、キーボード入力のイベントハンドラ(キーボードで打ち込んだら動くプログラム)を検出しないといけないので、ちょっと面倒くさい。
なので、標準入力を使いましょう。
OSには標準でPython2と3が入っているので、2を使います。(3を使ったほうがいいことはわかりますが、調べた方法では3が使えなかった...。)
次にこのコードを書きます。text editerが使いやすいかも。
そして、
これでキーボードをカタカタすると光るはずです。
次に、点灯させるためにキーボード入力の検出をしましょう。
とは言っても、調べてみると、キーボード入力のイベントハンドラ(キーボードで打ち込んだら動くプログラム)を検出しないといけないので、ちょっと面倒くさい。
なので、標準入力を使いましょう。
OSには標準でPython2と3が入っているので、2を使います。(3を使ったほうがいいことはわかりますが、調べた方法では3が使えなかった...。)
次にこのコードを書きます。text editerが使いやすいかも。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from getch import getch, pause | |
import subprocess | |
v = '0' | |
while True: | |
key = getch() | |
print 'you pressed :' | |
if v == '0' | |
subprocess.call('echo 0 > /sys/class/gpio/gpio2/value', shell=True) | |
v = '1' | |
print key | |
else: | |
subprocess.call('echo 1 > /sys/class/gpio/gpio2/value', shell=True) | |
v = '0' | |
print key | |
python2 getch_test.py
で実行しましょう。(実行する前にgetchをインストールしておきましょう。pip install py-getch
でできます。)これでキーボードをカタカタすると光るはずです。
感想
目的は一応達成しました。とにかく、
「クリスマスの光は僕らのタイピングでできているんだ...。」がやりたかった。
反省点としては、
確かに光るんだけども、消えたりしないでほしい。交互に光ってほしい。反転するようにしたら良いかも。GPIOピンを2つ使えばいいかな。
あと、LEDの数が少なくてしょぼい。悲しい。
くらいです。来年もやりたいな。修論...。
0 件のコメント:
コメントを投稿