
code mbed panneau led
Dependencies: BSP_DISCO_F746NG
LEDMatrix.h@0:aac309284a25, 2022-06-15 (annotated)
- Committer:
- kevin0208
- Date:
- Wed Jun 15 14:49:23 2022 +0000
- Revision:
- 0:aac309284a25
code Mbed panneau leds
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kevin0208 | 0:aac309284a25 | 1 | /** |
kevin0208 | 0:aac309284a25 | 2 | * LED Matrix library for http://www.seeedstudio.com/depot/ultrathin-16x32-red-led-matrix-panel-p-1582.html |
kevin0208 | 0:aac309284a25 | 3 | * The LED Matrix panel has 32x16 pixels. Several panel can be combined together as a large screen. |
kevin0208 | 0:aac309284a25 | 4 | * |
kevin0208 | 0:aac309284a25 | 5 | * Coordinate & Connection (mbed -> panel 0 -> panel 1 -> ...) |
kevin0208 | 0:aac309284a25 | 6 | * (0, 0) (0, 0) |
kevin0208 | 0:aac309284a25 | 7 | * +--------+--------+--------+ +--------+--------+ |
kevin0208 | 0:aac309284a25 | 8 | * | 5 | 3 | 1 | | 1 | 0 | |
kevin0208 | 0:aac309284a25 | 9 | * | | | | | | |<----- mbed |
kevin0208 | 0:aac309284a25 | 10 | * +--------+--------+--------+ +--------+--------+ |
kevin0208 | 0:aac309284a25 | 11 | * | 4 | 2 | 0 | (64, 16) |
kevin0208 | 0:aac309284a25 | 12 | * | | | |<----- mbed |
kevin0208 | 0:aac309284a25 | 13 | * +--------+--------+--------+ |
kevin0208 | 0:aac309284a25 | 14 | * (96, 32) |
kevin0208 | 0:aac309284a25 | 15 | * Copyright (c) 2013 Seeed Technology Inc. |
kevin0208 | 0:aac309284a25 | 16 | * @auther Yihui Xiong |
kevin0208 | 0:aac309284a25 | 17 | * @date Nov 7, 2013 |
kevin0208 | 0:aac309284a25 | 18 | * @license Apache |
kevin0208 | 0:aac309284a25 | 19 | */ |
kevin0208 | 0:aac309284a25 | 20 | |
kevin0208 | 0:aac309284a25 | 21 | |
kevin0208 | 0:aac309284a25 | 22 | #ifndef __LED_MATRIX_H__ |
kevin0208 | 0:aac309284a25 | 23 | #define __LED_MATRIX_H__ |
kevin0208 | 0:aac309284a25 | 24 | |
kevin0208 | 0:aac309284a25 | 25 | #include "mbed.h" |
kevin0208 | 0:aac309284a25 | 26 | #include "fonts.h" |
kevin0208 | 0:aac309284a25 | 27 | |
kevin0208 | 0:aac309284a25 | 28 | class LEDMatrix { |
kevin0208 | 0:aac309284a25 | 29 | public: |
kevin0208 | 0:aac309284a25 | 30 | LEDMatrix(PinName pinA, PinName pinB, PinName pinC, PinName pinD, PinName pinOE, |
kevin0208 | 0:aac309284a25 | 31 | PinName pinR1, PinName pinR2, PinName pinB1, PinName pinB2, PinName pinG1, PinName pinG2, |
kevin0208 | 0:aac309284a25 | 32 | PinName pinSTB, PinName pinCLK); |
kevin0208 | 0:aac309284a25 | 33 | |
kevin0208 | 0:aac309284a25 | 34 | /** |
kevin0208 | 0:aac309284a25 | 35 | * set the display's display buffer and number, the buffer's size must be not less than 512 * number / 8 bytes |
kevin0208 | 0:aac309284a25 | 36 | * @param displaybuf display buffer |
kevin0208 | 0:aac309284a25 | 37 | * @param number panels' number |
kevin0208 | 0:aac309284a25 | 38 | */ |
kevin0208 | 0:aac309284a25 | 39 | void begin(uint8_t *displaybuf, uint16_t width, uint16_t height); |
kevin0208 | 0:aac309284a25 | 40 | |
kevin0208 | 0:aac309284a25 | 41 | /** |
kevin0208 | 0:aac309284a25 | 42 | * draw a point |
kevin0208 | 0:aac309284a25 | 43 | * @param x x |
kevin0208 | 0:aac309284a25 | 44 | * @param y y |
kevin0208 | 0:aac309284a25 | 45 | * @param pixel 0: led off, >0: led on |
kevin0208 | 0:aac309284a25 | 46 | */ |
kevin0208 | 0:aac309284a25 | 47 | void drawPoint(uint16_t x, uint16_t y, uint8_t pixel); |
kevin0208 | 0:aac309284a25 | 48 | |
kevin0208 | 0:aac309284a25 | 49 | /** |
kevin0208 | 0:aac309284a25 | 50 | * draw a rect |
kevin0208 | 0:aac309284a25 | 51 | * @param (x1, y1) top-left position |
kevin0208 | 0:aac309284a25 | 52 | * @param (x2, y2) bottom-right position, not included in the rect |
kevin0208 | 0:aac309284a25 | 53 | * @param pixel 0: rect off, >0: rect on |
kevin0208 | 0:aac309284a25 | 54 | */ |
kevin0208 | 0:aac309284a25 | 55 | void drawRect(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t pixel); |
kevin0208 | 0:aac309284a25 | 56 | |
kevin0208 | 0:aac309284a25 | 57 | int drawChar(uint16_t x, uint16_t y, char c, uint8_t pixel, Font *font); |
kevin0208 | 0:aac309284a25 | 58 | |
kevin0208 | 0:aac309284a25 | 59 | void drawCharString (uint16_t x, uint16_t y, char *c, uint8_t pixel, Font *font); |
kevin0208 | 0:aac309284a25 | 60 | |
kevin0208 | 0:aac309284a25 | 61 | void drawCharBig(uint16_t x, uint16_t y, char c, uint8_t pixel); |
kevin0208 | 0:aac309284a25 | 62 | |
kevin0208 | 0:aac309284a25 | 63 | /** |
kevin0208 | 0:aac309284a25 | 64 | * draw a image |
kevin0208 | 0:aac309284a25 | 65 | * @param (x1, y1) top-left position |
kevin0208 | 0:aac309284a25 | 66 | * @param (x2, y2) bottom-right position, not included in the rect |
kevin0208 | 0:aac309284a25 | 67 | * @param pixels contents, 1 bit to 1 led |
kevin0208 | 0:aac309284a25 | 68 | */ |
kevin0208 | 0:aac309284a25 | 69 | void drawImage(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2, uint8_t *image); |
kevin0208 | 0:aac309284a25 | 70 | |
kevin0208 | 0:aac309284a25 | 71 | /** |
kevin0208 | 0:aac309284a25 | 72 | * Set screen buffer to zero |
kevin0208 | 0:aac309284a25 | 73 | */ |
kevin0208 | 0:aac309284a25 | 74 | void clear(); |
kevin0208 | 0:aac309284a25 | 75 | |
kevin0208 | 0:aac309284a25 | 76 | /** |
kevin0208 | 0:aac309284a25 | 77 | * turn off 1/16 leds and turn on another 1/16 leds |
kevin0208 | 0:aac309284a25 | 78 | */ |
kevin0208 | 0:aac309284a25 | 79 | void scan(); |
kevin0208 | 0:aac309284a25 | 80 | |
kevin0208 | 0:aac309284a25 | 81 | void reverse(); |
kevin0208 | 0:aac309284a25 | 82 | |
kevin0208 | 0:aac309284a25 | 83 | uint8_t isReversed(); |
kevin0208 | 0:aac309284a25 | 84 | |
kevin0208 | 0:aac309284a25 | 85 | void on(); |
kevin0208 | 0:aac309284a25 | 86 | |
kevin0208 | 0:aac309284a25 | 87 | void off(); |
kevin0208 | 0:aac309284a25 | 88 | |
kevin0208 | 0:aac309284a25 | 89 | void swap(); |
kevin0208 | 0:aac309284a25 | 90 | |
kevin0208 | 0:aac309284a25 | 91 | int synchro(); |
kevin0208 | 0:aac309284a25 | 92 | |
kevin0208 | 0:aac309284a25 | 93 | private: |
kevin0208 | 0:aac309284a25 | 94 | DigitalOut a, b, c, d, oe, r1, r2, b1, b2, g1, g2, stb, clk; |
kevin0208 | 0:aac309284a25 | 95 | uint8_t *displaybuf, *memoBuf, *drawBuf; |
kevin0208 | 0:aac309284a25 | 96 | uint16_t width; |
kevin0208 | 0:aac309284a25 | 97 | uint16_t height; |
kevin0208 | 0:aac309284a25 | 98 | uint8_t mask; |
kevin0208 | 0:aac309284a25 | 99 | uint8_t state; |
kevin0208 | 0:aac309284a25 | 100 | int bufferIndex; |
kevin0208 | 0:aac309284a25 | 101 | volatile int flagSwap; |
kevin0208 | 0:aac309284a25 | 102 | }; |
kevin0208 | 0:aac309284a25 | 103 | |
kevin0208 | 0:aac309284a25 | 104 | #endif |
kevin0208 | 0:aac309284a25 | 105 |