前回はハードの初期化をすべて自前でやるLEDチカサンプルを作ってみたけど、もっともお手軽な、OSのデバイスファイル?とPythonに頼り切ったサンプル。USER LEDはGPIOに繋がっているけどOSレベルでいろいろお膳立てしてくれているのでサンプルも極端に短くなるのであった。。以下はLED User3をチカチカさせるサンプル。。
#!/usr/bin/python # # LED blink test by python # (LED:user3) # # this sample program may be executed by root priviledges import os import time while 1 : os.system('echo 1 > /sys/class/leds/beaglebone::usr3/brightness') time.sleep(0.8) os.system('echo 0 > /sys/class/leds/beaglebone::usr3/brightness') time.sleep(0.8)
結局、デバイスファイル?に0か1を書くだけでLEDが点滅するので、、shでも十分。。
#!/bin/sh while [ 1 ] do echo 1 > /sys/class/leds/beaglebone::usr3/brightness sleep 1 echo 0 > /sys/class/leds/beaglebone::usr3/brightness sleep 1 done
このお気楽感はRaspberryPiでも同じようで、ラズパイマガジン;MagPIには、LEDチカサンプルやPyhonでGPIOを叩く事例が紹介されています。Lチカぐらいはかなり手軽ですが、、ちょっと調べてもまったく分からないのは、、GPIOにスイッチを付けて割り込みで受け取る方法について、不明でございます。。Linuxではどうやってハードウエア割り込みを扱うのやら。。
http://sourceforge.jp/projects/linux-kernel-docs/wiki/2.3%E3%80%80%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E5%87%A6%E7%90%86
Linuxでは、割り込みとか言い出すと、途端にこういったドログチャの世界に入ってしまうのか。。
リアルタイムLinuxってのもあるようで、割り込みを扱うにはこういったアーキの方がいいのかも
http://www.ibm.com/developerworks/jp/linux/library/l-real-time-linux/
■ご参考URL
真剣に取り組んでいるLEDチカチカサンプル
http://www.gigamegablog.com/2012/01/05/beaglebone-coding-101-blinking-an-led/
UserLED用のデバイスのパスは以下のサイトを参考にしました
http://www.meadios.com/2012/01/blinking-leds-and-python/
http://pastebin.com/En6dmT3Q