カワリモノ息子の技術メモ的な~

カワリモノ息子とその母の技術メモ的な〜

学校が苦手な息子くんの作品とその母の作品、はたまた日常などいろいろを在宅エンジニア母が綴る

小6息子くんフルカラーLEDの緑色が光らない件

ラズパイに接続したボードの緑色(フルカラー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=8888

Did 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月の記事でした)

karaage.hatenadiary.jp

sudo pigpiod のことも書いてあった!
いつもながらためになります!



スター・はてブとても嬉しいです!