PRK_FirmwareでオリジナルRGBLEDエフェクトを追加する
この記事は、PRK Firmware Advent Calendar 2021 の12日目の記事です。
11日目の記事は hasumikin さんの「きゅうり改キーボードを作る」でした。
今日はPRK_FirmwareでRGBLEDのアニメーションエフェクトを作る方法を紹介しようと思います。 そんなに難しくはないです。
今回は適当な番地の色が適当に変わるrandエフェクトを作ってみます。
まずは、PRK_Firmwareのソースを持ってきて、
src/ruby/app/models/rgb.rb
のshow
メソッドの中のcase文の中身を足してあげます。
# src/ruby/app/models/rgb.rb#show when :rand unless @srand srand(board_millis) @srand = true end index = rand % @pixel_size hue = rand % 348 # sat = rand % 100 ws2812_set_pixel_at(index, hsv2rgb(hue, 80, @max_value)) ws2812_show()
srandのあたりの必要性はぶっちゃけよくわかってないです。 rubyのrand関数とは挙動が違ってちょっと戸惑いました。
次にkeymap.rbで足したエフェクト名を指定します。
# keymap.rb rgb.effect = :rand
dockerでビルドします。
docker build -o keyboards --build-arg KEYBOARD=prk_silver_bullet_requiem .
出来上がった./keyboards/prk_silver_bullet_requiem/build/prk_firmware-0.9.8-YYYYMMDD-xxxxxxx.uf2
を、
PRKのリセットスイッチを2回押してマウントされたRPI_RP2
ドライブにドラッグ&ドロップします。
完成
PRK_FirmwareでオリジナルRGBアニメーションを作ってみた pic.twitter.com/rEH4wiewrZ
— 魔王 (@swan_match) 2021年12月11日
とても簡単にLEDのエフェクト足せるのがお分かりいただけたかと思います。
今後の野望
LEDアニメーション自体をkeymap.rb
からProc
かなんかで渡せるといいなーと思っています。
クリスマスも近いので、よいLEDライフを!