CARPENTIER ANTOINE
/
panneau
LAST PUBLISH MATRIX PROJECT
main.cpp@0:c78ec5cab98d, 2018-03-23 (annotated)
- Committer:
- iut_cachan01
- Date:
- Fri Mar 23 13:28:47 2018 +0000
- Revision:
- 0:c78ec5cab98d
- Child:
- 1:7a7366246b30
Panneau Base
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
iut_cachan01 | 0:c78ec5cab98d | 1 | /** |
iut_cachan01 | 0:c78ec5cab98d | 2 | * LED Matrix library for http://www.seeedstudio.com/depot/ultrathin-16x32-red-led-matrix-panel-p-1582.html |
iut_cachan01 | 0:c78ec5cab98d | 3 | * The LED Matrix panel has 32x16 pixels. Several panel can be combined together as a large screen. |
iut_cachan01 | 0:c78ec5cab98d | 4 | * |
iut_cachan01 | 0:c78ec5cab98d | 5 | * Coordinate & Connection (mbed -> panel 0 -> panel 1 -> ...) |
iut_cachan01 | 0:c78ec5cab98d | 6 | * (0, 0) (0, 0) |
iut_cachan01 | 0:c78ec5cab98d | 7 | * +--------+--------+--------+ +--------+--------+ |
iut_cachan01 | 0:c78ec5cab98d | 8 | * | 5 | 3 | 1 | | 1 | 0 | |
iut_cachan01 | 0:c78ec5cab98d | 9 | * | | | | | | |<----- mbed |
iut_cachan01 | 0:c78ec5cab98d | 10 | * +--------+--------+--------+ +--------+--------+ |
iut_cachan01 | 0:c78ec5cab98d | 11 | * | 4 | 2 | 0 | (64, 16) |
iut_cachan01 | 0:c78ec5cab98d | 12 | * | | | |<----- mbed |
iut_cachan01 | 0:c78ec5cab98d | 13 | * +--------+--------+--------+ |
iut_cachan01 | 0:c78ec5cab98d | 14 | * (96, 32) |
iut_cachan01 | 0:c78ec5cab98d | 15 | * |
iut_cachan01 | 0:c78ec5cab98d | 16 | */ |
iut_cachan01 | 0:c78ec5cab98d | 17 | |
iut_cachan01 | 0:c78ec5cab98d | 18 | #include "mbed.h" |
iut_cachan01 | 0:c78ec5cab98d | 19 | #include "LEDMatrix.h" |
iut_cachan01 | 0:c78ec5cab98d | 20 | #include "smallFont.h" |
iut_cachan01 | 0:c78ec5cab98d | 21 | |
iut_cachan01 | 0:c78ec5cab98d | 22 | #define WIDTH 128 |
iut_cachan01 | 0:c78ec5cab98d | 23 | #define HEIGHT 64 |
iut_cachan01 | 0:c78ec5cab98d | 24 | |
iut_cachan01 | 0:c78ec5cab98d | 25 | BusOut leds(LED1, LED2, LED3, LED4); |
iut_cachan01 | 0:c78ec5cab98d | 26 | //stb c'est le latch |
iut_cachan01 | 0:c78ec5cab98d | 27 | // LEDMatrix(a, b, c, d, oe_1, r3, r4, b3, b4, g3, g4, g1, r1, b1, r2, g2, b2, stb_1, clk_1,); |
iut_cachan01 | 0:c78ec5cab98d | 28 | LEDMatrix matrix(p12, p13, p14, p15, p18, p25, p23, p24, p21, p26, p22, p9, p8, p10, p7, p11, p6, p17, p16); |
iut_cachan01 | 0:c78ec5cab98d | 29 | Ticker scanner; |
iut_cachan01 | 0:c78ec5cab98d | 30 | |
iut_cachan01 | 0:c78ec5cab98d | 31 | // Display Buffer |
iut_cachan01 | 0:c78ec5cab98d | 32 | uint8_t displaybuf[2][WIDTH *HEIGHT] = { |
iut_cachan01 | 0:c78ec5cab98d | 33 | 0x00 |
iut_cachan01 | 0:c78ec5cab98d | 34 | }; |
iut_cachan01 | 0:c78ec5cab98d | 35 | |
iut_cachan01 | 0:c78ec5cab98d | 36 | // Instantiation de Led |
iut_cachan01 | 0:c78ec5cab98d | 37 | DigitalOut Led(LED1); |
iut_cachan01 | 0:c78ec5cab98d | 38 | |
iut_cachan01 | 0:c78ec5cab98d | 39 | // Initialisation de la liaison Bluetooth |
iut_cachan01 | 0:c78ec5cab98d | 40 | Serial Bluetooth(p28, p27); // tx, rx |
iut_cachan01 | 0:c78ec5cab98d | 41 | |
iut_cachan01 | 0:c78ec5cab98d | 42 | // 16 * 8 digital font |
iut_cachan01 | 0:c78ec5cab98d | 43 | const uint8_t digitals[] = { |
iut_cachan01 | 0:c78ec5cab98d | 44 | 0x00, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00, // 0 |
iut_cachan01 | 0:c78ec5cab98d | 45 | 0x00, 0x18, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00, 0x00, // 1 |
iut_cachan01 | 0:c78ec5cab98d | 46 | 0x00, 0x3E, 0x63, 0x63, 0x63, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x63, 0x7F, 0x00, 0x00, 0x00, 0x00, // 2 |
iut_cachan01 | 0:c78ec5cab98d | 47 | 0x00, 0x3E, 0x63, 0x63, 0x06, 0x1C, 0x06, 0x03, 0x03, 0x63, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, // 3 |
iut_cachan01 | 0:c78ec5cab98d | 48 | 0x00, 0x06, 0x0E, 0x1E, 0x36, 0x36, 0x66, 0x66, 0x7F, 0x06, 0x06, 0x1F, 0x00, 0x00, 0x00, 0x00, // 4 |
iut_cachan01 | 0:c78ec5cab98d | 49 | 0x00, 0x7F, 0x60, 0x60, 0x60, 0x7C, 0x76, 0x03, 0x03, 0x63, 0x66, 0x3C, 0x00, 0x00, 0x00, 0x00, // 5 |
iut_cachan01 | 0:c78ec5cab98d | 50 | 0x00, 0x1E, 0x36, 0x60, 0x60, 0x7C, 0x76, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x00, 0x00, 0x00, 0x00, // 6 |
iut_cachan01 | 0:c78ec5cab98d | 51 | 0x00, 0x7F, 0x66, 0x66, 0x0C, 0x0C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00, // 7 |
iut_cachan01 | 0:c78ec5cab98d | 52 | 0x00, 0x3E, 0x63, 0x63, 0x63, 0x36, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x3E, 0x00, 0x00, 0x00, 0x00, // 8 |
iut_cachan01 | 0:c78ec5cab98d | 53 | 0x00, 0x1C, 0x36, 0x63, 0x63, 0x63, 0x37, 0x1F, 0x03, 0x03, 0x36, 0x3C, 0x00, 0x00, 0x00, 0x00, // 9 |
iut_cachan01 | 0:c78ec5cab98d | 54 | }; |
iut_cachan01 | 0:c78ec5cab98d | 55 | |
iut_cachan01 | 0:c78ec5cab98d | 56 | // (x, y) top-left position, x should be multiple of 8 |
iut_cachan01 | 0:c78ec5cab98d | 57 | void drawDigital(uint16_t x, uint16_t y, uint8_t n) |
iut_cachan01 | 0:c78ec5cab98d | 58 | { |
iut_cachan01 | 0:c78ec5cab98d | 59 | /* if ((n >= 10) || (0 != (x % 8))) { |
iut_cachan01 | 0:c78ec5cab98d | 60 | return; |
iut_cachan01 | 0:c78ec5cab98d | 61 | } |
iut_cachan01 | 0:c78ec5cab98d | 62 | |
iut_cachan01 | 0:c78ec5cab98d | 63 | uint8_t *pDst = displaybuf + y * (WIDTH / 8) + x / 8; |
iut_cachan01 | 0:c78ec5cab98d | 64 | const uint8_t *pSrc = digitals + n * 16; |
iut_cachan01 | 0:c78ec5cab98d | 65 | for (uint8_t i = 0; i < 16; i++) { |
iut_cachan01 | 0:c78ec5cab98d | 66 | *pDst = *pSrc; |
iut_cachan01 | 0:c78ec5cab98d | 67 | pDst += WIDTH / 8; |
iut_cachan01 | 0:c78ec5cab98d | 68 | pSrc++; |
iut_cachan01 | 0:c78ec5cab98d | 69 | }*/ |
iut_cachan01 | 0:c78ec5cab98d | 70 | } |
iut_cachan01 | 0:c78ec5cab98d | 71 | |
iut_cachan01 | 0:c78ec5cab98d | 72 | |
iut_cachan01 | 0:c78ec5cab98d | 73 | void scan() |
iut_cachan01 | 0:c78ec5cab98d | 74 | { |
iut_cachan01 | 0:c78ec5cab98d | 75 | matrix.scan(); |
iut_cachan01 | 0:c78ec5cab98d | 76 | } |
iut_cachan01 | 0:c78ec5cab98d | 77 | |
iut_cachan01 | 0:c78ec5cab98d | 78 | void setup() |
iut_cachan01 | 0:c78ec5cab98d | 79 | { |
iut_cachan01 | 0:c78ec5cab98d | 80 | // Initialisation Communication et premier message Bluetooth |
iut_cachan01 | 0:c78ec5cab98d | 81 | Bluetooth.baud(9600);//vitesse de communication |
iut_cachan01 | 0:c78ec5cab98d | 82 | Bluetooth.format(8,SerialBase::None,1);// |
iut_cachan01 | 0:c78ec5cab98d | 83 | |
iut_cachan01 | 0:c78ec5cab98d | 84 | Bluetooth.printf("\r\n Setup OK !! \r\n"); |
iut_cachan01 | 0:c78ec5cab98d | 85 | |
iut_cachan01 | 0:c78ec5cab98d | 86 | // Clignotement led |
iut_cachan01 | 0:c78ec5cab98d | 87 | Led = 1; |
iut_cachan01 | 0:c78ec5cab98d | 88 | wait(1); |
iut_cachan01 | 0:c78ec5cab98d | 89 | Led = 0; |
iut_cachan01 | 0:c78ec5cab98d | 90 | wait(1); |
iut_cachan01 | 0:c78ec5cab98d | 91 | Led = 1; |
iut_cachan01 | 0:c78ec5cab98d | 92 | } //End setup |
iut_cachan01 | 0:c78ec5cab98d | 93 | |
iut_cachan01 | 0:c78ec5cab98d | 94 | int main() |
iut_cachan01 | 0:c78ec5cab98d | 95 | { |
iut_cachan01 | 0:c78ec5cab98d | 96 | setup(); |
iut_cachan01 | 0:c78ec5cab98d | 97 | int i, j, c=1; |
iut_cachan01 | 0:c78ec5cab98d | 98 | |
iut_cachan01 | 0:c78ec5cab98d | 99 | char carac; |
iut_cachan01 | 0:c78ec5cab98d | 100 | initFonts(); |
iut_cachan01 | 0:c78ec5cab98d | 101 | |
iut_cachan01 | 0:c78ec5cab98d | 102 | matrix.begin((uint8_t *)displaybuf, WIDTH, HEIGHT); |
iut_cachan01 | 0:c78ec5cab98d | 103 | scanner.attach(scan, 0.0005); |
iut_cachan01 | 0:c78ec5cab98d | 104 | |
iut_cachan01 | 0:c78ec5cab98d | 105 | //defilement point |
iut_cachan01 | 0:c78ec5cab98d | 106 | /* for (i=0; i<64; i++) { |
iut_cachan01 | 0:c78ec5cab98d | 107 | for (j=0; j<128; j++) { |
iut_cachan01 | 0:c78ec5cab98d | 108 | matrix.clear(); |
iut_cachan01 | 0:c78ec5cab98d | 109 | matrix.drawPoint(j,i,4); |
iut_cachan01 | 0:c78ec5cab98d | 110 | matrix.swap(); |
iut_cachan01 | 0:c78ec5cab98d | 111 | while (!matrix.synchro()); |
iut_cachan01 | 0:c78ec5cab98d | 112 | } |
iut_cachan01 | 0:c78ec5cab98d | 113 | } |
iut_cachan01 | 0:c78ec5cab98d | 114 | while (1); |
iut_cachan01 | 0:c78ec5cab98d | 115 | */ |
iut_cachan01 | 0:c78ec5cab98d | 116 | /* while(1) { |
iut_cachan01 | 0:c78ec5cab98d | 117 | if(Bluetooth.readable()) // établir la connection |
iut_cachan01 | 0:c78ec5cab98d | 118 | { |
iut_cachan01 | 0:c78ec5cab98d | 119 | carac = Bluetooth.getc(); //On stocke le caractère envoyé dans la variable qu'on tape sur l'interface |
iut_cachan01 | 0:c78ec5cab98d | 120 | |
iut_cachan01 | 0:c78ec5cab98d | 121 | switch(carac) { |
iut_cachan01 | 0:c78ec5cab98d | 122 | |
iut_cachan01 | 0:c78ec5cab98d | 123 | case 'A' : |
iut_cachan01 | 0:c78ec5cab98d | 124 | |
iut_cachan01 | 0:c78ec5cab98d | 125 | for (i=138; i>-180; i-=2) { |
iut_cachan01 | 0:c78ec5cab98d | 126 | matrix.clear(); |
iut_cachan01 | 0:c78ec5cab98d | 127 | matrix.drawCharString(i,5,"Le meilleur ",c,fonts[1]); |
iut_cachan01 | 0:c78ec5cab98d | 128 | matrix.swap(); |
iut_cachan01 | 0:c78ec5cab98d | 129 | wait(0.05); |
iut_cachan01 | 0:c78ec5cab98d | 130 | while (!matrix.synchro()); |
iut_cachan01 | 0:c78ec5cab98d | 131 | } |
iut_cachan01 | 0:c78ec5cab98d | 132 | c++; |
iut_cachan01 | 0:c78ec5cab98d | 133 | if (c==8) c=1; |
iut_cachan01 | 0:c78ec5cab98d | 134 | break; |
iut_cachan01 | 0:c78ec5cab98d | 135 | |
iut_cachan01 | 0:c78ec5cab98d | 136 | case 'B' : |
iut_cachan01 | 0:c78ec5cab98d | 137 | |
iut_cachan01 | 0:c78ec5cab98d | 138 | for (i=138; i>-180; i-=2) { |
iut_cachan01 | 0:c78ec5cab98d | 139 | matrix.clear(); |
iut_cachan01 | 0:c78ec5cab98d | 140 | matrix.drawCharString(i,5,"IUT Cachan ",c,fonts[1]); |
iut_cachan01 | 0:c78ec5cab98d | 141 | matrix.swap(); |
iut_cachan01 | 0:c78ec5cab98d | 142 | wait(0.05); |
iut_cachan01 | 0:c78ec5cab98d | 143 | while (!matrix.synchro()); |
iut_cachan01 | 0:c78ec5cab98d | 144 | } |
iut_cachan01 | 0:c78ec5cab98d | 145 | c++; |
iut_cachan01 | 0:c78ec5cab98d | 146 | if (c==8) c=1; |
iut_cachan01 | 0:c78ec5cab98d | 147 | break; |
iut_cachan01 | 0:c78ec5cab98d | 148 | } |
iut_cachan01 | 0:c78ec5cab98d | 149 | } |
iut_cachan01 | 0:c78ec5cab98d | 150 | } // end while */ |
iut_cachan01 | 0:c78ec5cab98d | 151 | |
iut_cachan01 | 0:c78ec5cab98d | 152 | // matrix.clear(); |
iut_cachan01 | 0:c78ec5cab98d | 153 | |
iut_cachan01 | 0:c78ec5cab98d | 154 | uint8_t count = 0; |
iut_cachan01 | 0:c78ec5cab98d | 155 | |
iut_cachan01 | 0:c78ec5cab98d | 156 | //France |
iut_cachan01 | 0:c78ec5cab98d | 157 | matrix.drawRect(0,0,21,64,4); |
iut_cachan01 | 0:c78ec5cab98d | 158 | matrix.drawRect(21,0,43,64,7); |
iut_cachan01 | 0:c78ec5cab98d | 159 | matrix.drawRect(43,0,64,64,1); |
iut_cachan01 | 0:c78ec5cab98d | 160 | matrix.drawCharString(78,0,"3",7,fonts[2]); |
iut_cachan01 | 0:c78ec5cab98d | 161 | matrix.swap(); |
iut_cachan01 | 0:c78ec5cab98d | 162 | while (!matrix.synchro()); |
iut_cachan01 | 0:c78ec5cab98d | 163 | wait(1); |
iut_cachan01 | 0:c78ec5cab98d | 164 | matrix.clear(); |
iut_cachan01 | 0:c78ec5cab98d | 165 | matrix.drawRect(0,0,21,64,4); |
iut_cachan01 | 0:c78ec5cab98d | 166 | matrix.drawRect(21,0,43,64,7); |
iut_cachan01 | 0:c78ec5cab98d | 167 | matrix.drawRect(43,0,64,64,1); |
iut_cachan01 | 0:c78ec5cab98d | 168 | matrix.drawCharString(78,0,"2",7,fonts[2]); |
iut_cachan01 | 0:c78ec5cab98d | 169 | matrix.swap(); |
iut_cachan01 | 0:c78ec5cab98d | 170 | while (!matrix.synchro()); |
iut_cachan01 | 0:c78ec5cab98d | 171 | wait(1); |
iut_cachan01 | 0:c78ec5cab98d | 172 | matrix.clear(); |
iut_cachan01 | 0:c78ec5cab98d | 173 | matrix.drawRect(0,0,21,64,4); |
iut_cachan01 | 0:c78ec5cab98d | 174 | matrix.drawRect(21,0,43,64,7); |
iut_cachan01 | 0:c78ec5cab98d | 175 | matrix.drawRect(43,0,64,64,1); |
iut_cachan01 | 0:c78ec5cab98d | 176 | matrix.drawCharString(78,0,"1",7,fonts[2]); |
iut_cachan01 | 0:c78ec5cab98d | 177 | matrix.swap(); |
iut_cachan01 | 0:c78ec5cab98d | 178 | while (!matrix.synchro()); |
iut_cachan01 | 0:c78ec5cab98d | 179 | wait(1); |
iut_cachan01 | 0:c78ec5cab98d | 180 | |
iut_cachan01 | 0:c78ec5cab98d | 181 | |
iut_cachan01 | 0:c78ec5cab98d | 182 | while (1) { |
iut_cachan01 | 0:c78ec5cab98d | 183 | |
iut_cachan01 | 0:c78ec5cab98d | 184 | |
iut_cachan01 | 0:c78ec5cab98d | 185 | |
iut_cachan01 | 0:c78ec5cab98d | 186 | |
iut_cachan01 | 0:c78ec5cab98d | 187 | |
iut_cachan01 | 0:c78ec5cab98d | 188 | for (i=200; i>-400; i-=4) { |
iut_cachan01 | 0:c78ec5cab98d | 189 | matrix.clear(); |
iut_cachan01 | 0:c78ec5cab98d | 190 | matrix.drawCharString(i,0,"Comment est votre blanquette ? ",c,fonts[1]); |
iut_cachan01 | 0:c78ec5cab98d | 191 | matrix.drawCharString(i,32," ma blanquette est bonne ",c,fonts[1]); |
iut_cachan01 | 0:c78ec5cab98d | 192 | matrix.swap(); |
iut_cachan01 | 0:c78ec5cab98d | 193 | wait(0.05); |
iut_cachan01 | 0:c78ec5cab98d | 194 | while (!matrix.synchro()); |
iut_cachan01 | 0:c78ec5cab98d | 195 | } |
iut_cachan01 | 0:c78ec5cab98d | 196 | c++; |
iut_cachan01 | 0:c78ec5cab98d | 197 | if (c==8) c=1; |
iut_cachan01 | 0:c78ec5cab98d | 198 | |
iut_cachan01 | 0:c78ec5cab98d | 199 | // for (i=64; i>-192; i--) { |
iut_cachan01 | 0:c78ec5cab98d | 200 | |
iut_cachan01 | 0:c78ec5cab98d | 201 | // matrix.drawChar(0,0,'A',2,fonts[0]); |
iut_cachan01 | 0:c78ec5cab98d | 202 | //matrix.drawChar(10,0,'A',2,fonts[1]); |
iut_cachan01 | 0:c78ec5cab98d | 203 | //matrix.drawChar(20,0,'A',3,fonts[2]); |
iut_cachan01 | 0:c78ec5cab98d | 204 | |
iut_cachan01 | 0:c78ec5cab98d | 205 | } |
iut_cachan01 | 0:c78ec5cab98d | 206 | |
iut_cachan01 | 0:c78ec5cab98d | 207 | } |
iut_cachan01 | 0:c78ec5cab98d | 208 | |
iut_cachan01 | 0:c78ec5cab98d | 209 |