LAST PUBLISH MATRIX PROJECT

Dependencies:   mbed

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?

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