Gullivigne

Groupe d'Utilisateurs de Logiciels Libres et FabLab du Vignoble Nantais

Ateliers Jeunes

Ateliers du 27 octobre – Arduino Nano & Matrice de Led 8×8

Récapitulatif de l'atelier :

Pendant cet atelier, nous avons assemblé une carte Matrice Led 8×8 avec un arduino Nano. Nous avons également fabriqué un support à l'aide d'une plaque transparente.

L'objectif était d'apprendre, de découvrir, d'entrevoir :

  • à couper , dénuder et souder des fils sur une carte électronique
  • à percer avec une (petite) perçeuse colonne
  • à repérer une découpe et se servir d'un pied à coulisse
  • ce qu'était un composant programmable
  • ce qu'était un programme
  • comment piloter une matrice de led

Une fois les montages réalisés, les jeunes ont pu s'approprier l'ensemble en créant leurs propres affichages.

Ils sont repartis avec leurs montages en fonctionnement et un cable mini-usb permettant d'alimenter et de programmer la carte.

Pour aller plus loin :

Voici le code que nous avons entré ensemble dans la carte :

#include <LedControl.h>

// définition des "pin" c'est à dire , endroit où sont soudés les fils 
// sur la carte 
const int DIN_PIN =  10;  // fil qui sert à envoyer l'état des leds
const int CS_PIN  =  11;  // fil qui dit au composant "ça y est allume les leds"
const int CLK_PIN =  12;  // fil qui dit envoie un signal pour dire "led suivante" parce qu'on envoie une par une

// mon tableau d'image à afficher
const uint64_t IMAGES[] = {
  0x1824428181996600,
  0x0c122140404c3300,
  0x0609102020261900,
  0x0304081010130c00,
  0x0102040808090600,
  0x0001020404040300,
  0x0000010202020100,
  0x0000000101010000,
  0x0000000000000000
};
const int IMAGES_LEN = sizeof(IMAGES)/8;

// on crée le contrôleur d'écran
LedControl display = LedControl(DIN_PIN, CLK_PIN, CS_PIN);

// quand la carte s'allume , ça commence ici
void setup() {
  // on efface l'écran
  display.clearDisplay(0);
  // on allume l'écran
  display.shutdown(0,false);
  // on régle la luminosité
  display.setIntensity(0,1);
}

// cette Fonction affiche l'image sur l'écran
void displayImage(uint64_t image) {
  for (int i=0; i<8; i++){
    byte row = (image >> i * 8 ) & 0xFF;
    for (int j=0; j<8; j++) {
      display.setLed(0,i,j,bitRead(row,j));
    }
  }
}

// on commence par la première image 
// les informaticiens commencent par zero quand ils comptent !

int i=0;
// ici on tourne en ronds
// et on affiche les images une par une
void loop() {
  displayImage(IMAGES[i]);
  if (++i >= IMAGES_LEN) {  // si on est là alors
    i=0;                    // on re-commence a afficher la premiere image ( on boucle ).
  }
  delay(100); // on attends un peu avant d'afficher l'image suivante 
}

 

Pour personnaliser les images, nous avons utilisé un outil dédié que vous pouvez trouver ici :

https://gullivigne.org/led-matrix-editor/docs/

 

Pour programmer nous utilisons le logiciel fourni par Arduino :

https://www.arduino.cc/en/Main/Software#

avec la bibliothèque : LedControl : https://playground.arduino.cc/Main/LedControl

 

Enfin, les cartes électroniques utilisées sont des déclinaisons de :

https://store.arduino.cc/arduino-nano

et des matrice de led 8×8 avec un MAX7219.

N'hésitez pas à nous poser des questions si besoin !

Amusez vous bien.