KY-022

holaa. estoy volviéndome loco intentando comunicarme con el sensor ky-022 a puro código.
logre que la primera vez que toco el algún botón del control, me de el resultado, pero luego los números se vuelven locos y pareciera no tener sentido.

les dejo el código a ver si alguien me puede dar una mano. algo en el loop debe haber que aun no conozco, porque en una lógica de programación no debería hacer lo que hace.

pd:… no se si es necesario pero el sensor manda un alto de 9ms, uno bajo de 4,5 ms y después empieza a mandar los bytes… los primeros 8 son todos 0 porque se usan para identificar al receptor y en este caso no importa… los siguientes 8 son todos 1 porque hace la inversa, y luego inicia con los 16 que a mi me interesan… unos 500 micosegundos en reposo y 500 micros en alto es un 0 y 500 micros en reposo y 1600 micros en alto es un 1…

muchas gracias!!!

byte SENSOR=2;
int i=0;
byte a;
long int RESULTADO = 0;
int MEDIDAS[32];
void setup() {

Serial.begin(38400);

}

void loop() {

if(pulseIn(SENSOR,HIGH)!=0){

for(int j=0;j<32;j++){
MEDIDAS[j] = pulseIn(SENSOR,HIGH);
//Serial.println(MEDIDAS[j]);
}

for(i=0;i<32;i++){
if(MEDIDAS[(i)]>0 && MEDIDAS[(i)]<1100){
a=0;
}
if(MEDIDAS[(i)]>1100 && MEDIDAS[(i)]<2100){
a=1;
}
bitWrite(RESULTADO,31-i,a);

}
Serial.println(RESULTADO,HEX);

}
}