Matrice de LED RVB

Les matrices de LED permettent d’assurer la fonction communiquer de la chaîne d’information.

La matrice utilisée est du type WS2812 8×32 pixels RVB.

Les bibliothèques Adafruit_GFX, Adafruit_NeoMatrix et Adafruit_NeoPixel permettent le pilotage de telles matrices :

#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>

La communication se fait par un protocole série utilisant un fil+masse. Les LEDS sont connectées en série. La première LED reçoit les données, conserve les 24 premiers bits et redirige le reste (par la broche DOut) vers Din de la LED suivante, et ainsi de suite.

Les 3×8 bits représente la couleur à afficher.

On déclare la broche de la carte Arduino sur laquelle est connectée la broche DIN de la matrice.

const int PINMATRIX = 2;

Déclaration de la matrice RVB 32×8 connectée sur la broche PINMATRIX :

Les LEDS de la matrice sont disposées de gauche à droite en zigzag et de type WS2812

32, 8 : Nombre de pixels par colonne puis par ligne
PINMATRIX : Pin de la carte Arduino connectée à DIN
3ème argument : Type de matrice

Pour aller plus loin : https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use

Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(32,8, PINMATRIX,
  NEO_MATRIX_TOP    + NEO_MATRIX_LEFT+
  NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG,
  NEO_GRB            + NEO_KHZ800);

On peut ensuite définir des couleurs.

matrix.Color[0]=(255,0,0) est le rouge

On pourra utiliser le site http://htmlcolorcodes.com/fr/ pour générer les codes RGB

uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(255, 210, 0),matrix.Color(0, 0, 255), matrix.Color(255, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 255, 255),matrix.Color(91, 68, 43),matrix.Color(0, 0, 0)
  };

On peut également définir des icônes. Pour définir des icones de 8×8, on pourra utiliser le site http://dot2pic.com/ avec une matrice 8×8 en mode Monochromatic, 8 pixels per byte, horizontal.

static unsigned char play[]={0x00,0x00,0x10,0x18,0x1c,0x18,0x10,0x00};
static unsigned char rond[]={0x00,0x7e,0xff,0xff,0xff,0xff,0xff,0x7e};
static unsigned char sun[]={0x24,0x00,0xbd,0x7e,0x7e,0x7e,0x00,0x00};
static unsigned char mask[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
static unsigned char cloud[]={0x00,0x00,0x00,0x06,0x6f,0xef,0xff,0x7e};
static unsigned char coeur[]={0x00,0x66,0xff,0x7e,0x7e,0x3c,0x18,0x00};

On définit dans le setup les paramètres par défaut. Brillance à 1 et couleur rouge :

void setup(){
//Ouverture d'un port serie
  Serial.begin(115200);
//Initialisation de la matrice de LED
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(1);
  matrix.setTextColor(colors[0]);
}

Ci dessous un exemple affichant un texte et une icone.

:

void loop() {

  matrix.fillScreen(0); //Efface la matrice de LED
  matrix.setTextColor(colors[5]); //Choix de la couleur numero 5 (0, 255, 255)
  matrix.setCursor(0, 0); //Curseur en position 0,0 (1ere ligne, 1ere colonne)
  matrix.print("Hello"); 
 
  //Dessine la forme (8x8 pixels) coeur à la position 24,0 avec la couleur numero 0
  matrix.drawBitmap(24, 0, coeur, 8,8,colors[0]);
  matrix.show(); //on affiche

  delay(1000);
}

Vous aimerez aussi...

4 réponses

  1. Mathieu dit :

    Merci pour cet exemple. Perso je mets le setBrightness à 255 sinon rien ne s’affiche. Il me faut aussi remplacer tous les « . » par « -> », je ne comprends pas trop pourquoi mais bon…

  2. philou dit :

    Bonjour, merci pour cet exemple. J’ai une matrice 32 colonnes et 16 lignes WS7812B (3 fils). J’utilise les bibliotheques Adafruit_GFX, Adafruit_NeoPixel, Adafruit_NeoMatrix et Keypad. Pour la saisie du nombre, pas de problème. Je n’arrive pas à faire afficher un nombre à 4 chiffres sur toute la hauteur de la matrice (par exemple = 1021; les 2 premiers sur la première matrice 16 x 16, la seconde sur l’autre). Auriez-vous une solution pour ça ?.
    Merci de votre collaboration

  3. Arnaud BULCKE dit :

    Je crois qu’il faut, dans ce cas, créer des icônes car la bibliothèque adafruit ne le gère pas. Un exemple de code pour un matrice 32×8 :

    //Déclaration des icones
    // Utiliser le site http://dot2pic.com/ avec une matrice 8×8 en mode Monochromatic, 8 pixels per byte, horizontal
    static unsigned char play[]={0x00,0x00,0x10,0x18,0x1c,0x18,0x10,0x00};
    static unsigned char rond[]={0x00,0x7e,0xff,0xff,0xff,0xff,0xff,0x7e};
    static unsigned char sun[]={0x24,0x00,0xbd,0x7e,0x7e,0x7e,0x00,0x00};
    static unsigned char mask[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
    static unsigned char cloud[]={0x00,0x00,0x00,0x06,0x6f,0xef,0xff,0x7e};
    static unsigned char coeur[]={0x00,0x66,0xff,0x7e,0x7e,0x3c,0x18,0x00};

Répondre à philou Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *