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