Credo che sia perché tu qui definisci una variabile locale "val" che però ha lo stesso nome di quella che hai già messo globale:
...
int val = 0;
...
int val = 0;
// Somma tre letture consecutive
for (int i = 0; i < 3; ++i)
val += analogRead(A0);
Prova a togliere "int" per usare sempre e solo quella globale:
val = 0;
// Somma tre letture consecutive
for (int i = 0; i < 3; ++i)
val += analogRead(A0);