panneau

Dependencies:   mbed

Committer:
baptistepennelle
Date:
Tue May 15 11:58:50 2018 +0000
Revision:
0:b8e5f03fdaaf
panneau

Who changed what in which revision?

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