boucle d'analogRead

ca va renvoyer 2,2,2,2...

Comment faire dans ce cas ? Pour déclarer toto dans fonction() mais que l'on conserve sa valeur ?

il n'y a pas de miracle, il y a deux façon distincte pour faire ça...
tu peux soit utiliser une variable globale

int toto=1;

void loop{

  fonction();

}

fonction{
  toto=toto+1;
  Serial.print(toto);
}

ou soit une paramètre dans ta fonction (note que vu la nature de l'appelant (loop) tu va rencontrer le même problème pour déclarer ta variable...)

void loop{
  int toto=1;
  for(;;){
    fonction(toto);
  }

}

fonction(param){
  param=param+1;
  Serial.print(param);
}

les variables globales, ne sont pas à bannir, il faut just éviter de les utiliser lorsqu'on peut l'éviter (pour toutes les variables locales par exemple)... et généralement préférer la solution des paramètres (pour les variable d'état)...