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