code mbed panneau led

Dependencies:   BSP_DISCO_F746NG

Committer:
kevin0208
Date:
Wed Jun 15 14:49:23 2022 +0000
Revision:
0:aac309284a25
code Mbed panneau leds

Who changed what in which revision?

UserRevisionLine numberNew 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