ラズパイに接続したボードの緑色(フルカラーLED)が光らない!てなってた件
↓ この件
siroitori.hatenablog.com
一緒に調べてみました。
先日は、状況をあまり見てなくて息子くんが「緑色が光らない~」って言ってたから、こりゃー接続(はんだづけ状態)が悪いんだろうなくらい思ってたんです。
でも!違ってました。
ソースを確認
よくよく状況を確認すると、ループがうまくいってないみたいだと。
「緑色だけ、ループ1回目だけ光るんだけど、2回目以降が光らない」と。
緑色だけループしないの?
んなばかな~
pythonのソースコードを確認しました。
#!/usr/bin/env python # -*- coding: utf-8 -*- import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(17,GPIO.OUT) # red GPIO.setup(27,GPIO.OUT) # green GPIO.setup(22,GPIO.OUT) # blue try: while True: GPIO.output(27,True) # ☆ print("Show") time.sleep(0.5) GPIO.output(27,False) # ☆ print("Hide") time.sleep(0.5) except KeyboardInterrupt: GPIO.output(17,False) GPIO.output(27,False) GPIO.output(22,False) GPIO.cleanup()
☆の部分。
赤色17番と青色22番をいれたときはちゃんと点滅するのに緑色27番のときだけ、最初1回光って消えてしたあと光らない!(泣)
何度実行しても、必ず1回目は光るから接続が問題ではなさそう。
また、printの"Show"と"Hide"も出力されるからループはうまくいってる。
はて?
本誌(ラズパイマガジン)を見よう
このボードを扱っているラズパイマガジン2019年6月号を読む。
あれっ本誌では
pigpio
というのを使っているよ。
息子くんは「ネット情報はほとんどGPIOで僕もずっとそれを使っている。馴染みがない!」と抵抗するものの、
一応こう書いてあるからためそうよ~と提案。
pigpioを使ってみた
とりあえずフルカラーLEDの前に赤色LEDを光らせてみることに。
import pigpio LED_PIN = 14 pi = pigpio.pi() pi.set_mode( LED_PIN , pigpio.OUTPUT ) pi.write( LED_PIN , pigpio.HIGH )
コード1行目、import pigpio で下記のエラー。
ModuleNotFoundError: No module named 'pigpio'
モジュールがないけんや~と、息子くんが
$ pip install pigpio
とやってインストールしました。
そして再度実行、そしたら今度は
pi@raspberrypi:~/Desktop $ python ledred.py
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Can't connect to pigpio at localhost(8888)Did you start the pigpio daemon? E.g. sudo pigpiod
Did you specify the correct Pi host/port in the environment
variables PIGPIO_ADDR/PIGPIO_PORT?
E.g. export PIGPIO_ADDR=soft, export PIGPIO_PORT=8888Did you specify the correct Pi host/port in the
pigpio.pi() function? E.g. pigpio.pi('soft', 8888)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Traceback (most recent call last):
File "ledred.py", line 8, in
pi.set_mode( LED_PIN , pigpio.OUTPUT )
File "/usr/lib/python2.7/dist-packages/pigpio.py", line 1291, in set_mode
return _u2i(_pigpio_command(self.sl, _PI_CMD_MODES, gpio, mode))
File "/usr/lib/python2.7/dist-packages/pigpio.py", line 977, in _pigpio_command
sl.s.send(struct.pack('IIII', cmd, p1, p2, 0))
AttributeError: 'NoneType' object has no attribute 'send'
とかでるし・・・
なんかよくわからないまま、書いてあるように
$ sudo pigpiod
ってやってみて、それから、
$ python プログラム名
てやってみるといけました。
赤色LED光りました。成功。
pigpioってこのように使うのか。
ではpigpioで問題のフルカラーLEDの緑色をやってみる
import pigpio import time GREEN_PIN = 27 pi = pigpio.pi() pi.set_mode( GREEN_PIN , pigpio.OUTPUT ) while True: pi.write( GREEN_PIN , pigpio.LOW ) time.sleep(1) pi.write( GREEN_PIN , pigpio.HIGH ) time.sleep(1)
ちゃんとループして点滅した!!!
(画像をアニメーションにしてみたけどこんな感じ^^)
謎
対処方法として、pigpioを使えばできるということは判明。
だけど、GPIOをつかうとフルカラーLED(なぜか緑のときだけ)が点滅できない。
ん~~
息子くんはなんでかあくまでもGPIOにこだわりたいと。
GPIOでの実現方法についてもしもなにかわかる方いらっしゃいましたら、、、教えてください。
pigpioについて調べてみた
pigpioについてぐぐって調べてみました。
尊敬するからあげ大先生の記事がありました☆(2017年2月の記事でした)
sudo pigpiod のことも書いてあった!
いつもながらためになります!
スター・はてブとても嬉しいです!