bonjour, je voudrais melanger ces deux codes ci dessous pour que ca fasse défiler le texte "kerbal controller 1.0" et puis après l'animation suivante avec les a
merci de votre réponse
#include <LedControl.h>
// Broches de connexion
const int DIN_PIN = 11;
const int CS_PIN = 10;
const int CLK_PIN = 13;
// Initialisation de la bibliothèque LedControl pour 4 matrices
LedControl lc = LedControl(DIN_PIN, CLK_PIN, CS_PIN, 4);
void setup() {
// Initialisation des modules MAX7219
for (int i = 0; i < 4; i++) {
lc.shutdown(i, false);
lc.setIntensity(i, 8); // Réglage de la luminosité (0-15)
lc.clearDisplay(i); // Effacer l'affichage
}
// Faire glisser la lettre A d'écran en écran une seule fois
for (int position = 0; position < 32; position++) {
afficherLettreA(position);
delay(200); // Délai pour contrôler la vitesse de défilement
}
// Effacer tous les écrans à la fin du défilement
for (int i = 0; i < 4; i++) {
lc.clearDisplay(i);
}
}
void loop() {
// Rien à faire dans la boucle principale
}
void afficherLettreA(int position) {
byte lettreA[8] = {
B00111100,
B01100110,
B11000011,
B11000011,
B11111111,
B11000011,
B11000011,
B11000011
};
// Effacer tous les écrans
for (int matrix = 0; matrix < 4; matrix++) {
lc.clearDisplay(matrix);
}
// Afficher la lettre A à la position donnée
for (int i = 0; i < 8; i++) {
int matrix = (position + i) / 8;
int column = (position + i) % 8;
if (matrix < 4 && column < 8) {
lc.setRow(matrix, column, lettreA[i]);
}
}
}
Ce sont 2 codes différents qui manifestement semblent faire la même chose. A savoir, faire défiler du texte. Donc, je pense que la première chose à essayer c'est de changer le texte pour voir si par hasard ça ne ferait pas l'affaire.
Comme le dit @fdufnews pas besoin d'assembler ces deux codes, tu peux faire ça avec un seul code.
Il y a un exemple de la bibliothèque qui fait un peu ce que tu veux : Parola_Scrolling
Le code est un peu complexe, car il peut utiliser un potentiomètre et un bouton poussoir pour gérer les animations. Mais on peut le simplifier :
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define MAX_DEVICES 8
#define CS_PIN 10
// HARDWARE SPI
MD_Parola P = MD_Parola(CS_PIN, MAX_DEVICES);
// Scrolling parameters
uint8_t scrollSpeed = 25; // default frame delay value
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000; // in milliseconds
// Global message buffers shared by Serial and Scrolling functions
#define BUF_SIZE 75
char curMessage[BUF_SIZE] = { "Kerbal Controller 1.0" };
char newMessage[BUF_SIZE] = { "A" };
void setup()
{
Serial.begin(57600);
Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline");
P.begin();
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
}
void loop()
{
if (P.displayAnimate()) P.displayReset();
if (P.getTextAlignment() == MAX_DEVICES * 8) {
strcpy(curMessage, newMessage);
P.setTextAlignment(0);
}
}
Il faut changer la valeur après MAX_DEVICES par le nombre de matrices que tu utilises.
Ce code fait comme le premier que tu donnes : il scrolle le texte. J'ai ajouté des commandes pour scroller un 'A' :