Problema Seriale Arduino

Ho caricato questo codice, del voltmetro, senza la parte di librerie e pin riconducibili a tali.

#define Vref  5.0                                     /* calibrazione della tensione di riferimento delle misure */

/*
siccome Arduino legge in entrata al massimo 5 v, devo dividere con un partitore di tensione la Vin.
Per fare ciò utilizzo una Ra = 681 k Ohm 1% e una Rb = potenziometro multigiro 200 k Ohm.
*/

/* 
Vin(max) viene calcolata con Vout(max) / (Rb / (Ra + Rb)). Quindi coef = (Ra + Rb) / Rb.
Ma siccome Ra è fisso, basta inserire il valore di Rb.
*/

#define Ra1 680000                                    /* valore in Ohm di Ra1. 681 k Ohm 1% */
#define Rb1 200000                                    /* valore in Ohm di Rb1. potenziometro multigiro 200 k Ohm */
#define Ra2 680000                                    /* valore in Ohm di Ra2. 681 k Ohm 1% */
#define Rb2 200000                                    /* valore in Ohm di Rb2. potenziometro multigiro 200 k Ohm */
#define Ra3 680000                                    /* valore in Ohm di Ra3. 681 k Ohm 1% */
#define Rb3 200000                                    /* valore in Ohm di Rb3. potenziometro multigiro 200 k Ohm */
#define Ra4 680000                                    /* valore in Ohm di Ra4. 681 k Ohm 1% */
#define Rb4 200000                                    /* valore in Ohm di Rb4. potenziometro multigiro 200 k Ohm */

float coef[4] = {((Ra1 + Rb1) / Rb1), ((Ra2 + Rb2) / Rb2), ((Ra3 + Rb3) / Rb3), ((Ra4 + Rb4) / Rb4)};   /* array di valori fissi dati dalle resistenze di ogni canale. */

float Vanalog[4] = {0.00, 0.00, 0.00, 0.00};          /* array di valori di tensione, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */
float VanalogMAX[4] = {0.00, 0.00, 0.00, 0.00};       /* array di valori di tensione massimi, convertiti in analogico tra 0 e 5 v. i valori sono a 2 cifre decimali. */

#define Sample 32                                     /* numero dei campionamenti */
#define Channel 4                                     /* numero dei canali */

int CH[4] = {18, 19, 20, 21};                         /* array che per elementi ha i numeri dei pin per richiamare i pin analogici su Arduino Pro Micro. */
int Vdigital[4] = {0, 0, 0, 0};                       /* array di valori di tensione, convertiti in digitale tra 0 e 1023. i valori sono interi. */
int VdigitalMAX[4] = {0, 0, 0, 0};                    /* array di valori di tensione massimi, convertiti in digitale tra 0 e 1023. i valori sono interi. */ 

void readCH(byte n){
  unsigned int Somma;                                 /* variabile che contiene la somma di tutti i campionamenti (1023 * 32 = 32736 al massimo) */
  byte varSample;                                     /* variabile del campionamento */
  for (varSample <= (Sample - 1); varSample++;){      /* ciclo for per i campionamenti, da 0 a 31, quindi 32 campionamenti */
    Somma += analogRead(CH[n]);                       /* ad ogni ciclo aggiungi una lettura */
  }
  Vdigital[n] = Somma / Sample;                       /* salva nell'array la media dei campionamenti  */
  Somma = 0;                                          /* uscito dal ciclo for azzera la sommatoria per il prossimo richiamo della funzione */
  varSample = 0;                                      /* uscito dal ciclo for azzera la variabile da 0 a 31 per il prossimo richiamo della funzione */
}

void detectMAX(){
  for (byte varCH = 0; varCH < (Channel - 1); varCH++){   /* ciclo for per i canali */
    if(Vdigital[varCH] > VdigitalMAX[varCH]){         /* if per trovare il valore più alto */
      VdigitalMAX[varCH] = Vdigital[varCH];           /* se trovo un valore più alto del precedente lo salvo al posto del precedente */
    }
  }
}

#define KeyboardPin A10                               /* pin lettura tastiera */
byte varKeyboard = 0;                                 /* variabile byte che contiene il valore della lettura del pin anallogico della tastiera */
bool select = false;                                  /* variabile booleana per il pulsante select */
bool reset = false;                                   /* variabile booleana per il pulsante reset */

void keyboard(){
  varKeyboard = analogRead(KeyboardPin);              /* lettura del pin analogico della tastiera */
  if (varKeyboard > 767){select = true;}              /* se la lettura è maggiore del valore, allora il pulsante select è premuto e la variabile booleana è true */
  else {select = false;}                              /* in caso contrario la variabile booleana è false */
  if(varKeyboard < 767 && varKeyboard > 255){reset = true;}   /* se la lettura è minore del valore e allo stesso tempo maggiore di 255, allora il pulsante reset è premuto e la variabile mooleana è true */
  else {reset = false;}                               /* in caso contrario la variabile booleane è false */
}

byte varMAX = 0;                                      /* variabile che contine il numero del canale in base a quante volte schiaccio il tasto select */

void resetMAX(){
  if (select){varMAX++;}                              /* se select è true, aggiungi un valore alla variabile varMAX */
  for (varMAX; varMAX <= (Channel - 1);){             /* ciclo for, finché la variabile è minore o uguale del numero dei canali */
    if (reset){VdigitalMAX[varMAX] = 0;}              /* se reset è true, azzera l'elemento dell'array della tensione digitale corrispondente al canale selezionato */
  }
  varMAX = 0;                                         /* azzera la variabile */
}

void conversionDA(byte n){
  Vanalog[n] = ((Vref * Vdigital[n]) / 1023) * coef[n];      /* conversione tensione da digitale intero ad analogico decimale, da 0 a 22 Volt */
  VanalogMAX[n] = ((Vref * Vdigital[n]) / 1023) * coef[n];   /* conversione tensione MAX da digitale intero ad analogico decimale, da 0 a 22 Volt */
}

void setup() {

  Serial.begin(9600);
  
  pinMode(18, INPUT);
  pinMode(19, INPUT);
  pinMode(20, INPUT);
  pinMode(21, INPUT);
  pinMode(A10, INPUT);

}

void loop() {
  
  readCH(0);
  readCH(1);
  readCH(2);
  readCH(3);
  
  detectMAX();
  keyboard();
  resetMAX();
  
  conversionDA(0);
  conversionDA(1);
  conversionDA(2);
  conversionDA(3);

  Serial.print("varKeyboard: "); Serial.print(varKeyboard); Serial.print(" select: "); Serial.print(select); Serial.print(" reset: "); Serial.print(reset); Serial.print(" varMAX: "); Serial.println(varMAX);
}

Non funziona.

Ma se nella sezione loop scrivo soltanto:

void loop() {

  Serial.print("varKeyboard: "); Serial.print(varKeyboard); Serial.print(" select: "); Serial.print(select); Serial.print(" reset: "); Serial.print(reset); Serial.print(" varMAX: "); Serial.println(varMAX);
}

Mantenendo inalterato il resto del codice, la comunicazione avviene correttamente.