You are here

7セグメントLEDの利用

Arduinoの代表的な用途であるフィジカル・コンピューティングでは、時間や電圧に換算された温度、明るさ、傾き、その他様々なセンシングデータを取得して利用します。これらのデータ値を手軽に数値で確認できると助かることも多いですよね。このような時は、7セグメントLEDを利用した数値表示装置が大変役立ちます。

ここではBLUE-7SEG-1を対象として、Arduinoでの7セグメントLEDの基本的な操作法を紹介します。REDUINO-VALKYRIEREDUINO-GHOSTでは、このような魅力的な表示装置を面倒なワイヤワークを行うことなくワンタッチで利用できます。

BLUE-7SEG-1は、4桁の7セグメントLEDで、文字LCDの4ビットモードで利用する信号線で制御することができ、Arduinoで簡単かつ省ピン構成で制御することが出来ます。

ネットショップ:

7セグメントLED表示ライブラリ

REDUINOシリーズでは、>red7SEG:7セグメントLED表示ライブラリを利用することで、7セグメントLEDを簡単に利用することができます。7セグメントLED表示装置をすぐに活用したい方は、、red7SEGをダウンロードしてArduino IDEのライブラリに追加してご活用ください。

7セグメントLED表示操作

ここでは、7セグメントLED表示装置の処理方法を知りたい方のために、7セグメントLEDを利用するための基本的な操作ルーチン群を紹介します。

まず、7セグメントLEDの操作ルーチンで使用する変数と定数を定義します。定義する主な変数は以下の様になります。

  • 7セグメントLEDを操作するI/Oピンを記録する変数
  • 7セグメントLEDに表示するデータを記録する配列
  • 7セグメントLEDに表示するフォントデータ

フォントデータは、各数字に対して、7セグメントLEDのどのセグメント(LED)を光らせるかを指定したデータ配列です。

7セグメントLEDはその名の通り、LEDが7個(ドットを除く)しかないので、数値以外の表示にあまり高度な表現力を求めるのは酷です。それでも、フォントデータを書き換えると、いろいろな表現を楽しむことができます。

また、自分でフォントデータの作成をしてみるとよく経験することですが、データをちょっと間違えると、分けのわからない表示になります。これを逆から見れば、7セグメントに限定されていても、それなりの表現上のバラエティーがあるということではないでしょうか。

7セグメントLEDの初期化ルーチンSEG7_initを示します。初期化ルーチンの処理内容は以下の通りです。

  • 引数として与えられたI/Oピンの組み合わせを以降の7セグメントLEDの操作のために記録します。
  • 7セグメントLEDを操作できる様に、与えられたI/Oピンを出力用に設定します。

この初期化ルーチンの呼び出し方式では、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の呼び出しを記載し、継続的かつできるだけ定期的に呼び出される様にします。

開発ソフト: