LANケーブルは100mしか繋がない

OSとかIoTとかRubyとかPythonのゆとり系音楽プログラマー

PRK_FirmwareでオリジナルRGBLEDエフェクトを追加する

この記事は、PRK Firmware Advent Calendar 2021 の12日目の記事です。

11日目の記事は hasumikin さんの「きゅうり改キーボードを作る」でした。

今日はPRK_FirmwareでRGBLEDのアニメーションエフェクトを作る方法を紹介しようと思います。 そんなに難しくはないです。

今回は適当な番地の色が適当に変わるrandエフェクトを作ってみます。

まずは、PRK_Firmwareのソースを持ってきて、 src/ruby/app/models/rgb.rbshowメソッドの中の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ドライブにドラッグ&ドロップします。

完成

とても簡単にLEDのエフェクト足せるのがお分かりいただけたかと思います。

今後の野望

LEDアニメーション自体をkeymap.rbからProcかなんかで渡せるといいなーと思っています。

クリスマスも近いので、よいLEDライフを!