2017/01/12

ゲーミングデバイスが1680万色に光る理由

ゲーミングデバイスって1680(書き方によっては1677万色)に光りますが,なぜ1680万色なのでしょうか?
これはゲーミングデバイス内のMCU(マイコン)の都合だったりします.

ゲーミングデバイスのLED制御

一般的に,ゲーミングデバイスではLEDの明るさをパルス幅変調(PWM)を用いて変えています.
PWMは,ONとOFFを切り替えることで時間あたりの平均的な電力を変える方法です.

つまり,フィラメント電球を使った理科の実験のように電圧を上下させてLEDの明るさを変えるのではなく,人間の目では知覚できない速さでON/OFFを切り替えることで明るさを変えるわけですね.人間の目では明るかったり暗かったり色々な色に見えているわけですが,マイコン的にはとても素早くLEDを点滅させているだけなのです.ここで,明るさの度合いは,ONとOFFの比率(デューティー比)を変えることで調整しています.


G302のLEDの点滅の様子をハイスピード撮影で見てみましょう.動画の撮影は1200fpsで行い,30fpsで再生しています.
まずは暗いときの場合です.


次に明るい時の場合です.

このように,LEDは目に見えない速度で点滅しています.また,点灯する時間を変えることで,見かけ上の明るさを調整していることがわかります.

PWMと色の関係

さて,PWMで明るさを変えるにはデューティー比を変えれば良いことが分かりましたが,デューティー比はマイコンでどのように設定しているのでしょうか.

よくあるのは8bitの変数を使ってデューティー比を表現する場合です.16bitやそれ以上のbit数もマイコンによっては可能だったりしますが,bit数を増やすとマイコンのリソースを使います.所詮は装飾ですし,人の目はそんなに細かく色を見分けられないので,デューティー比は8bitが多いでしょう.
8bitの変数は,(正負の区別をしない場合)0から255の値をとることができます.つまり,0から255のデューティー比で明るさを表現できます※1

そしてRGBな製品の場合,光の三原色である赤(Red,R),緑(Green,G),青(Blue,B)の3色のLEDを搭載しています.そこで,LED1色ごとに256パターンで明るさを表現して,3色合わせると256の3乗になります.つまり,256の3乗で16777216パターン,約1680万色ということになります.


※1
「1色あたり0~100とかのほうが分かりやすいのでは?」と思う方も多いと思いますが,マイコンは基本的に2進数で物を考えており,特に8bit単位(例: 8,16,32bit)でマイコン内部の機能を制御したがります.無理やり0~100などの10進法的にキリの良い数字で制御することもできますが,内部の機能は8bit単位の値しか受け付けないので,それに直すために余計な計算が必要になりますし,プログラマ的には特に意味がないので,8bitで制御することが多いようです.

0 件のコメント:

コメントを投稿