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

このページをスマホなどでご覧になる場合は、画面を横長にする方が読みやすくなります。
目次へ  前のページへ (1) (2) (3) (4) (5) 次のページへ
2017年01月23日 Arduino IDE 1.6.0以降でも使えるスケッチに差し替え。

6.グラフィックLCDシールド版レベルメータのハードウェアについて

自作のグラフィックLCDシールドを使って、レベルメータを作ってみました。シールドにLCDやタクトスイッチが既に載っており、マイコンのA/D入力端子にオーディオ信号を入力する部分だけ作ればいいので、工作がとても楽です。

122X32モノクログラフィックLCDシールド 商品名 122X32モノクログラフィックLCDシールド
税抜き小売価格 3333円
販売店 スイッチサイエンス
サポートページ

回路図を次に示します。

図7、グラフィックLCDシールド版レベルメータの回路図
↑ 画像をクリックするとPDFファイルで表示
図7、グラフィックLCDシールド版レベルメータの回路図

ブレッドボード版のレベルメータでは、Arduino UnoのA4端子にオーディオ信号のLチャンネルを、A5端子にRチャンネルを入力していたのですが、今回は、工作の都合で、A0端子にLチャンネルを、A1端子にRチャンネルを入力する仕様にしました。

ユニバーサル基板に上記回路を組んだ写真を次に示します。

写真15、基板の表面
↑ 画像をクリックすると拡大
写真15、基板の表面
写真16、基板の裏面
↑ 画像をクリックすると拡大
写真16、基板の裏面

Arduino UnoにグラフィックLCDシールドを装着し、さらに次の写真のように基板を装着すれば、レベルメータ回路の完成です。

写真17、グラフィックLCDシールド版レベルメータ
↑ 画像をクリックすると拡大
写真17、グラフィックLCDシールド版レベルメータ
広告

7.グラフィックLCDシールド版レベルメータのソフトウェアについて

スケッチの内容は、ユニバーサル基板版レベルメータとほぼ一緒なのですが、グラフィックLCDシールドを使って表示を行うので、ハードウェアシリアル経由で表示を行う必要があります。また、表示モードの切り替えに、シールド上のSW1を使いますので、スイッチの状態の読み込みは、digitalRead関数ではなく、MGLCDライブラリのReadButton関数を使う必要があります。

グラフィックLCDシールド版のスケッチは、以下のリンクをクリックしてダウンロードしてください。

グラフィックLCDシールド版レベルメータ用スケッチ S12232ZA_LEVEL_METER6.zip (24kB)

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

ダウンロードしたZIPファイルを解凍すると、S12232ZA_LEVEL_METER6というフォルダができます。その中のS12232ZA_LEVEL_METER6.inoというスケッチをArduino Unoに書き込んでください。この時に、グラフィックLCDシールドのSW5はEXT側に切り替えておきます。

スケッチの書き込みが終わったら、SW5をINT側に切り替えると、レベルメータが起動します。使い方は、ユニバーサル基板版のレベルメータと同じです。ステレオミニジャックに、携帯音楽プレーヤーなどのヘッドホン出力から取った信号を入力してください。表示モードの切り替えは、グラフィックLCDシールドのSW1を押して行います。

写真18、グラフィックLCDシールド版レベルメータの動作写真
↑ 画像をクリックすると拡大
写真18、グラフィックLCDシールド版レベルメータの動作写真

なお、波形表示のあるレベルメータと、ミクのレベルメータでは、感度の調整が行えます。

波形表示のあるレベルメータの処理は、関数LevelMeter1で行っています。この関数の中に

const int divisor = 8;

と、int型の定数divisorを宣言している行があります。レベルメータの感度が低すぎて振れが悪い時は、divisorの数を小さくしてください。逆に感度が高すぎて振り切れる時は、divisorの数を大きくしてください。

ミクのレベルメータの処理は、関数LevelMeter4で行っています。この関数の中に

const int divisor = 4;

と、int型の定数divisorを宣言している行があります。レベルメータの感度が低すぎて振れが悪い時は、divisorの数を小さくしてください。逆に感度が高すぎて振り切れる時は、divisorの数を大きくしてください。

ユニバーサル基板でレベルメータ全体を作った場合に比べると、かなり工作の手間が省けました。ただ、シリアルインタフェース経由で描画コマンドをLCDに送っているので、直接描画する場合より描画処理が遅くなり、画面の更新頻度が減っているようです。そのため、ユニバーサル基板版のレベルメータより、少し動きがぎこちないところがあります。

レベルメータの専用基板を作ったので、次のページではその専用基板の話をします。

目次へ  前のページへ (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の書籍購入ページに移動します。