Serial e push button

premetto (di nuovo) che sono abbastanza nuovo nel mondo di arduino.
ho scritto questo sketch per far in modo che,alla pressione di un tasto,arduino mandi un messaggio "w" a acckeys che a sua volta digita W come tastiera virtuale. ho collegato ground e pin 8 al pulsante,il problema è che arduino (nano) continua a mandare all'infinito il messaggio seriale "w" anche senza la pressione del tasto. Cosa ho sbagliato?

const int buttonPin = { 8}; 
int buttonState = {0}; 



void setup () {


  Serial.begin(9600); 
  

    pinMode(buttonPin, INPUT_PULLUP);
  
  
  

}

void loop () {

  
  buttonState = digitalRead(buttonPin);
   if (buttonState == HIGH) {
  
   Serial.print("w");
  }
  else{
  //lasciato vuoto perchè non so come fare
 
  }

}

grazie per l'attenzione

Ciao luiggio,

quando imposti un pin come INPUT_PULLUP lo forzi allo stato HIGH....per cambiargli di stato devi collegare a GND e diventerà LOW...quindi la tua :

buttonState = digitalRead(buttonPin);
if (buttonState == HIGH)

è sempre vera.
Devi ragionare al contrario.

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"

}

grazie infinite per le risposte!
proverò il nuovo codice,modificandolo a mia volta per farlo funzionare con 8 tasti! vi auguro buona giornata

stranamente,non ha funzionato:
ho riscritto semplicemente High e ora funziona perfettamente!
grazie del vostro aiuto

Ho commesso un errore nell' istruzione "if (buttonState=LOW){",
l'istruzione corretta è "if (buttonState==LOW){" con doppia eguaglianza.

Probabilmente tu nel correggere il codice hai messo le cose a posto il doppio segno "==".

Ad ogni modo la condizione LOW reagisce al momento che premi il pulsante, mentre HIGH quando lo liberi.