simulare pressione tasto con sensore infrarosso

Ho seguito il tuo consiglio, ho fatto il primo sketch, dove su monitor seriale ho letto il valore del sensore sia con un oggetto posto avanti che non.

Quando dinanzi al sensore NON c'è nessun oggetto il suo valore è HIGH
Quando dinanzi al sensore C'E' un oggetto il suo valore è risultato LOW

il codice l'ho modificato nel seguente modo, ma purtroppo non riesco a capire dov'è l'errore

#define sensore_infrarosso 4

byte val     = HIGH;
byte val_old = HIGH;

void setup() {
  pinMode(sensore_infrarosso, INPUT);
}

void loop() {
  val = digitalRead(sensore_infrarosso);
  if ((val_old == HIGH) && (val == LOW)) {
    // rilevo oggetto
    val_old = val; 
     pinMode (10, OUTPUT);
     delay (300);
     pinMode (10, INPUT);;
  }
  else if ((val_old == LOW) && (val == LOW)) {
    // oggetto ancora davanti al sensore
   
  }
  else if (( val_old == LOW) && (val == HIGH)) {
    // oggetto allontanato
    val_old = val; 
   
  }
}