Etemenanki:
Giusto per prova, la parte che rileva l'oggetto prova a farla cosi:void loop()
{
val = digitalRead(sensore_infrarosso);
if ((val_old != val) && (val == LOW)) //oggetto davanti al sensore
{
... istruzioni del pin uscita
val_old = val;
}
if ((val_old != val) && (val == LOW)) //oggetto allontanato
{
val_old = val;
}
}
Il primo if viene eseguito una sola volta nel momento in cui l'oggetto viene rilevato, poi NON viene piu eseguito finche' l'oggetto non se ne va e ritorna di nuovo (perche' val_old non e' piu diverso da val finche' non viene resettato dal secondo if), il secondo if allo stesso modo viene eseguito solo una volta quando l'oggetto si allontana dal sensore ... a proposito, le istruzioni del pin di uscita dovrebbero essere digitalWrite, non pinmode ... ;) > SukkoPera: ovviamente va usato un partitore resistivo per la connessione dei due ... meglio non rischiare comunque, date le differenze di alimentazione ;)
Stavo vedendo la soluzione proposta da te e seguendo il tuo ragionamento non mi trovo, nel caso dell'oggetto allontanato
if ((val_old != val) && (val == LOW)) //oggetto allontanato
il secondo confronto va fatto con
val == HIGH
Giusto?
Per quanto il pinmode, in un altro topic mi è stato detto che per simulare la pressione del tasto potevo fare nel seguente modo:
pinMode (10, OUTPUT);
delay (300);
pinMode (10, INPUT);