nano slave e nano master

ciao a tutti ed auguri di un buon inizio.
mi trovo con un programma , che e' suddiviso in vari void , comandati da swich case.
dato che ho poca memoria ho diviso in 2 le funzioni.
lo slave ha 16 giochi di luce,che cambio con la pressione di un pulsante.
il master comanda un lcd 16x2 4 rele' . e 3 pulsanti
io ora vorrei tramite la seriale , comandare il cambio del gioco ,ed leggere sul lcd il case in cui mi trovo.
vorrei vedere se riesco a farcela da solo ma avrei bisogno se possibile avere qualche esempio su come ,
dallo slave leggere dove sono e inviarlo su seriale ed sullo slave come leggerlo e scriverlo su lcd,
spero di essermi fatto capire se serve metto il 2 programmi.
per ora vi ringrazio e vi auguro buon anno
stefano

forse chiedo troppo.
da questo programma, come posso inviare, via seriale la funzione in cui opero?
io ho provato a mettere serial print ma continua ad inviare ,mettendo delay il programma si rallenta
e' un gioco di luce,

void loop() {
  // read that state of the pushbutton value;
  int buttonVal = digitalRead(buttonPin);
  if (buttonVal == LOW && oldButtonVal == HIGH) {// button has just been pressed
    lightPattern = lightPattern + 1;
  }
  if (lightPattern > nPatterns) lightPattern = 1;
  oldButtonVal = buttonVal;
  
  switch(lightPattern) {
    case 1:
     VuOne();   
       break;
       case 2:
      VuTwo();
       break;
      case 3:
      VuThree();
     break;
     case 4:
      VuFour();
      break;
    case 5:
     VuFive();
      break;
    case 6: 
      VuSix();
      break;
    case 7:
     All();
     break;
     case 8:
     SineDemo();
     break;
     case 9:
     ripple();
     break;
     case 10:
   ripple2();
      break;
     case 11:
   sinelon();
      break;
       case 12:
   pattern3();
      break;
      case 13:
      fire();
      break;
      case 14:
     fireblu();
      break;
       case 15:
     FirePurp();
      break;
      case 16:
       Off();
      break;
     
  }
}

non chiedi troppo, non ti sai spiegare

cosa significa inviare via seriale la funzione nella quale operi?
vuoi che stampi il nome della funzione?
all’inizio?
alla fine?
durante?
quale sarebbe la difficoltà di fare:

void loop() {
  // read that state of the pushbutton value;
  int buttonVal = digitalRead(buttonPin);
  if (buttonVal == LOW && oldButtonVal == HIGH) {// button has just been pressed
    lightPattern = lightPattern + 1;
  }
  if (lightPattern > nPatterns) lightPattern = 1;
  oldButtonVal = buttonVal;
 
  switch(lightPattern) {
    case 1:
  Serial.print("Funzione VuOne avviata");
   VuOne();   
       break;
     ........


e così via
     
  }
}

quello che volevo indicare e' questo
volevo che venisse inviato via seriale
il case in cui sono, VuOne, VuThree etc, per poi leggerlo su un altro nano che lo scrive su un lcd.
hoprovato con semplicemente un comando serialprint ma lo invia di continuo

void loop() {
  // read that state of the pushbutton value;
  int buttonVal = digitalRead(buttonPin);
  if (buttonVal == LOW && oldButtonVal == HIGH) {// button has just been pressed
    lightPattern = lightPattern + 1;
  }
  if (lightPattern > nPatterns) lightPattern = 1;
  oldButtonVal = buttonVal;
  
  switch(lightPattern) {
    case 1:
     VuOne();   
       break;
       case 2:
      VuTwo();
       break;
      case 3:
      VuThree();
     break;
     case 4:
      VuFour();
      break;
    case 5:
     VuFive();
      break;
    case 6: 
      VuSix();
      break;
    case 7:
     All();
     break;
     case 8:
     SineDemo();
     break;
     case 9:
     ripple();
     break;
     case 10:
   ripple2();
      break;
     case 11:
   sinelon();
      break;
       case 12:
   pattern3();
      break;
      case 13:
      fire();
      break;
      case 14:
     fireblu();
      break;
       case 15:
     FirePurp();
      break;
      case 16:
       Off();
      break;
     
  }
}

Dipende da dove lo hai messo

Che debounce hai?

ho un debunce con un condensatore e resistenza, ma lo stato dei vari case non cambia,da solo.
il seriaprint l ho messo nel loop rispettivo del vari case.

e quindi ti ripete la trasmissione ad ogni nuovo giro di loop?
era questo che voleva sapere il "liberomercante"?
e, parlando allo OP, dove sarebbe da spostare se all'esecuzione della funzione non va bene?

si dovrebbe inviarlo solo una volta, anche perche cosi non intaso la seriale, ma come l ho scritto io, dentro al void vuone
serial.println("vuone")lo ripete in infinito

visto che sono contrario a dare la pappa fatta io ci provo ancora a stimolarti
se metterlo dove esegui il comando dato dal pulsante, dove altro potresti metterlo?

void loop() {
  
  // read that state of the pushbutton value;
  int buttonVal = digitalRead(buttonPin);
  if (buttonVal == LOW && oldButtonVal == HIGH) {// button has just been pressed
    Serial.println(lightPattern );
  }
  if (buttonVal == LOW && oldButtonVal == HIGH) {// button has just been pressed
    lightPattern = lightPattern + 1;
  }
  if (lightPattern > nPatterns) lightPattern = 1;
  oldButtonVal = buttonVal;
  
  switch(lightPattern) {
    case 1:
     VuOne();   
       
       break;
       case 2:
      VuTwo();
       break;
      case 3:
      VuThree();
     break;
     case 4:
      VuFour();
      break;
    case 5:
     VuFive();
      break;
    case 6: 
      VuSix();
      break;
    case 7:
     All();
     break;
     case 8:
     SineDemo();
     break;
     case 9:
     ripple();
     break;
     case 10:
   ripple2();
      break;
     case 11:
   sinelon();
      break;
       case 12:
   pattern3();
      break;
      case 13:
      fire();
      break;
      case 14:
     fireblu();
      break;
       case 15:
     FirePurp();
      break;
      case 16:
       Off();
      break;
     
  }
}

l ho provato e mi sembra che funzioni, ma aspetto un tuo parere su quali errori ho fatto
basta un consiglio su come correggerlo, se me lo fai te non imparo nulla,l unica cosa che quando viene acceso non mi da che e' nel case 1, logicamente perche' non viene premuto il tasto .dopo quando viene richiamato funziona tutto.

sei nella zona giusta
pensa come funziona il programma (che vuol dire: esegue passo a passo nella tua testa le istruzioni...)