Problema Seriale Arduino

docdoc:
Eh? Qualcosa non mi torna in quest'altra for():

byte varSample;
for (varSample <= (Sample - 1); varSample++;){

Il primo parametro è l'inizializzazione ("varSample <= (Sample - 1)" ?), il secondo la condizione per il ciclo ("varSample++" ??), il terzo la reinizializzazione (vuoto!).

Questa quindi equivale di fatto a:

varSample <= (Sample - 1);
while (varSample++) {
...
}

Mi sa che hai messo un punto e virgola sbagliato, e poi non inizializzi il valore iniziale di varSample.
Forse se "Sample" è il numero di campionamenti, volevi forse fare:

for (byte varSample=0;varSample < Sample; varSample++) {

che equivale a:

byte varSample = 0;
while (varSample < Sample) ) {
...
varSample++
}

Era questo che volevi fare?

Insomma di fatto leggi "Sample" campioni dalla porta anlogica passata a parametro e questo è ok, ma leggerli così tutti di seguito a che serve? Devi metterci un minimo di delay tra una e l'altra. Inoltre azzerare le variabili Somma e varSample non serve a nulla, sono locali alla funzione e si distruggono all'uscita dalla stessa.
Io farei così:

void readCH(byte n){

unsigned int Somma;
  for (byte i=0; i < Sample; i++;){
    Somma += analogRead(CH[n]);
    delay(5);
  }
  Vdigital[n] = Somma / Sample;
}

Si esattamente, l'idea è quella di leggere 32 volte un canale "n" e poi fare la media.

Perché inserire un delay bloccando poi tutto quanto? Non posso invece aumentare il numero dei campioni?

Per quanto riguarda l'azzeramento di Somma era perché avevo letto in una discussione precedente che era sempre meglio farlo ma mi rendo conto ora che effettivamente in quel topic non veniva fatta una funzione ad hoc con variabile interna, ma veniva usata una variabile globale.

Comunque la tua funzione risponde con un errore expected ")" before ";" sulla riga del for.