2014年11月09日 | 公開。 |
2015年08月15日 | MGLCDライブラリのバージョンによってBMP2Hフォルダの位置が変わる事に言及。 |
はちゅねミクがネギを振るレベルメータは、MGLCDライブラリのビットマップ転送の機能を使って、アニメーションを実現しています。ここでは、ビットマップ画像を書き換えて、オリジナルの絵柄のレベルメータを作る方法を説明します。なお、この記事は、Windows環境でArduinoの開発をしている前提で書いています。
はちゅねミクがネギを振るレベルメータは、音量に応じて、以下の9種類のビットマップ画像を切り替えて表示する仕組みになっています。(原寸のままでは、ウェブサイトで表示するには小さすぎるので、縦横各3倍に拡大して表示しています)
これらのビットマップファイルは、レベルメータのスケッチのフォルダの中の、bmpというフォルダにあります。(例えば、ユニバーサル基板版レベルメータの場合は、S12232ZA_LEVEL_METER5\bmpというフォルダにある)
これら9枚のビットマップ画像は全て横100×縦32ピクセルのサイズで、白と黒の2色のみを使って描かれています。ファイル名はmiku?.bmpという形式(?のところには0~8の数字が入る)となっていますが、数字が小さいほど小さな音量に、数字が大きいほど大きな音量に対応しています。
これらのビットマップ画像は、そのままではArduinoのスケッチが読み込む事ができませんので、C++のヘッダファイルに変換します。変換の方法は後で説明しますが、変換した結果が、スケッチのフォルダの中の、miku0.h~miku8.hというファイルです。
miku0.hの中身を見れば分かるように、ビットマップ画像は、PROGMEM unsigned char型の1次元配列で表現されています。
スケッチのメインファイル(.inoファイル)は、次の様に、各画像の配列の宣言を#include指令でインクルードしています。
以上の説明から分かるように、miku0.h~miku8.hを、オリジナルの画像を変換したものに差し替えれば、自分の好みの絵柄のレベルメータに作り変える事ができます。
オリジナルの絵柄のレベルメータを作るには、まず横100×縦32ピクセルの、白と黒のみを用いたビットマップ画像を用意する必要があります。Windowsに標準で付いてくるペイントなどで、画像を描いて下さい。Windows 7の場合は、スタート→すべてのプログラム→アクセサリ→ペイントと選べば、ペイントが起動します。
本来は、ここで皆さんに絵を描いていただきたいのですが、とりあえずビットマップ画像の差し替え方法を確認してみたい方のために、サンプルの画像を用意しました。
これらの画像は、下のリンクをクリックして、ファイルを適当な作業用フォルダにダウンロードしてください。
なお、ご自分でビットマップ画像を描かれた方は、画像のサイズが100X32ピクセルであることを確認して、ビットマップファイル(拡張子.bmp)として、適当な作業用フォルダに保存してください。モノクロビットマップでも、16色ビットマップでも、256色ビットマップでも、24ビットビットマップでもかまいません。ファイル名はmiku0.bmp~miku8.bmpとしてください。
ビットマップ画像をヘッダファイルに変換するBMP2Hというソフトが、MGLCDライブラリに付属しています。MGLCDライブラリをインストールしたフォルダの中に、BMP2Hというフォルダがあるはずです。(MGLCDライブラリのバージョンによってはextrasというフォルダがあり、さらにその中にBMP2Hというフォルダがある) その中のBMP2H.exeがBMP2Hの実行ファイルです。このソフトはWindows XPおよびWindows 7の32ビット版で動作確認をしていますが、おそらくWindows VistaやWindows 8でも動作するでしょう。
BMP2H.exeを起動して、Load BMP file...と書いたボタンをクリックしてください。
次に、開いたダイアログボックスで、先ほどダウンロード(または作成)した、miku0.bmpを選択してください。
すると、miku0.bmpの画像が表示されますので、画像を確認した上で、Create header file...のボタンをクリックしてください。
miku0.bmpのヘッダファイルへの変換が行われ、Created a header file.のメッセージが表示されます。OKファイルをクリックしてください。
miku0.bmpと同じフォルダに、miku0.hというファイルができているはずです。
同様に、Load BMP file...ボタンでビットマップ画像を選び、Create header file...ボタンでヘッダファイルに変換して、miku1.h~miku8.hも作成してください。
この様にして出来たヘッダファイルを、レベルメータのスケッチのフォルダのmiku0.h~miku8.hに上書き保存すれば、画像の差し替えは完了です。後は、各レベルメータの製作記事の説明参考に、レベルメータのマイコン(Arduino)にスケッチを書き込んでください。オリジナル画像のレベルメータが動作するはずです。
画面右側の「測音ミク」のスクロール表示については、書き換え方を詳しくは説明しません。各自研究してください。logo0.bmp~logo7.bmpを書き換えれば、この部分も書き換えることができます。
商品名 | LCDレベルメータ | |
税抜き小売価格 | 3500円 | |
販売店 | スイッチサイエンス | |
サポートページ | LCDレベルメータサポートページ |
商品名 | S12232ZA | |
税抜き小売価格 | 400円 | |
販売店 | スイッチサイエンス | |
サポートページ | S12232ZAサポートページ |
商品名 | 122X32モノクログラフィックLCDシールド | |
税抜き小売価格 | 3333円 | |
販売店 | スイッチサイエンス | |
サポートページ | 122X32モノクログラフィックLCDシールドサポートページ |
商品名 | Arduino Uno用ブートローダスケッチライタシールドキット | |
税抜き小売価格 | 1440円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino Uno用ブートローダライタシールドキットサポートページ |
商品名 | Arduino用ブートローダ/スケッチライタキット | |
税抜き小売価格 | 3000円 | |
販売店 | スイッチサイエンス | |
サポートページ | Arduino用ブートローダ/スケッチライタキットサポートページ |