Arduinoの代表的な用途であるフィジカル・コンピューティングでは、時間や電圧に換算された温度、明るさ、傾き、その他様々なセンシングデータを取得して利用します。これらのデータ値を手軽に数値で確認できると助かることも多いですよね。このような時は、7セグメントLEDを利用した数値表示装置が大変役立ちます。
ここではBLUE-7SEG-1を対象として、Arduinoでの7セグメントLEDの基本的な操作法を紹介します。REDUINO-VALKYRIEやREDUINO-GHOSTでは、このような魅力的な表示装置を面倒なワイヤワークを行うことなくワンタッチで利用できます。
BLUE-7SEG-1は、4桁の7セグメントLEDで、文字LCDの4ビットモードで利用する信号線で制御することができ、Arduinoで簡単かつ省ピン構成で制御することが出来ます。
ネットショップ:
REDUINOシリーズでは、>red7SEG:7セグメントLED表示ライブラリを利用することで、7セグメントLEDを簡単に利用することができます。7セグメントLED表示装置をすぐに活用したい方は、、red7SEGをダウンロードしてArduino IDEのライブラリに追加してご活用ください。
ここでは、7セグメントLED表示装置の処理方法を知りたい方のために、7セグメントLEDを利用するための基本的な操作ルーチン群を紹介します。
まず、7セグメントLEDの操作ルーチンで使用する変数と定数を定義します。定義する主な変数は以下の様になります。
フォントデータは、各数字に対して、7セグメントLEDのどのセグメント(LED)を光らせるかを指定したデータ配列です。
7セグメントLEDはその名の通り、LEDが7個(ドットを除く)しかないので、数値以外の表示にあまり高度な表現力を求めるのは酷です。それでも、フォントデータを書き換えると、いろいろな表現を楽しむことができます。
また、自分でフォントデータの作成をしてみるとよく経験することですが、データをちょっと間違えると、分けのわからない表示になります。これを逆から見れば、7セグメントに限定されていても、それなりの表現上のバラエティーがあるということではないでしょうか。
7セグメントLEDの初期化ルーチンSEG7_initを示します。初期化ルーチンの処理内容は以下の通りです。
この初期化ルーチンの呼び出し方式では、7セグメントLEDを操作するために割り当てたI/Oピンを自由に指定できるため、引数を変更するだけで、I/Oピンのどのような割当にも対応できます。
7セグメントLEDへの出力ルーチンとしてSEG7_writeを用意しました。SEG7_writeは、7セグメントLEDに表示したい数値を引数に与えて呼び出します。
出力ルーチンは、7セグメントLEDの各セグメントに対応するメモリ上のデータを操作するだけで、実際に7セグメントLEDを操作して点灯したり消灯したり操作は含んでいません。
メモリ上で操作された点ごとのデータを7セグメントLEDの表示に反映させる操作は、以下のSEG7_updateが担当しています。
SEG7_updateは、ダイナミック表示方式の中核的な操作を担っており、スケッチの中では、SEG7_updateを定期的かつ短い周期で呼び出し続ける必要があります。
ここまでで、7セグメントLEDを操作する基本的なルーチン群は、出来上がりです。
それでは、前述の7セグメントLED表示プログラムを利用したスケッチを記述してみましょう。
スケッチの初期化処理を記述するsetup()では、7セグメントLED表示ルーチンを初期化するSEG7_initの呼び出しを行います。ここではVALKYRIEでの利用を想定して引数を記載しています。コメントでGHOSTでの引数も記載しておきます。
スケッチの繰り返し処理を記載するloop()には、7セグメントLEDの表示更新を行うSEG7_updateの呼び出しを記載し、継続的かつできるだけ定期的に呼び出される様にします。