プロジェクト9: 8×16 表情LEDドットマトリクス

(1)概要:

ロボットに表情ボードを追加したら楽しくないでしょうか?Keyestudio 8×16 LEDドットマトリクスがその役割を果たします。これを使えば、表情、画像、パターンなどの表示を自分でデザインすることができます。

8×16 LEDボードには128個のLEDが搭載されています。マイクロプロセッサ(Arduino)のデータは、2線式バスインターフェースを通じてAiP1640と通信します。これにより、モジュール上の128個のLEDのオン・オフを制御し、モジュール上のドットマトリクスに必要なパターンを表示させることができます。配線を簡単にするためにHX-2.54 4Pinケーブルが付属しています。

(2)仕様:

  • 動作電圧: DC 3.3-5V

  • 消費電力: 400mW

  • 発振周波数: 450KHz

  • 駆動電流: 200mA

  • 動作温度: -40〜80℃

  • 通信方式: 2線式バス

(3)知識:

8×16 LEDドットマトリクスの回路

8×16 LEDドットマトリクスの原理

8×16ドットマトリクスの各LEDをどのように制御するのでしょうか?各バイトは8ビットを持ち、各ビットは0または1です。0の場合LEDはオフ、1の場合LEDはオンになります。1バイトでLEDの1列を制御でき、16バイトで16列のLEDを制御できます。これが8×16ドットマトリクスです。

ピンの説明と通信プロトコル

マイクロプロセッサ(Arduino)のデータは、2線式バスケーブルを通じてAiP1640と通信します。

通信プロトコルの図は以下の通りです(SCLKはSCL、DINはSDAです)。

①データ入力の開始条件: SCLがハイレベルの時にSDAがハイからローに変化します。

②データコマンドの設定方法は以下の図の通りです。

サンプルプログラムでは、アドレスを自動的に1加算する方法を選択しており、2進数値は0100 0000、対応する16進数値は0x40です。

③アドレスコマンドの設定では、以下のようにアドレスを選択できます。

サンプルプログラムでは最初の00Hを選択しており、2進数1100 0000は16進数0xc0に対応します。

④データ入力の要件として、データ入力時にSCLがハイレベルの場合、SDA上の信号は変化してはなりません。SCLのクロック信号がローレベルの時のみ、SDA上の信号を変更できます。データの入力は下位ビットが先で、上位ビットが後です。

⑤データ転送終了の条件は、SCLがローレベルでSDAがローレベルの時にSCLがハイレベルになり、SDAのレベルがハイになることです。

⑥表示制御として、異なるパルス幅を設定します。パルス幅は以下の図のように選択できます。

例ではパルス幅は4/16で、1000 1010に対応する16進数は0x8Aです。

モジュールツールの使い方の説明

ドットマトリクスツールはオンライン版を使用します。リンクは以下の通りです: http://dotmatrixtool.com/#

①リンクにアクセスすると、以下のようなページが表示されます。

②ドットマトリクスは8×16なので、高さを8、幅を16に調整します(以下の図参照)。

③パターンから16進数データを生成します。

以下の図のように、左クリックで選択、右クリックでキャンセルします。描きたいパターンを描き、「Generate」をクリックすると、必要な16進数データが生成されます。

(4)接続図:

8×16 LED光ボードのGND、VCC、SDA、SCLは、2線式シリアル通信のために拡張ボードのG(GND)、V(VCC)、A4、A5にそれぞれ接続されています。

(注意: ArduinoのIICピンに接続されていますが、このモジュールはIIC通信用ではありません。ここのIOポートはI2C通信をシミュレートするためのもので、任意の2つのピンに接続できます。)

(5)テストコード:

ブロックをドラッグしてコードを編集することもできます(以下参照)。

完全なテストコード

(注意: コードをアップロードする前にBluetoothモジュールを接続しないでください。コードのアップロードにもシリアル通信を使用するため、Bluetoothシリアル通信と競合が発生し、アップロードに失敗する可能性があります。)

(6)テスト結果:

テストコードを正常にアップロードし、配線を行い、DIPスイッチをON側に切り替えて電源を入れると、ドットマトリクスに笑顔のパターンが表示されます。

(7)応用練習:

先ほど学んだモジュールツール http://dotmatrixtool.com/# を使って、ドットマトリクスにスタート、前進、停止のパターンを表示させ、その後パターンをクリアします。時間間隔は2000ミリ秒です。

笑顔を表示するブロック

表情を表示するコード

ハートを表示するブロック

前進するコード

後退するブロック

左折するブロック

右折するブロック

停止するブロック

クリアするブロック

ブロックをドラッグしてコードを編集することもできます(以下参照)。

(1)

(2)

(3)

完全なテストコード

(注意: コードをアップロードする前にBluetoothモジュールを接続しないでください。コードのアップロードにもシリアル通信を使用するため、Bluetoothシリアル通信と競合が発生し、アップロードに失敗する可能性があります。)

コードを開発ボードにアップロードすると、8×16ボードに以下のパターンが表示されます。