Raspberry PIでLED点灯コントロール、Part2 Pythonでコントロールする

パワーLEDのスイッチング回路ができたので、今回は実際にPythonを使ってLEDの点灯をコントロールしてみます。

そのそもラズベリーパイのパイはパイソン(Python)からきているので、たぶんPythonを率先して使うのが正解だと思うんです。ちなみに私はPython使ったことないので、やりながら勉強しようと思います。

Raspberry Piから

sudo python
Python 2.7.3 (default, Mar 18 2014, 05:13:23)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import RPi.GPIO as GPIO
>>> GPIO.VERSION
'0.5.6'
>>> exit()

RPi.GPIOライブラリーのバージョンは0.5.6
ねんのため、アップデートしておきます。

sudo apt-get update
sudo apt-get upgrade

うげ、wolfram-engine(233MB)が入っててアップグレードに時間がすごいかかる・・。
7% [27 wolfram-engine 14.9 MB/233 MB 6%] 38.9 kB/s 2h 12min 29s

Contorl Cで止めちゃったけど大丈夫かな?

とりあえず

sudo apt-get remove wolfram-engine

でwolfram-engineを消してしまいます。

sudo apt-get upgrade

なんか転送スピードが遅いね。。50kB/sくらいしかでない。
他の雑用でもやってよー。

さて、アップデート完了したので再開。
ちなみにPythonもRPi.GPIOもバージョンアップしてなかったです。

Raspberry PiとパワーLEDのスイッチング回路を組み合わせます。

スイッチング回路はLED点灯コントロール、Part1 パワーLEDとMOS FETに記載されています。

今回はそのスイッチング回路のSWの部分をワイヤジャンパで引っ張ってきてRaspberry Piの16ピン(GPIO23)につなげます。一応Gndを共通させておきます。

今テストで使っているのはModel B+なので500mA程度ならRaspberry Piの5V電源から取ってくればいいのですが、本番ではModel Bを使用する予定なので、スイッチング回路は別途電源をUSBからとってきています。

あと、GPIOの出力は3.3VなのでFETのゲートにかける電圧を2Vちょっとにするために、抵抗は1kオームと1kオームではなく、3kオームと10kオームくらいにしておくのがいいと思います。

それでは適当な場所にmyOutput.pyのファイルを作ります。

sudo vim myOutput.py
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23,GPIO.HIGH)

保存(:w)して終了(:q)

GPIO23をオンにするプログラムです。

GPIO.setmode(GPIO.BOARD)というのがありますが、
無難にBCMを使いましょう。

上記のプログラムを実行します。

sudo python myOutput.py

GPIO23(16ピン)を出力にして、HIGH(オン、3.3V)になります。GPIO23は抵抗で分圧されてFETのゲートに2.2V程度かかります。するとFETがオンになって、パワーLEDが点灯します。

もう一度実行して見ます。

sudo vim myOutput.py
RuntimeWarning: This channel is already in use, continuing anyway.  Use GPIO.setwarnings(False) to disable warnings.
  GPIO.setup(23, GPIO.OUT)

プログラムの一番最後にGPIO.cleanup()を入れておかないと文句言われるみたいです。

で、一度この警告メッセージが出た後、
どうやってクリーンアップすればいいのだろう?

ためしにimportのあとにGPIO.cleanup()を呼んでクリーンアップさせようとしたところ、

RuntimeWarning: No channels have been set up yet - nothing to clean up!  Try cleaning up at the end of your program instead!

警告ができてきて、この警告を消すにはGPIO.setwarnings(False)を入れろと書いてあるけど・・・。微妙なのでRaspberry piを再起動させました。

プログラムの最後の行にGPIO.cleanup()を入れて実行すると、cleanupが終わるとGPIOのアウトプットもオフになってしまいました。オンの時間が短すぎるのでLEDがまったく光らずに終わってしまいます。10秒ほど光らせたいのでtimeを使います。

修正プログラム

sudo vim myOutput.py
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(23, GPIO.OUT)
GPIO.output(23,GPIO.HIGH)

time.sleep(10)

GPIO.cleanup()

実行します。

sudo python myOutput.py

無事パワーLEDが10秒だけ点灯して消えました。Pythonでプログラムを動かすのは初めてだったのですが、とても簡単にできました。

Raspberry PIでLED点灯コントロール、Part2 Pythonでコントロールする” への1件のコメント
    "Raspberry PIでLED点灯コントロール、Part2 Pythonでコントロールする" に 1 トラックバック・ピンバック
    1. […] Raspberry PIでLED点灯コントロール、Part2 Pythonでコントロールする [Raspberry Pi]GPIOでLEDの点滅(Python) […]

    コメントを残す

    メールアドレスが公開されることはありません。

    このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください