LCDモジュールを使ったレベルメータの製作(1)

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) (5) 次のページへ
2016年06月13日 aitendoでS12232ZAの販売が終了した事を追記。
2017年01月23日 Arduino IDE 1.6.0以降でも使えるスケッチに差し替え。
レベルメータの波形表示モード画面
レベルメータの波形表示モード画面

目次

1. はじめに … 1ページ
2. ブレッドボード版レベルメータのハードウェアについて … 1ページ
3. ブレッドボード版レベルメータのソフトウェアについて … 1ページ
4. ユニバーサル基板版レベルメータのハードウェアについて … 2ページ
5. ユニバーサル基板版レベルメータのソフトウェアについて … 2ページ
6. グラフィックLCDシールド版レベルメータのハードウェアについて … 3ページ
7. グラフィックLCDシールド版レベルメータのソフトウェアについて … 3ページ
8. 専用基板版レベルメータのハードウェアについて … 4ページ
9. 専用基板版レベルメータのソフトウェアについて … 4ページ
10. オリジナルの絵柄のレベルメータの作り方 … 5ページ
10-1. アニメーション表示の原理 … 5ページ
10-2. 画像を用意する … 5ページ
10-3. 画像をヘッダファイルに変換する … 5ページ
10-4. 画像を入れ替えたスケッチを書き込む … 5ページ

1.はじめに

aitendoS12232ZAという、350円の格安グラフィックLCDモジュールを使って、オーディオレベルメータを作成してみました。LCDの制御には、Arduino Unoを使います。また、オーディオ信号はArduinoのアナログ入力から、音声信号をA/D変換することで取り込みます。122X32ピクセルという、レベルメータの表示用としては高い解像度を生かして、波形表示機能も付けました。単に音量をバーグラフで表わすレベルメータよりも、見ていて楽しいレベルメータになったと思います。

2016年06月13日追記:aitendoのS12232ZAの在庫はずっとないままになっているので、販売が終了しているものと思われます。スイッチサイエンスから入手してください。

S12232ZA 商品名 S12232ZA
税抜き小売価格 400円
販売店 スイッチサイエンス
サポートページ

Arduinoのスケッチを書き直せば、色々なデザインのレベルメータができます。波形表示付きのレベルメータ以外にも、オーソドックスなバーグラフのレベルメータや、アナログメータ風のレベルメータ、イラストを利用したレベルメータのスケッチも用意しました。

ハードウェアを作るにあたって、最初にブレッドボードで回路を仮組みしました。それで回路の動作が確認できたら、次にユニバーサル基板に回路を組みました。次に、グラフィックLCDシールドを使って同様の回路を組み、どの程度回路の規模が小さくなるかも確認しました。さらには、レベルメータの専用両面基板を起こしました。これから、順に、それらの話をします。

2.ブレッドボード版レベルメータのハードウェアについて

ブレッドボードに回路を仮組みした際の回路図を次に示します。

図1、ブレッドボード版レベルメータの回路図
↑ 画像をクリックするとPDFファイルで表示
図1、ブレッドボード版レベルメータの回路図

これは、S12232ZAをArduinoで動かす方法を説明したページに掲載した回路図に、CN1、C1、C2、R1~R4からなる音声信号のレベルシフト回路を付け足したものになっています。Arduinoは0V~5Vの電圧をA/D変換できますが、ステレオミニジャック(CN1)から入力される音声信号は交流で、正負の電圧を取るため、レベルシフト回路で電圧を全体に2.5V持ち上げてからArduinoに入力しています。

部品表を次に示します。

表1、S12232ZAを使ったレベルメータの部品表(その1)
部品番号 数量 品名 型番/仕様 メーカー 備考 参考単価
M1 1 マイコン基板 Arduino Uno     2,600円程度
LCD1 1 LCDモジュール S12232ZA   スイッチサイエンスで販売 432円
R1、R2、R3、R4 4 金属皮膜抵抗 22kΩ±1%、1/4W   1/8Wでも可 20円程度
R5 1 カーボン抵抗 330Ω±5%、1/4W   240Ωでも可、1/8Wでも可 10円程度
C1、C2、C3、C4 4 アルミ電解コンデンサ 10μF、50V     10円程度
VR1 1 半固定抵抗 20kΩ     20円程度
D1、D2 2 ダイオード 1SS133 ローム 1S2076でも可 30円程度
CN1 1 ステレオミニジャック AJ-1780   秋月電子で販売 50円

表1の部品を、回路図どおりにブレッドボードに配線していきます。

ステレオミニジャックAJ-1780は、そのままではブレッドボードに刺さらない部品ですので、何らかの工夫が必要です。私は手元にあった、ユニバーサル基板とヘッダを使って、下の写真のような加工を行いましたが、秋月電子に3.5mmステレオミニジャックDIP化キットというのがありますので、それを使うのが簡単でしょう。

写真1、DIP化したステレオミニジャック
写真1、DIP化したステレオミニジャック

組みあがった時の写真を次に示します。

写真2、ブレッドボードに組んだレベルメータ
↑ 画像をクリックすると拡大
写真2、ブレッドボードに組んだレベルメータ

ステレオミニジャックは、両側に3.5mmのステレオミニプラグが付いているケーブルを使って、携帯オーディオプレーヤーのヘッドホン端子に接続してください。

写真3、両側にステレオミニプラグが付いたケーブル
↑ 画像をクリックすると拡大
写真3、両側にステレオミニプラグが付いたケーブル
広告

3.ブレッドボード版レベルメータのソフトウェアについて

MGLCDライブラリという、グラフィックLCD制御用のライブラリを使いますので、MGLCDライブラリユーザーマニュアルを参考に、MGLCDライブラリVer. 0.42Arduino IDEにインストールしてください。なお、Arduino IDEは1.0.1以上をお使いください。

注:インストールが必要なのはMGLCDライブラリです。MGLCD_SPIライブラリは、必ずしもインストールする必要はありません。

次にTimer1という、タイマ割り込みのライブラリを、こちらのページからダウンロードし、インストールしてください。Download->TimerOne Google Code downloadと書いてあるところをクリックし、TimerOne-v9.zipをダウンロードします。(Timer1がバージョンアップしていたら、ZIPファイルのファイル名は変更になっているかも知れません) そして、ダウンロードしたZIPファイルを解凍し、できたTimer1というフォルダをマイドキュメント\Arduino\librariesの中にコピーすればインストール完了です。

2つのライブラリがインストールできたら、次にレベルメータ用のスケッチを下記のリンクをクリックしてダウンロードしてください。

S12232ZA用レベルメータ(ブレッドボード版)スケッチ S12232ZA_LEVEL_METER.zip (30kB)

2017年1月23日追記:以前公開していたスケッチは、Arduino IDE 1.0.Xでしかコンパイルできませんでした。Arduino IDE 1.6.0以降をお使いの方は、お手数ですが、スケッチをダウンロードしなおしてください。また、このスケッチを利用するには、MGLCDライブラリVer. 0.40以降が必要です。

ダウンロードしたZIPファイルを解凍すると、以下の4つのフォルダができます。

まず、S12232ZA_LEVEL_METER1というフォルダの中のS12232ZA_LEVEL_METER1.inoというファイルをダブルクリックして、Arduino IDEを起動してください。

図2、S12232ZA_LEVEL_METER1.inoをダブルクリック
図2、S12232ZA_LEVEL_METER1.inoをダブルクリック

スケッチをArduino Unoに書き込むとレベルメータが起動します。

図3、スケッチを書き込む
図3、スケッチを書き込む

ステレオミニジャックにつないだ携帯音楽プレーヤーで音楽を再生すると、LCDにレベルメーターを表示します。

写真4、S12232ZA_LEVEL_METER1の実行画面
写真4、S12232ZA_LEVEL_METER1の実行画面

S12232ZA_LEVEL_METER2というフォルダの中のスケッチをArduino Unoに書き込むと、次の写真の様な、バーグラフ表示のオーソドックスなレベルメータを表示します。

写真5、S12232ZA_LEVEL_METER2の実行画面
写真5、S12232ZA_LEVEL_METER2の実行画面

S12232ZA_LEVEL_METER3というフォルダの中のスケッチをArduino Unoに書き込むと、次の写真の様な、アナログメータ風のレベルメータを表示します。

写真6、S12232ZA_LEVEL_METER3の実行画面
写真6、S12232ZA_LEVEL_METER3の実行画面

S12232ZA_LEVEL_METER4というフォルダの中のスケッチをArduino Unoに書き込むと、次の写真の様に、はちゅねミクがねぎを振る角度で音量を表わすレベルメータを表示します。

写真7、S12232ZA_LEVEL_METER4の実行画面
写真7、S12232ZA_LEVEL_METER4の実行画面

ただ、このままだと、携帯音楽プレーヤーで再生している音楽を聴くことができません。そういう時は、イヤホンを2つに分配するケーブルが100円ショップなどで販売されていますので、それを使うと音楽を聴きながらレベルメータを見ることができます。下の写真は、私がダイソーで105円で買った分岐ケーブルです。

写真8、ステレオミニジャックの分岐ケーブル
写真8、ステレオミニジャックの分岐ケーブル

なお、S12232ZA_LEVEL_METER1とS12232ZA_LEVEL_METER4では、レベルメータの感度の調整ができます。

S12232ZA_LEVEL_METER1.inoには、次の様に定数DIVISORを宣言している行があります。

#define DIVISOR 8

またS12232ZA_LEVEL_METER4.inoには、次の様に定数DIVISORを宣言している行があります。

#define DIVISOR 4

レベルメータの感度が悪く、振れが小さすぎると思われる場合は、DIVISORの数を減らしてみてください。逆に、レベルメータの感度が高すぎて、振り切ってしまう場合は、DIVISORの数を増やしてみてください。

次のページでは、ユニバーサル基板上でレベルメータを組んでみます。

目次へ  前のページへ (1) (2) (3) (4) (5) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

LCDレベルメータ 商品名 LCDレベルメータ
税抜き小売価格 3500円
販売店 スイッチサイエンス
サポートページ
S12232ZA 商品名 S12232ZA
税抜き小売価格 400円
販売店 スイッチサイエンス
サポートページ
122X32モノクログラフィックLCDシールド 商品名 122X32モノクログラフィックLCDシールド
税抜き小売価格 3333円
販売店 スイッチサイエンス
サポートページ
Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1440円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 3000円
販売店 スイッチサイエンス
サポートページ
Arduino 電子工作
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。