Matrix led 32x8

Bonjour à tous,
Dans mon programme j'ai actuelement une matrice 32x8, mais je souhaite en ajouter 2 supplémentaires sur des PIN différentes.

Merci de votre retour,

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

#define PIN 11
String msg;


// Déclaration des variables :
int etat11 = 0;         // variable qui sera utilisée pour stocker l'état du bouton 1
int etat12 = 0;         // variable qui sera utilisée pour stocker l'état du bouton 2
int etat13 = 0;         // variable qui sera utilisée pour stocker l'état du bouton 3
int message = 0;         // variable qui sera utilisée pour le raspberry
 
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix( 32, 8
, PIN,
  NEO_MATRIX_TOP    + NEO_MATRIX_RIGHT+
 NEO_MATRIX_COLUMNS + NEO_MATRIX_ZIGZAG, // Collumns_ROWS
  NEO_GRB            + NEO_KHZ800);
 
const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(255, 255, 0),matrix.Color(0, 0, 255), matrix.Color(255, 0, 255), matrix.Color(0, 255, 255), matrix.Color(255, 255, 255)};
 
void setup() {
  Serial.begin(9600);
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(050);
  matrix.setTextColor(colors[0]);
}
 
int x    = matrix.width();
int pass = 0;


void loop() {

  Serial.println();
  message = Serial.read() - '0';
  const unsigned long dureeAnimation=2200;
  static unsigned long debutOK=millis()+dureeAnimation;

  if (message == 1 || millis()-debutOK<dureeAnimation) {
  if (message == 1) debutOK=millis();       // mémorise le temps de début
 
const uint16_t colors[] = {
matrix.Color(0, 0, 255)};
  
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(25);
  matrix.setTextColor(colors[0]);
    matrix.fillScreen(0);
    matrix.setCursor(x, 0);
    matrix.print(F("OK <<<<")); //Defilement

    if (--x < -07    //temps entre chaque défilement

       ) {
      x = matrix.width();
    matrix.setTextColor(colors[pass]);

    }
    matrix.show();
    delay(34); //vitesse du défilement
    Serial.print("etat11");
  }

//X X X X X// 
  else if (message == 2) {

const uint16_t colors[] = {
 matrix.Color(255, 0, 0) };

  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(25);
  matrix.setTextColor(colors[0]);
   matrix.fillScreen(0);
  matrix.setCursor(1, 0);
  matrix.print(F("X X X X X"));   // ARRET
  if(--x < -30) {
    x = matrix.width();
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(1200);

  
//TEST//
  }

 else if (message == 3) {

const uint16_t colors[] = {
 matrix.Color(255, 0, 0) };

  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(25);
  matrix.setTextColor(colors[0]);
   matrix.fillScreen(0);
  matrix.setCursor(1, 0);
  matrix.print(F("BONJOUR"));   
  if(--x < -30) {
    x = matrix.width();
    matrix.setTextColor(colors[pass]);
  }
  matrix.show();
  delay(1200);
//TEST//
  
  }
  else {
    //  <<<<< Fixe  

const uint16_t colors[] = {
matrix.Color(0, 255, 0)};
   matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(25);
  matrix.setTextColor(colors[0]);

    matrix.fillScreen(0);
    matrix.setCursor(0, 0);
    matrix.print(F("<<<<<"));  // Fixe

    if (--x < -30
       ) {
      x = matrix.width();
    matrix.setTextColor(colors[pass]);

    }
    matrix.show();
    delay(0);

  }
  }

  void readSerialPort() {
  msg = "";
  if (Serial.available()) {
    delay(10);
    while (Serial.available() > 0) {
      msg += (char)Serial.read();
    }
    Serial.flush();
  }
}

Merci d’éditer votre post et d’utiliser la balise de code </>, c’est illisible là

Édit: merci

Quelle est vraiment la question ?

Je n'arrive pas à avoir un code fonctionnel avec 3 matrice sur 3 pin différentes

Une matrice 32x8 consomme 3 octets par pixels donc 768 octets
3 matrices c’est 2304 octets minimum. Vous êtes sur quel arduino ?

Pour le moment UNO R3, mais j'ai aussi le même probleme pour 2 matrices

A priori Problème de mémoire sans doute, vous n’avez que 2 Kilo octets
Prenez un arduino plus costaud.

(Éventuellement faites un code hyper basique ou vous en déclarez 2 et allumez 1 pixel pour tester)

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.