Ajout bouton vitesse texte LED Matrix

Bonsoir,

Je possède 4 module matrix7219 de ce genre :
module max7219

Je les ai relié ensemble et j'ai utiliser les libraires de gammon :
Gammon

Cela marche bien.

J'ai ajouter 3 bouton pour afficher d'autre texte(bouton)

Le 1er bouton : affiche le 1er texte
Le 2eme bouton : affiche le 2eme texte
Le 3eme bouton : affiche le 3eme texte

Cela marche mais quand j'appuie sur un bouton l'autre texte s'affiche mais forcement pas depuis le début, si quelqu'un sait régler ça

Puis j'aimerais ajouter deux autre bouton pour modifier la vitesse du texte

Le 4eme bouton : modifie la vitesse -
Le 5eme bouton : modifie la vitesse +

Voila le code :

// Demo of MAX7219_Dot_Matrix library - sideways scrolling
// Author: Nick Gammon
// Date: 2 October 2015

// Scrolls a pixel at a time.

#include <SPI.h>
#include <bitBangedSPI.h>
#include <MAX7219_Dot_Matrix.h>
const byte chips = 4;




const int but1 = 2;
const int but2 = 3;
const int but3 = 4;

int but1State = 0;
int but2State = 0;
int but3State = 0;
int but1Now;
int but2Now;
int but3Now;
int value1;
int value2;
int value3;
// 12 chips (display modules), hardware SPI with load on D10
MAX7219_Dot_Matrix display (chips, 10);  // Chips / LOAD 


const char message [] = "Test ! CA MARCHE !!!";
 const char message2 [] = "test 2 !"; 
 const char message3 [] = "IT WORKS !!"; 
void setup ()
  {


  display.begin ();
  }  // end of setup

unsigned long lastMoved = 0;
unsigned long MOVE_INTERVAL = 20;  // mS
int  messageOffset;

void updateDisplay ()
  {
    
  display.sendSmooth (message, messageOffset);
  
  // next time show one pixel onwards
  if (messageOffset++ >= (int) (strlen (message) * 8))
    messageOffset = - chips * 8;
  }  // end of updateDisplay

void updateDisplay2 ()
  {
    
  display.sendSmooth (message2, messageOffset);
  
  // next time show one pixel onwards
  if (messageOffset++ >= (int) (strlen (message2) * 8))
    messageOffset = - chips * 8;
  }  // end of updateDisplay2


void updateDisplay3 ()
  {
    
  display.sendSmooth (message3, messageOffset);
  
  // next time show one pixel onwards
  if (messageOffset++ >= (int) (strlen (message3) * 8))
    messageOffset = - chips * 8;
  }  // end of updateDisplay2

void loop () 
  { 
    
    //code pour texte au démarrage
      if (millis () - lastMoved >= MOVE_INTERVAL)
    {
    updateDisplay ();
    lastMoved = millis ();
    }  
    
//---------------------------------------------------------------------------

    //code pour bouton 1
    but1Now = digitalRead(but1);
    delay(5);
    int but1Now1 = digitalRead(but1);

    if(but1Now == but1Now1) 
    {
        if(but1Now != but1State)
        {
            value1 = 1;
            value2 = 0;
            value3 = 0;
            //show(img2);
        }

        but1State = but1Now;
    }

//---------------------------------------------------------------------------
//code pour bouton 2
    but2Now = digitalRead(but2);
    delay(5);
    int but2Now1 = digitalRead(but2);

    if(but2Now == but2Now1) 
    {
        if(but2Now != but2State)
        {
            value1 = 0;
            value2 = 1;
            value3 = 0;
            //show(img2);
        }

        but2State = but2Now;
    }

//---------------------------------------------------------------------------
//code pour bouton 3
but3Now = digitalRead(but3);
    delay(5);
    int but3Now1 = digitalRead(but3);

    if(but3Now == but3Now1) 
    {
        if(but3Now != but3State)
        {
            value1 = 0;
            value2 = 0;
            value3 = 1;
            //show(img2);
        }

        but3State = but3Now;
    }




    if(value1 == 1)
    {
        
      //ici l'action a effectuer le bouton 1 est appuyer
      
        if (millis () - lastMoved >= MOVE_INTERVAL)
    {
    updateDisplay ();
    lastMoved = millis ();
    }
        
        
        
    }

    if(value2 == 1)
    {
      
      //ici l'action a effectuer le bouton 2 est appuyer
        
      if (millis () - lastMoved >= MOVE_INTERVAL)
    {
    updateDisplay2 ();
    lastMoved = millis ();
    }  
       
    }

if(value3 == 1)
    {
      
      //ici l'action a effectuer le bouton 2 est appuyer
        
      if (millis () - lastMoved >= MOVE_INTERVAL)
    {
    updateDisplay3 ();
    lastMoved = millis ();
    }  
       
    }




  }  // end of loop

Merci d'avance

Cdt

UP