Stato di un pin

Ciao giocherellando con UNO ho montato questo circuito: il pin 8 in output con una resistenza da 220 ohm e un Led chiuso a massa sul pin 2 una resistenza esterna da 10K verso massa

ecco il codice

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 8;
int input = 2;
int val = 0;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT); 
  pinMode(input, INPUT); 
 digitalWrite(led, LOW); 
}

// the loop routine runs over and over again forever:
void loop() {
  val = digitalRead(input); 
  if (val = HIGH) { 
    digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  }

}

Ho impostato il led a spento e mi aspetto che sia spento e si accenda solo quando tocco il pin 2 con il +5V

e invece come carico lo sketch il led si accende come se lo stato del pin 2 fosse alto Perchè? Franco

if (val = HIGH)

E' sbagliato, il test di uguaglianza si fa con 2 segni "=":

if (val == HIGH)

Come lo hai scritto tu, significa: assegna HIGH a val e poi dimmi se l'operazione è andata a buon fine. Siccome l'assegnamento va sicuramente a buon fine, l'if legge "true", vero, ed accende il led.

c'è sempre una ragione Franco