contatore

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.