Knight Rider風のLEDを車に搭載する

made it!

/

マイカーで子供を迎えに行く

子供を駅に迎えに行く時、塾に迎えに行く時、待っている子どもたちは「あ!あれかな!違った。」などといろいろなことを考えながら待っているのです。しかしこれなら間違う心配もない。間違って違う車に乗ってしまうこともない優れモノです。

ナイトライダーっていうアメリカのドラマがありましたね。あのイルミネーションを車に搭載してしまうという思いつきです。

CircuitPython

現在CircuitPythonは9.2.1になっています。ライブラリはneopixel.mpyとadafruit_led_animationをフォルダごとlibフォルダにコピーしておきます。

必要なもの

Raspberry Pi Pico1
WS2812b(10連)1
ブレッドボード1
ジャンパワイヤ3
micro USB ケーブル(80cm)1
配線用モール1
9.2.1

配線の仕方

micro usbケーブルでの電源供給も可能

車のシガーソケットからUSB電源を取れるようなものがあればいいですね。

プログラムはこんな感じ


import time
import board
import neopixel
from adafruit_led_animation.animation.comet import Comet
from adafruit_led_animation.animation.chase import Chase
from adafruit_led_animation.animation.rainbowsparkle import RainbowSparkle
from adafruit_led_animation.sequence import AnimationSequence
from adafruit_led_animation import color

# Update this to match the number of NeoPixel LEDs connected to your board.
num_pixels = 10

pixels = neopixel.NeoPixel(board.GP28, num_pixels)
pixels.brightness = 0.3
comet = Comet(pixels, speed=0.1, color=color.GREEN, tail_length=10, bounce=True)
comet1= Comet(pixels, speed=0.05, color=color.ORANGE, tail_length=5, bounce=True)
chase = Chase(pixels, speed=0.1, size=4, spacing=6, color=color.AMBER)
chase1 = Chase(pixels, speed=0.05, size=3, spacing=6, color=color.PURPLE)
rainbow_sparkle = RainbowSparkle(pixels, speed=1, num_sparkles=1)

animations = AnimationSequence(comet, comet1, chase, chase1,rainbow_sparkle, advance_interval=5, auto_clear=True)

while True:
    animations.animate()

adafruitのled-animationというライブラリを使って実現しています。アニメーションはコメットとチェイスそしてレインボースパークルを使用。カラーや長さはそれぞれのパラメータを変更して使っています。

タクトスイッチで効果を切り替える

GP16にタクトスイッチを接続して、スイッチの入力があればアニメーションを変えるプログラムです。NeoPixelを16連にしました。


import time
import board
import neopixel
import digitalio
from adafruit_led_animation.animation.comet import Comet
from adafruit_led_animation.animation.chase import Chase
from adafruit_led_animation.animation.rainbowsparkle import RainbowSparkle
from adafruit_led_animation.sequence import AnimationSequence
from adafruit_led_animation import color

switch = digitalio.DigitalInOut(board.GP16)
switch.direction = digitalio.Direction.INPUT
switch.pull = digitalio.Pull.UP
# Update this to match the number of NeoPixel LEDs connected to your board.
num_pixels = 16

led = digitalio.DigitalInOut(board.GP25)
led.direction = digitalio.Direction.OUTPUT

pixels = neopixel.NeoPixel(board.GP28, num_pixels)
pixels.brightness = 0.8
comet = Comet(pixels, speed=0.1, color=color.GREEN, tail_length=10, bounce=True)
comet1= Comet(pixels, speed=0.05, color=color.PURPLE, tail_length=5, bounce=True)
chase = Chase(pixels, speed=0.1, size=4, spacing=2, color=color.AMBER)
chase1 = Chase(pixels, speed=0.07, size=3, spacing=4, color=color.GOLD)
rainbow_sparkle = RainbowSparkle(pixels, speed=0.1, num_sparkles=5)

animations = AnimationSequence(comet, comet1, chase, chase1,rainbow_sparkle, auto_clear=True)

while True:
    if not switch.value:
        led.value = 1
        time.sleep(0.5)
        led.value = 0
        animations.next()
        time.sleep(0.5)
    animations.animate()
スイッチの入力

while True以下に注意してください。not switch.valueとなっています。こちらはswitch.pullでPull.UPをしていしているので、押されていないときはTrueを返します。なので押されてるときはFalseを返すのです。not switch.valueで押されていればと同義になります。注意してください。

タイトルとURLをコピーしました