Akizuki 32x16 dot LED Matrix unit (K-03735) control library.
秋月電子の32×16ドットLEDマトリクス表示装置(K-03735)を制御するライブラリです。
バッファの内容をそのままLEDマトリクス装置に送ります。
LEDマトリクス表示装置は最大4台まで接続できるので、接続台数を必ず指定してください。(この台数でバッファのサイズを計算しています。)
行間表示は1msのdelayを入れています。パラメタで変更可能です。
このライブラリの呼び出し元は基本的にwhile()でループしてください。
初めてのライブラリなのでメンバ関数もドキュメントとかまだ最低限です。
おかしなところはぜひコメントをください。
表示例は以下ページをご覧ください。
akiledmatrix.cpp@2:ddef08e13c8e, 2013-06-03 (annotated)
- Committer:
- kanpapa
- Date:
- Mon Jun 03 15:45:48 2013 +0000
- Revision:
- 2:ddef08e13c8e
- Parent:
- 1:2705be49d5e2
- Child:
- 3:532c50dc800e
bug fix. 2 LED unit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kanpapa | 0:bf351a2fa565 | 1 | #include "akiledmatrix.h" |
kanpapa | 0:bf351a2fa565 | 2 | #include "mbed.h" |
kanpapa | 0:bf351a2fa565 | 3 | |
kanpapa | 0:bf351a2fa565 | 4 | AkiLedMatrix::AkiLedMatrix(PinName sin1, |
kanpapa | 0:bf351a2fa565 | 5 | PinName sin2, |
kanpapa | 0:bf351a2fa565 | 6 | PinName sin3, |
kanpapa | 0:bf351a2fa565 | 7 | PinName clock, |
kanpapa | 0:bf351a2fa565 | 8 | PinName latch, |
kanpapa | 1:2705be49d5e2 | 9 | PinName strobe, |
kanpapa | 2:ddef08e13c8e | 10 | int maxledunit) : |
kanpapa | 0:bf351a2fa565 | 11 | _sin1(sin1), |
kanpapa | 0:bf351a2fa565 | 12 | _sin2(sin2), |
kanpapa | 0:bf351a2fa565 | 13 | _sin3(sin3), |
kanpapa | 0:bf351a2fa565 | 14 | _clock(clock), |
kanpapa | 0:bf351a2fa565 | 15 | _latch(latch), |
kanpapa | 1:2705be49d5e2 | 16 | _strobe(strobe), |
kanpapa | 1:2705be49d5e2 | 17 | _maxledunit(maxledunit) { |
kanpapa | 0:bf351a2fa565 | 18 | // initrize |
kanpapa | 0:bf351a2fa565 | 19 | _sin1 = 0; |
kanpapa | 0:bf351a2fa565 | 20 | _sin2 = 0; |
kanpapa | 0:bf351a2fa565 | 21 | _sin3 = 0; |
kanpapa | 0:bf351a2fa565 | 22 | _clock = 0; |
kanpapa | 0:bf351a2fa565 | 23 | _latch = 1; |
kanpapa | 0:bf351a2fa565 | 24 | _strobe = 0; // LED ON |
kanpapa | 1:2705be49d5e2 | 25 | _maxledunit = 1; // The number of LED units. (default 1 unit) |
kanpapa | 0:bf351a2fa565 | 26 | } |
kanpapa | 0:bf351a2fa565 | 27 | |
kanpapa | 2:ddef08e13c8e | 28 | void AkiLedMatrix::display(const unsigned char *buffer, int delay) { |
kanpapa | 0:bf351a2fa565 | 29 | int bufp = 0; // buffer pointer |
kanpapa | 0:bf351a2fa565 | 30 | |
kanpapa | 1:2705be49d5e2 | 31 | for (int y = 0; y < 16; y++){ |
kanpapa | 2:ddef08e13c8e | 32 | for (int ledno = (_maxledunit - 1); ledno >= 0; ledno--){ |
kanpapa | 2:ddef08e13c8e | 33 | uint16_t led1_data = buffer[ledno * 4 + bufp + 0] * 256 + buffer[ledno * 4 + bufp + 1]; |
kanpapa | 2:ddef08e13c8e | 34 | uint16_t led2_data = buffer[ledno * 4 + bufp + 2] * 256 + buffer[ledno * 4 + bufp + 3]; |
kanpapa | 0:bf351a2fa565 | 35 | |
kanpapa | 2:ddef08e13c8e | 36 | for (int x = 0; x < 16; x++){ |
kanpapa | 2:ddef08e13c8e | 37 | if (x == y){ |
kanpapa | 2:ddef08e13c8e | 38 | _sin1 = 1; |
kanpapa | 2:ddef08e13c8e | 39 | } else { |
kanpapa | 2:ddef08e13c8e | 40 | _sin1 = 0; |
kanpapa | 2:ddef08e13c8e | 41 | } |
kanpapa | 0:bf351a2fa565 | 42 | |
kanpapa | 2:ddef08e13c8e | 43 | // LED1 |
kanpapa | 2:ddef08e13c8e | 44 | _sin2 = led1_data & 0x01; |
kanpapa | 2:ddef08e13c8e | 45 | led1_data = led1_data >> 1; |
kanpapa | 0:bf351a2fa565 | 46 | |
kanpapa | 2:ddef08e13c8e | 47 | // LED2 |
kanpapa | 2:ddef08e13c8e | 48 | _sin3 = led2_data & 0x01; |
kanpapa | 2:ddef08e13c8e | 49 | led2_data = led2_data >> 1; |
kanpapa | 0:bf351a2fa565 | 50 | |
kanpapa | 2:ddef08e13c8e | 51 | wait_us(2); // tSETUP min:1.2us |
kanpapa | 0:bf351a2fa565 | 52 | |
kanpapa | 2:ddef08e13c8e | 53 | // set clock |
kanpapa | 2:ddef08e13c8e | 54 | _clock = 1; |
kanpapa | 2:ddef08e13c8e | 55 | wait_us(1); // twCLK min:1.0us |
kanpapa | 2:ddef08e13c8e | 56 | _clock = 0; |
kanpapa | 2:ddef08e13c8e | 57 | } |
kanpapa | 1:2705be49d5e2 | 58 | } |
kanpapa | 1:2705be49d5e2 | 59 | // set latch |
kanpapa | 1:2705be49d5e2 | 60 | _latch = 0; |
kanpapa | 1:2705be49d5e2 | 61 | wait_us(2); // twLAT min:2.0us |
kanpapa | 1:2705be49d5e2 | 62 | _latch = 1; |
kanpapa | 0:bf351a2fa565 | 63 | |
kanpapa | 1:2705be49d5e2 | 64 | wait_us(delay); |
kanpapa | 0:bf351a2fa565 | 65 | |
kanpapa | 2:ddef08e13c8e | 66 | bufp = bufp + (_maxledunit * 4); |
kanpapa | 2:ddef08e13c8e | 67 | if (bufp > (_maxledunit * 64)) { |
kanpapa | 1:2705be49d5e2 | 68 | bufp = 0; |
kanpapa | 0:bf351a2fa565 | 69 | } |
kanpapa | 0:bf351a2fa565 | 70 | } |
kanpapa | 0:bf351a2fa565 | 71 | } |