Se interpreto bene le tue necessità, oltre all'indicazione fornita da orso2001 devi fare in modo di intercettare che il software intercetti solo l'istante che il pulsante viene premuto, in modo tale che venga invocato una sola volta "Serial....".
Diversamente verificando lo stato, verrà inviata una raffica di caratteri "w".
Dai un'occhiata al listato e fatti un'idea di quello che si deve fare. Con l'occasione ho dato una ripulita al codice ...
const byte buttonPin = 8;
byte buttonState = 0; // stato attuale
byte buttonStateOld = 0; // stato precedente
void setup () {
Serial.begin(9600);
pinMode(buttonPin, INPUT_PULLUP);
buttonStateOld = digitalRead(buttonPin);
}
void loop () {
buttonState = digitalRead(buttonPin);
if (buttonState != buttonStateOld) { // variato stato button
buttonStateOld = buttonState; // aggiorna stato
if (buttonState=LOW){ // tasto premuto
Serial.print("w");
}
else { // tasto rilasciato
// inserire codice al momento che il tasto
// viene rilasciato
}
}
// Non è obbligatorio inserire un "else" se non hai motivo di eseguire
// del codice in alternativa all "if"
}