Raspberry PiでLチカ(Python編)
LEDのオンオフをプログラムで制御してみます。
(こういうのを電子工作のHelloWorld的な言葉でLチカというらしい)
Pythonは書いたことがありませんが、参考情報が多く、GPIOのモジュールもあるので採用してみました。
import RPi.GPIO as GPIO import time import signal import sys channel = 4 #GPIOの4番を利用 GPIO.setmode(GPIO.BCM) # GPIOで指定するならBCM, ピン番号で指定するならBOARD GPIO.setup(channel, GPIO.OUT) is_running = True def sigint_handler(signo, frame): is_running = False GPIO.output(channel, False) GPIO.cleanup() print "\nBye!!" sys.exit(0) signal.signal(signal.SIGINT, sigint_handler) while is_running == True: GPIO.output(channel, True) time.sleep(0.05) GPIO.output(channel, False) time.sleep(0.05)
lchika.py
という名前で保存しました。
rootで実行します。
sudo python sample.py
無事にLチカできました!
謎の警告
GPIO 2(3番PIN) or GPIO 3(5番PIN)を使うと以下の警告がでました。 そういえばオフ状態でもうっすらLEDがついてる気もします。
sample1.py:7: RuntimeWarning: A physical pull up resistor is fitted on this channel! GPIO.setup(channel, GPIO.OUT)
Raspberry Pi 2付属のGPIOカードにもGPIO 2(I2C_SDA1)と書いてあるし、 どうやらこのピンは普通のGPIOではない特殊な力を持っているようです。
↓
GPIO2/3はI2C通信というものをするのに使うらしいです。
I2C通信については近いうちにまた調べて見ようかと思います。
参考
RPi.GPIOの基本的な使い方
RPi.GPIO.setupメソッドについてもう少し
How do I capture SIGINT in Python?
[Raspberry Pi]I2Cを使う(設定編)