Come dice giustamente tux, il problema col tuo codice sta qua
if (val == HIGH) {
currentState = 1;
}
else {
currentState = 0;
Serial.println("Pippo");
}
quando premi il pulsante val è = HIGH e quindi entri e setti currentState ad 1, ma al prossimo giro, se il pulsante non è premuto, setti currentState a 0 e stampi Pippo! praticamente ricominci da capo. Io lascerei stare currentState e incrementerei il contatore alla pressione del pulsante. Utilizzerei old_counter per memorizzare il vecchio valore del contatore e stamperei il valore di contatore solo se maggiore di old_counter.
per capirci:
void loop(){
old_counter = contatore;
if(digitalRead(pulsante)){
contatore +=1;
}
if(contatore > old_counter){
Serial.println(contatore);
}
delay(250);
}
se poi vuoi stampare pippo al primo giro, la modifica è facile facile. che ne pensi?
N.