Bonjour
Je suis en train de m'amuser avec 4 matrices 8x8 leds reliée pour faire passer des messages dans un petit projet de gestion des scores pour du Air Hockey
J'arrive à en faire passer un en scrolling (texte défilant au début du jeu) mais impossible d'en avoir plusieurs différents qui apparaitraient plus tard au cours du jeu
Je suis obligé de "déclarer" le message à scroller dans le setup()
Ensuite dans le loop() j'ai la fonction
if (myDisplay.displayAnimate()) {
myDisplay.displayClear();}
Si j'essaye de descendre le message dans le loop ça ne fonctionne plus
je peux ajouter dans le loop d'autres affichages mais uniquement fixes du type : myDisplay.print("BUT 1");
Comment puis je avoir d'autres messages qui passent en scroll?
Merci de votre aide.
le code:
</>
//Programme pour gestion du AIR HOCKEY
// Affichage
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW
#define MAX_DEVICES 4
#define CLK_PIN 52 // or SCK UNO 13 MEGA 52
#define DATA_PIN 51 // or MOSI UNO 11 MEGA 51
#define CS_PIN 53 // or SS UNO 10 MEGA 53
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);
int But1 = 5; // le bouton du but 1 sur la broche 5
int But2 = 4; // le bouton du but 2 sur la broche 4
const int Buzzer = 22; // le buzzer sur la broche 22
const int Bouton = 6; // le bouton Start sur la broche 6
const int Start = 7; // le bouton Start sur la broche 7
//initialisation nombre de buts
int NB1 = 0;
int NB2 = 0;
int NB = 0;
String myScores;
String myScore1;
String myScore2;
void setup()
{
//affichage de bienvenue
myDisplay.begin();
myDisplay.setIntensity(4);
myDisplay.displayClear();
myDisplay.displayScroll("Bienvenue au Fuzz Air Hockey", PA_CENTER, PA_SCROLL_LEFT, 75);
// on met les boutons en entrée
pinMode(But1, INPUT);
pinMode(But2, INPUT);
pinMode(Start, INPUT);
pinMode(Bouton, INPUT);
// initialisation buzzer
pinMode(Buzzer, OUTPUT);
// on active la résistance de pull-up en mettant la broche à l'état haut
// (mais cela reste toujours une entrée
//digitalWrite(But1, HIGH);
//digitalWrite(But2, HIGH);
digitalWrite(Start, HIGH);
digitalWrite(Bouton, HIGH);
}
void loop()
{
do {
animation();
delay(75);
} while (digitalRead(Start) == HIGH);
if (digitalRead(Start) == LOW) {
myDisplay.displayClear();
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print("START!");
tone (Buzzer, 1000); // allume le buzzer actif arduino
delay(2000);
noTone(Buzzer);
delay(2000);
partie();
Finpartie();
delay(3000);
}
}
void animation()
// Animation initiale
{
if (myDisplay.displayAnimate()) {
myDisplay.displayClear();
}
}
void partie()
//Attente capteurs de but ou de reset
{
// Remise à 0 des scores
NB1 = 0;
NB2 = 0;
NB = 0;
// Affiche score initial
score();
do {
//affichage début de partie
// On lit si un but est marqué
if (digitalRead(But1) == 1) { // si un But1 est détecté
NB1 = NB1 + 1;
// allume la DEL animation de but bleu
tone (Buzzer, 800); // allume le buzzer actif arduino
myDisplay.displayClear();
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print("BUT 1");
delay(1500);
noTone(Buzzer);
delay(500);
// On affiche le nouveau score
score();
}
else if (digitalRead(But2) == 1) {
NB2 = NB2 + 1;
// allume la DEL animation de but Rouge
tone (Buzzer, 600); // allume le buzzer actif arduino
myDisplay.displayClear();
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print("BUT 2");
delay(1500);
noTone(Buzzer);
delay(500);
// On affiche le nouveau score
score();
}
else if (digitalRead(Start) == LOW) {
// Faire un reset
// on vide les écrans
// On affiche le nouveau score
NB = 10;
myDisplay.displayClear();
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print("Reset");
delay(3000);
}
if (NB1 > NB2){NB = NB1;}
else {(NB = NB2);}
} while (NB < 10); //fin boucle while partie finie
delay(2000);
Finpartie();
delay(1000);
// on vide les écrans
score();
// affichage gagnant et score
}
void score()
{// on vide les écrans
// On affiche le nouveau score
String scores;
myDisplay.displayClear();
myScore1 = String(NB1);
myScore2 = String(NB2);
myScores = myScore1 + " - " + myScore2;
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print(myScores);
}
void Finpartie()
{// on vide les écrans
// On affiche le score
tone (Buzzer, 1000);
delay(500);
tone (Buzzer, 800);
delay(500);
tone (Buzzer, 600);
delay(500);
tone (Buzzer, 400);
delay(500);
tone (Buzzer, 200);
delay(500);
tone (Buzzer, 100);
delay(500);
noTone(Buzzer);
do {
//éclairage bande led en vert
myDisplay.displayClear();
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print("Winner");
delay(750);
myDisplay.displayClear();
myDisplay.setTextAlignment(PA_CENTER);
if (NB1 > NB2){
myDisplay.print("Play 1");
// allume la DEL animation de but bleu
}
else {
myDisplay.print("Play 2");
// allume la DEL animation de but Rouge
}
myDisplay.setTextAlignment(PA_CENTER);
myDisplay.print(myScores);
// éteind les LED
delay(1000);
} while (digitalRead(Start) == HIGH);
}
</>