Arduino > Wemos D1 Mini Matrix Shield
Contents (hide)
Global :
// INCLUDE LIBRARY: #include <Adafruit_GFX.h> #include <WEMOS_Matrix_GFX.h> // INSTANTIATE MATRIX OBJECT: MLED matrix(7); // SET TO MAXIMUM INTENSITY (7).
Dans loop() :
// EFFACER LE CONTENU PRECEDENT: matrix.clear(); // DESSINER UN PIXEL: matrix.drawPixel(x, y, LED_ON); // DESSINER UNE LIGNE: matrix.drawLine( x0, y0, x1, y1, LED_ON); // DESSINER UN RECTANGLE VIDE: matrix.drawRect( x , y, width, height , LED_ON); // REMPLIR UN RECTANGLE: matrix.fillRect(x, y, width, height , LED_ON); // DESSINER UN CERCLE VIDE: matrix.drawCircle( x , y, radius, LED_ON); // REMPLIR UN CERCLE: matrix.fillCircle(x, y, radius, LED_ON); // DESSINER UN TRIANGLE VIDE: matrix.drawTriangle(x0, y0, x1, y1, x2, y2, LED_ON ); // REMPLIR UN TRIANGLE: matrix.fillTriangle(ux0, y0, x1, y1, x2, y2, LED_ON); // TEXTE: matrix.setTextSize(1); matrix.setTextWrap(false); // NO TEXT WRAP matrix.setTextColor(LED_ON); matrix.setCursor(x,y); matrix.print("text"); // METTRE A JOUR LES PIXELS A LA MATRICE: matrix.writeDisplay(); // write the changes we made to the display // FOR MORE, SEE: // https://learn.adafruit.com/adafruit-gfx-graphics-library/graphics-primitives
Définir les images dans l'espace global (avant setup() ) :
// EN BINAIRE : const unsigned char image_name[] PROGMEM = { B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100 }; // OU // EN HEXADECIMALE : const unsigned char image_name [] PROGMEM = { 0xff, 0xff, 0xbd, 0xff,0xff, 0xbd, 0xc3, 0xff };
Dans loop() :
matrix.drawBitmap(x, y, image_name , 8, 8, LED_ON);
Convertir les images avec image2cpp :
#include <Adafruit_GFX.h> #include <WEMOS_Matrix_GFX.h> MLED matrix(7); //set intensity=7 (maximum) void setup() { Serial.begin(57600); Serial.println("8x8 LED Matrix Test"); } static const uint8_t PROGMEM smile_bmp[] = { B00111100, B01000010, B10100101, B10000001, B10100101, B10011001, B01000010, B00111100 }, neutral_bmp[] = { B00111100, B01000010, B10100101, B10000001, B10111101, B10000001, B01000010, B00111100 }, frown_bmp[] = { B00111100, B01000010, B10100101, B10000001, B10011001, B10100101, B01000010, B00111100 }; void loop() { matrix.clear(); matrix.drawBitmap(0, 0, smile_bmp, 8, 8, LED_ON); matrix.writeDisplay(); delay(500); matrix.clear(); matrix.drawBitmap(0, 0, neutral_bmp, 8, 8, LED_ON); matrix.writeDisplay(); delay(500); matrix.clear(); matrix.drawBitmap(0, 0, frown_bmp, 8, 8, LED_ON); matrix.writeDisplay(); delay(500); matrix.clear(); // clear display matrix.drawPixel(0, 0, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.clear(); matrix.drawLine(0,0, 7,7, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.clear(); matrix.drawRect(0,0, 8,8, LED_ON); matrix.fillRect(2,2, 4,4, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.clear(); matrix.drawCircle(3,3, 3, LED_ON); matrix.writeDisplay(); // write the changes we just made to the display delay(500); matrix.setTextSize(1); matrix.setTextWrap(false); // we dont want text to wrap so it scrolls nicely matrix.setTextColor(LED_ON); for (int8_t x=0; x>=-36; x--) { matrix.clear(); matrix.setCursor(x,0); matrix.print("Hello"); matrix.writeDisplay(); delay(100); } matrix.setRotation(3); for (int8_t x=7; x>=-36; x--) { matrix.clear(); matrix.setCursor(x,0); matrix.print("World"); matrix.writeDisplay(); delay(100); } matrix.setRotation(0); }
Changer le ssid et le mot de passe pour votre configuration réseau!
Changer le ssid et le mot de passe pour votre configuration réseau! Choisir aussi une adresse IP unique!
// SEND AN ASCII MASSAGE BY UDP TO DRAW THE PIXELS. // A AN ASCII MASSAGE IS A MESSAGE THAT STARTS WITH AN "ADDRESS". // IT IS THEN FOLLOWED BY VALUES SEPARATED BY SPACES. // IT ENDS WITH A NEW LINE (ASCII CODE 10). // DRAW AN IMAGE //////////////// // SEND THE FOLLOWING MASSAGE TO DRAW AN IMAGE: // img row0 row1 row2 row3 row4 row5 row6 row7 // EACH rowX DATA IS A NUMBER BETWEEN 0-255 THAT REPRESENTS // THE 8 PIXELS FOR THAT ROW. // EXAMPLES: // CLEAR: // img 0 0 0 0 0 0 0 0 // FILL: // img 255 255 255 255 255 255 255 255 // FACE: // img 255 255 189 255 255 189 195 255 // FROWN: // img 255 255 189 255 255 195 189 255 // DRAW A PIXEL //////////////// // SEND THE FOLLOWING MASSAGE TO DRAW A PIXEL // pix x y state // x AND y IS THE POSITION OF THE PIXEL. // state IS EITHER 0 OR 1 (OFF OR ON). // INCLUDE ESP8266WiFi: #include <ESP8266WiFi.h> const char* ssid = "*****"; const char* password = "*****"; IPAddress ip(10, 5, 0, 120); IPAddress gateway(10, 5, 0, 1); IPAddress subnet(255, 255, 255, 0); // INCLUDE ESP8266 UDP #include <WiFiUdp.h> WiFiUDP udp; // INCLUDE MASSAGE PARSER #include <AsciiMassageParser.h> // PACKER(FOR SENDING) AND PARSER(FOR RECEIVING) INSTANCES. AsciiMassageParser inbound; // WEMOS MATRIX SHIELD: #include <Adafruit_GFX.h> #include <WEMOS_Matrix_GFX.h> MLED matrix(7); //set intensity=7 (maximum) /////////// // SETUP // /////////// void setup() { // INITIATE SERIAL COMMUNICATION. Serial.begin(57600); WiFi.config(ip , gateway , subnet ); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { Serial.print("Waiting for connection: "); Serial.print(millis()); Serial.println(" ms"); delay(50); } Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); // START LISTENING ON UDP PORT 7777. udp.begin(7777); } ////////// // LOOP // ////////// void loop() { // RECEIVE PACKETS OVER UDP if ( udp.parsePacket() ) { if ( inbound.parseStream( &udp ) ) { if ( inbound.fullMatch("img") ) { matrix.clear(); for ( int y = 0 ; y < 8 ; y++ ) { byte p = inbound.nextByte(); for ( int x = 0; x < 8; x++) { if ( bitRead(p, x) ) matrix.drawPixel( x , y , LED_ON); } } matrix.writeDisplay(); } else if ( inbound.fullMatch("pix") ) { byte x = inbound.nextByte(); byte y = inbound.nextByte(); byte state = inbound.nextByte(); matrix.drawPixel( x , y , state); matrix.writeDisplay(); } } } }
Choisir l'adresse IP de votre Wemos!
<pre><code> ----------begin_max5_patcher---------- 1445.3oc6ZszaaiCD9rKP+OHnyYMDkjkj2SsX2K8PAJP28TSgAsDsMyJSJPR k3rE6+8kOzaKoJmHmzBzDXKmY3P9wONyvgz4au8MKr2ROg31V+t0WrVr3aRI KzxTRVTJXg8Q3o3THW2P6iHNGtGYeSgRA5jPq3Va7w8VtqVoeAhVW+40U+8s jasqLMESPwzbh1d2RozbQJRHdLCY.lss0WK0QxOhIRs7VVfSz.ft8tey0uEv hooTloabV5bSi2.Kcp61LnH9.lreCCEKLMGrZkpYtgg5GdZi7BZZEW7XpFi0 yHI9LvWCPPo3s6aADuv.+PfBHdQ9d.e0mzu0nyKLw8RrYOClfQF5rwXuCmlp 6rMkjpsAN80D86fKCocrtBytqc.qCzV6rNxw27IoHPG9+rtXJ8vff.R1aVWb CUqZ8zhLFMixDXJQ0LYWtt29IWPaRoxNS2p+6suQ8T93lmeTSF9jkqkuki87 3+6MS9+qhhzMKzU8HzSGE39K2+e49+Tb+InGjdm838yPYHRhkLJ3x8+A83+C VaOAmZu0Ocm54OEfZaSm1+NOIC.QiQFgZRvrwF.37xxEPACeJVvRafPF7HRf XaPD3Vy.6LHMjh4B6aJdVCYF8A8.DMcGFuI3v3p8T.NNUOt.Vx853w7cJzZd 7fF0AxMvvGlGtfvebBm5kbjeVQPyF4DLJ4T3r.V+CK4LvqYpPjwHG.vTUQzq A2DSOdTsk1YbymU6DINfrxfw+CJw5HTShRQLZ99CV+8e9ok1SNwxJmwX.e.P m80USD9d9ZJ3xRr3L+Tvec.ys34a0HFwzLAWyIeDdxpvqRJfpk89O+Ge3CUz zNJSlV+BXH+Q2q1MxvI9guFLzfErXA4wX7GMy4OobTXR+h4o3Eev3AMQMHDv pfmSI4EKvETPIGrvVV9G5dDiWTaXY6WXCyxZHeQSiTT2clhVCuoVFlXj4UKi gtGW1E90hgL4bUHmn4LC5OETcLdUOQSPLRNtNr2rXVBsZJJvTXmqY+5.ecJX +nlNMpZbSop36lEXHW3j0ghIx5Q4x.CXUswU5SP6f4ohM6nDAG+uZbpyh0WC 1AiQCaNQVmidZ9dFFVU.j57K3DJQAj1TuRd4PptXByxeq4jtIDXVelK8rjDz PZ4xIaNeKjoVYJJ6xsRqfRSaqq1xTzNQg9LLgzkPEzrQzxv6OLl0aoRsGGs6 0p3axIF0ajwthMb38cXdALMsHZtyHbBRvxLVHA1rdH2xtRqoFzC7XFMMs871 n599TkH8uiQOfSDGJNwTCURCvYkNV10K6IXYJUQGgB3ddGQmGbKkUkpdi.cL KUNa5zhV2vWqn1l4.aqnStPS9i5.xgRkMXI.ClQyWmQyKpwIQ7ZErNv7tmL8 MUUt81Y1fIInSMSiTs4PYNkmLIooiVC1HaEbNG5L.GB99bnNePH3YSgfWaJr 8dtcpaUPgiytXhXLB1a.B1yahdotlaBy+7CJeAT7KJmIn7GOtkl9z8JGJx1y epg1N5pTVs9mFRSVmi5X..mq.qsZptZdl5WB+4g0DT73DV6Kp4BhOClJo4.t ZwmMpzR8cVMz9oZvoZv.zImlyhKIjxImUGfJKTPfIUUf9kZeGUKm9p5kClUS FLdWev3OUv3d8wh2jIF+qNX.SFKAihkRE0GjxVU6bxFywE1.EBFdatv3r25L hWXorxiasElVTlZ0YeFut15xeqP4reT9imtyhfDKySxVxU47eGLIQd9OtL4+ RYQUKAtNVuS8EkXEJ+YdNhu2DNgewkB4FELC2Klwz1osJ3st9dkr2Y9bQs74 FveyGzveq20oIOdAuvimOXJCX6r.1TVh49S.uXHP8O2fEnGH3LCPv8ElzUeS cSe.uJr9zff5qT+pw5fW5XKf2TFvRlo+jIctKP8X08N.6d+e8b2eibuemcme ZLHe6+wlYTmB -----------end_max5_patcher----------- </code></pre>