/
マイカーで子供を迎えに行く
子供を駅に迎えに行く時、塾に迎えに行く時、待っている子どもたちは「あ!あれかな!違った。」などといろいろなことを考えながら待っているのです。しかしこれなら間違う心配もない。間違って違う車に乗ってしまうこともない優れモノです。
ナイトライダーっていうアメリカのドラマがありましたね。あのイルミネーションを車に搭載してしまうという思いつきです。
CircuitPython
現在CircuitPythonは9.2.1になっています。ライブラリはneopixel.mpyとadafruit_led_animationをフォルダごとlibフォルダにコピーしておきます。
必要なもの
| Raspberry Pi Pico | 1 |
| WS2812b(10連) | 1 |
| ブレッドボード | 1 |
| ジャンパワイヤ | 3 |
| micro USB ケーブル(80cm) | 1 |
| 配線用モール | 1 |
配線の仕方

車のシガーソケットから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で押されていればと同義になります。注意してください。


