Akizuki 32x16 dot LED Matrix unit (K-03735) control library.

秋月電子の32×16ドットLEDマトリクス表示装置(K-03735)を制御するライブラリです。
バッファの内容をそのままLEDマトリクス装置に送ります。
LEDマトリクス表示装置は最大4台まで接続できるので、接続台数を必ず指定してください。(この台数でバッファのサイズを計算しています。)
行間表示は1msのdelayを入れています。パラメタで変更可能です。
このライブラリの呼び出し元は基本的にwhile()でループしてください。
初めてのライブラリなのでメンバ関数もドキュメントとかまだ最低限です。
おかしなところはぜひコメントをください。

表示例は以下ページをご覧ください。

Revision:
12:4e85b39e922b
Parent:
9:988d937735e0
--- a/akiledmatrix.cpp	Sun Jun 09 12:57:36 2013 +0000
+++ b/akiledmatrix.cpp	Sun Jun 09 14:00:10 2013 +0000
@@ -7,6 +7,7 @@
                  PinName clock,
                  PinName latch,
                  PinName strobe,
+                 const int ledunit,
                  const int rowsize,
                  const int delay,
                  const int shift_count_init) :
@@ -16,6 +17,7 @@
                  _clock(clock),
                  _latch(latch),
                  _strobe(strobe),
+                 _ledunit(ledunit),
                  _rowsize(rowsize),
                  _delay(delay),
                  _shift_count_init(shift_count_init) {
@@ -64,7 +66,7 @@
 void AkiLedMatrix::display(unsigned char *buffer) {
     for (int y = 0; y < 16; y++){
         int bufp = y * _rowsize;  // buffer pointer
-        for (int ledno = 3; ledno >= 0; ledno--){
+        for (int ledno = (_ledunit - 1); ledno >= 0; ledno--){
             uint16_t led1_data = buffer[bufp + ledno * 4]     << 8 | buffer[bufp + ledno * 4 + 1];
             uint16_t led2_data = buffer[bufp + ledno * 4 + 2] << 8 | buffer[bufp + ledno * 4 + 3];
             
@@ -100,9 +102,11 @@
         wait_us(_delay);
         
         // shift check
-        if (shift_count-- == 0){
-            bitshift(buffer, _rowsize);
-            shift_count = _shift_count_init;
+        if (_shift_count_init != 0){
+            if (shift_count-- == 0){
+                bitshift(buffer, _rowsize);
+                shift_count = _shift_count_init;
+            }
         }
     }
 }
@@ -110,3 +114,7 @@
 int AkiLedMatrix::getrowsize(){
     return _rowsize;
 }
+
+int AkiLedMatrix::getledunit(){
+    return _ledunit;
+}