Problema di accensione led

Salve a tutti, mi potete spiegare perchè un progetto così semplice e stupido non mi viene dopo che uso arduino da due anni.
In pratica, connetto un bottone ai 5v, quando si schiaccia un filo va su arduino come input, se quest'ultimo è positivo quindi il bottone è schiacciato, un altro pin di output accende un led.
Il codice è questo:

const int Out=3;
const int In=5;
int val=0;

void setup() {
   pinMode(Out,OUTPUT);
   pinMode(In,INPUT);
   Serial.begin(9600);
}

void loop() {
  val=digitalRead(In);
  Serial.println(val);
  if(val==HIGH){
    digitalWrite(Out,HIGH);
  }
}

Il problema è che anche se il bottone non è schiacciato, sul monitor val è 1 e non 0 come dovrebbe essere e non capisco perchè
qualcuno potrebbe aiutarmi? grazie

edit:
ora ho connesso i 5v al terminale 1 del bottone e un cavo al terminale 2 dell'altro e c'è un problema:
è che se inserisco il cavo nel pin senza che io schiacci il bottone val=1, e per assurdità ho staccato il cavo da qualsiasi fonte e ho lasciato un estremità attaccata nel pin, e val era sempre 1, allora ho pensato che ci fosse qualcosa che conducesse corrente e creasse problemi, ma arduino poggia su una scrivania in legno e sinceramente non penso, però c'è da dire che se tengo arduino a mezz'aria tenendolo per il cavo, val è 0 finche non tocco le saldature e diventa 1, ma pur tenendolo sospeso in questo modo, 5 valori su 6 sono 0 ma un'altro valore si alterna tra questi ultimi ed è sempre uno.

Mettendo il pulsante verso massa, puoi usare la resistenza di pull-up interna, che si attiva scrivendo pinMode(in, INPUT_PULLUP); anziché solo INPUT. Ovviamente devi considerare in ingresso stati opposti rispetto a come hai fatto per il pulsante verso il positivo.