Probabilmente l'errore è intorno ai pin 4 e 5 del fotoaccoppiatore.
La massa di Arduino va al pin 4; il segnale verso Arduino va prelevato dal pin 5, ma sullo stesso pin 5 devi collegare un capo del resistore di 1K; l'altro capo del resistore di 1K va al positivo di Arduino.
Tieni presente che il fotoaccoppiatore è formato da due circuiti distinti e separati che lavorano in corrente: un circuito (chiamiamolo ingresso) fa capo ai pin 1 e 2; l'altro circuito (chiamiamolo uscita) fa capo ai pin 4 e 5.
Se fra i pin 1 e 2 circola corrente, i pin 5 e 4 lasciano passare corrente; se fra i pin 1 e 2 NON circola corrente, i pin 5 e 4 risultano isolati e quindi non lasciano passare corrente.
La corrente per il circuito d'ingresso viene fornita dal sensore, e viene limitata ad un valore non troppo alto dal resistore di 2200 ohm. La corrente per il circuito di uscita viene prelevata dal positivo di Arduino attraverso un resistore di 1K.
Il segnale verso Arduino è semplicemente un livello alto (attraverso 1K) quando il sensore è a riposo, e un livello basso (dato dal cortocircuito verso massa fra i pin 5 e 4 del fotoaccoppiatore) quando il sensore è attivo.
Se hai collegato il positivo di Arduino direttamente al pin 5 del fotoaccoppiatore, senza interporre il resistore di 1K, è possibile che l'oggetto abbia subito un danno da sovracorrente.
Per osservare dal vivo il funzionamento del 4N25 puoi aggiungere due LED rossi: uno in serie al pin 1; l'altro in serie al resistore di 1K.
In dettaglio, il primo LED dev'essere attraversato dalla stessa corrente che attraversa i pin 1 e 2 del 4N25, mentre il secondo LED dev'essere attraversato dalla stessa corrente che attraversa i pin 5 e 4.
Per comodità, puoi staccare il filo che dall'uscita del sensore arriva al pin 1 del 4N25, e metterci in mezzo il primo LED collegando l'anodo all'uscita del sensore e il catodo sul pin 1 del 4N25.
Già con questo setup dovresti osservare che il LED si accende quando il sensore è attivo, e si spegne quando il sensore è a riposo.
Se fin qui è tutto OK, puoi staccare il capo del resistore di 1K che adesso va al positivo di Arduino e metterci in mezzo il secondo LED, collegando l'anodo al positivo di Arduino e il catodo al pin 5 del fotoaccoppiatore.
Se il 4N25 è ancora sano, dovresti osservare che il secondo LED si iilumina quando il primo è spento, e viceversa.
Se il primo LED reagisce al sensore, ma il secondo resta sempre acceso o sempre spento, è possibile che il 4N25 sia guasto o che il filo dal pin 5 verso Arduino si comporti come uscita e non come ingresso.
Un'ultima (remota) possibilità di mancato funzionamento riguarderebbe il sensore stesso: quando dici che leggi 4 volt, stai misurando fra la massa e l'uscita del sensore, o fra i pin 1 e 2 del 4N25?
Nel primo caso, posso immaginare che il sensore non abbia un'uscita diretta ma un'uscita "open drain" da completare con un resistore esterno; nel secondo, mi aspetterei di leggere meno di 2 volt.
Se lo strumento che usi per leggere la tensione è anche amperometro, puoi mettere i puntali IN SERIE al filo d'uscita del sensore e misurare quanta corrente sta passando. I 4 volt che citi fanno supporre che stia passando una corrente debolissima, mentre servirebbero almeno una decina di milliampere.
Buona sperimentazione.
Se sbagli perché non sai, commetti un errore. Se sbagli perché non vuoi sapere, ne commetti due.