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