Non so se la causa di tutti i tuoi problemi sia la pulseIn, io ti ho solo chiarito come la pulseIn interagisce col tuo codice.
Alternative alla pulseIn? Dipende.
La pulseIn serve a leggere l'intervallo di tempo che passa fra 2 fronti di un segnale. Ti serve proprio questa cosa?