Raspberry Pi Picoとやる気のない信号機再来

Raspberry Pi Picoによるしょうもないシステムの専用機化、その第一弾「やる気のない信号機」。

昔作ったPythonのソースコードは、先日のデスクトップパソコンのシステムのクラッシュと共に失われ、またRaspberry Pi model 4Bの中にもあったはずだが、タッチディスプレイを試してうまく行かなかったときに、システムのクリーンインストールを何回もしていて跡形もないので、仕方なく作り直した。他人の参考にはまったくならないが、今後こういったことのないよう、自分の安全のために末尾に置いておく。何となく前回とGPIOだかPWM(Pulse Width Modulation)のコーディングのお作法が違っているような気がするが、動けば良い。今回は、専用機化に向けて、ブレッドボード上でのシステムの復旧まで。基板が届いた後本格的に作業したい

こうして作って見たが、各色の輝度を合わせるためLED毎に電流制限抵抗の数とつなぎ方に見事なバラエティができた。私は今330Ωの抵抗しか持っていないので、緑は2本並列(165Ω)、黄色は2本直列(660Ω)、赤は3本直列(1kΩ)という組み合わせになった。上の絵を見てもらえば何となくわかるだろうか。誠に趣深いものがある。黄色いLEDのサイズが他と異なっていることと併せ、こうなると詫び寂びの世界と言っても過言ではないだろう(過言だろう)

この動画の場合、青(緑)はいやいやながら徐々に点灯するが、それなりに持続して(短いが)すっと消える。続く黄色は小粒だがぴりりと点灯して、青より頑張っていることをアピールする。最低なのが赤で、黄色が消灯するや否や嫌なことはさっさと片づけて、と一応立ち上がりはするが、最低限保持したら後はぴしゃりと消灯してできるだけエネルギーを温存しようとする。その後、青はもう自分の番が来たのかとばかりに面倒臭そうに少し間をおいてよっこいしょ、と腰を上げる…というイメージ

ソースコード中、dutyサイクルの範囲と増減の刻み値(iの値 – 明るくなったり暗くなったりの幅と増減の刻み幅)、sleepの時間設定( 明るくなったり暗くなったりの増減の刻みの保持時間や、青 – 黄 – 赤の移り変わりの間の取り方)で、いろいろなパターンを実現できる。ここでは赤色のLEDの処理の部分は徐々に減光する部分をあえて無効にしてあるが、コメントアウトしてあるだけなので必要であれば復活させられる

人それぞれのやる気のなさの表現に使えるかも知れない。やる気のなさコンテストでもやるか

専用機化にあたって、基板を注文して届くまでの間に本人のやる気が失せないかが問題だ

2021/08/14
んねぞう

from machine import PWM, Pin
import time

# Pin 7:Green 9:Yellow 10:Red (in GPIO nomenclature)

Green = PWM(Pin(7))
Yellow = PWM(Pin(9))
Red = PWM(Pin(10))

max_duty = 65025

while True:
    i=0
    while i<25:
        Green.duty_u16(int(max_duty*i/100))
        time.sleep(0.03)
        i+=0.4
    time.sleep(0.1)
    while i>=0:
        Green.duty_u16(int(max_duty*i/100))
        time.sleep(0.005)
        i-=0.5
#    Green.duty_u16(int(0))
    time.sleep(0.8)

    i=0
    while i<100:
        Yellow.duty_u16(int(max_duty*i/100))
        time.sleep(0.03)
        i+=2
    time.sleep(1)
    while i>=0:
        Yellow.duty_u16(int(max_duty*i/100))
        time.sleep(0.001)
        i-=1
#    Yellow.duty_u16(int(0))
#    time.sleep(0.3)

    i=0
    while i<=100:
        Red.duty_u16(int(max_duty*i/100))
        time.sleep(0.005)
        i+=2
    time.sleep(0.05)
    Red.duty_u16(0)
#    while i>=0:
#        Red.duty_u16(int(max_duty*i/100))
#        time.sleep(0.001)
#        i-=2
#    Red.duty_u16(int(0))
    time.sleep(1)

GPIO.cleanup(Red)
GPIO.cleanup(Yellow)
GPIO.cleanup(Green)

About The Author

ndaznnez

Other posts by

Author his web site

1Trackbacks/Pingbacks

  1. nNEZOU's Blog » Blog Archive » やる気のない信号機再来-完結編 21 08 21

Your Comment