función PulseIn() en el controlador NODEMCU

Buenas! tengo un problema con la función PulseIn() con el microcontrolador NODEMCU.

El proyecto consta de 4 entradas (GPIO) las cuales tienen que leer el tiempo del pulso. Ya lo tengo programado pero no funciona bien. Lee cuando quiere, no lee, devuelve cualquier tiempo. En fin, queria saber si hay otra manera de medir el tiempo de los pulsos. (attachInterrupt no funciona). Tal vez haya otra forma de programar lo que quiero hacer y no la estoy viendo. Gracias de antemano.

float valor;
float lee;
float a;
int pulsepin = 16;

float valor2;
float lee2;
float a2;
int pulsepin2 = 5;

void setup(){
pinMode(pulsepin, INPUT);
Serial.begin(9600);
}
void loop()
{
xd=digitalRead(pulsepin);

if(xd==HIGH){

if(value = pulseIn(pulsepin, xd==HIGH, 100000000)){
Serial.println("pin 16 activa2");
a = value / 1000000;
//if(a>0.01){
Serial.println("pin 16: ");
Serial.println(a);
//}
}
} //////////////////// darle 2 segundos para activar la llave y 2 segundos para descativarla

a=0;
value=0;

xd2=digitalRead(pulsepin2);

if(xd2==HIGH){

if(value2 = pulseIn(pulsepin2, xd2==HIGH, 100000000)){
Serial.println("pin 5 activa2");
a2 = value2 / 1000000;
// if(a2>0.01){
Serial.println("pin 5: ");
Serial.println(a2);
// }
}
} //////////////////// darle 2 segundos para activar la llave y 2 segundos para descativarla

a2=0;
value2=0;

delay(200);
}

sketch_sep20a.ino (1.01 KB)

Por favor lee las Normas del foro y edita tu código usando etiquetas </>

Leiste que hace pulsein()?

Ve a este link y tendrás la respuesta.