Convertir los códigos hexadecimales del Pronto en pulsos de encendido / apagado sin procesar

2

Realmente me estoy mojando los pies cuando se trata de protocolos IR y códigos IR en general, por lo que mi conocimiento y comprensión pueden ser un poco inestables aquí.

Soy un programador y estoy tratando de crear una herramienta para convertir los códigos hexadecimales del Pronto en pulsos IR RAW. Para hacer esto estoy tratando de entender el proceso manualmente. Estoy probando esto con una aplicación IR blaster en un dispositivo específico.

Lo que tengo hasta ahora es el resultado de una gran cantidad de búsquedas, de jugar con herramientas y de unir piezas.

Teniendo en cuenta el siguiente código HEX:

0000 006E 0011 0006 0012 0052 0014 0051 0014
0051 0014 0051 0013 0052 0013 0052 0024 0051
0014 0031 0014 0052 0023 0052 0034 0051 0014
0051 0014 0052 0013 0052 0013 0052 0014 0051
0014 0632 0154 0051 0014 0CE5 0154 0051 0014
0CE5 0154 0051 0014 0CE5

Aquí está el pseudocódigo de lo que tengo

Sé que el primer conjunto, "0000", indica que es un código oscilado sin formato. Creo que el segundo conjunto "006E" indica la frecuencia del código y se puede convertir a khz a través de:

freq = 1000000 / (toDecimal("006E") * .241246)

Sé que los conjuntos de códigos tercero y cuarto tienen que ver con las longitudes de secuencia.

Sé que el resto de los conjuntos se pueden convertir a pulsos en microsegundos con lo siguiente, usando "0012" como ejemplo

microSeconds = 1000000 * toDecimal("0012") / freq

Entonces "0012" sería (redondeado) 478. Entonces, aplicando lo anterior al código completo y separado con comas, termino con:

478,2176,531,2150,531,2150,531,2150,504,2176,504,2176,955,2150,531,1300,531,2176,929,2176,1380,2150,531,2150,531,2176,504,2176,504,2176,531,2150,531,42088,9023,2150,531,87599,9023,2150,531,87599,9023,2150,531,87599

Cuando pruebo esto con un blaster IR, no veo que el dispositivo que estoy tratando de controlar responda. Sin embargo, si preparo los impulsos de apertura para el protocolo NEC 9000,4500, recibo una respuesta de mi dispositivo.

Mis preguntas son: ¿Podría alguien decirme si estoy en el camino correcto aquí? ¿Cómo discerniría del código HEX que necesitaba usar el 9000 en 4500 como impulsos de apertura? Cualquier entrada / consejo sería muy apreciado, ya que he dicho que me estoy mojando los pies aquí. Muchas gracias!

    
pregunta TheMethod

1 respuesta

1

Recientemente también detecté IR, y estoy tratando de controlar mi dispositivo con el emisor de infrarrojos de mi teléfono y no es remoto. Todo lo que tengo es un sensor de infrarrojos y una salida de tiempo entre impulsos. (Descodifiqué todo para un código de 32 bits, pero eso no comienza en el encabezado)

Supongo que la respuesta a tu pregunta es que no se está midiendo el pulso real del infrarrojo. La distancia entre cada pulso es lo importante. Cada pulso es 560u, excepto que el primero es 9x más largo. Es por esto que siempre comienza con 0000. Un 1 binario proviene de un "tiempo de espera" más largo. 560u pulsa el tiempo hasta el siguiente pulso (2.25ms en total) y 0 desde un pulso más corto (1.125, la mitad de un pulso largo) enlace y más útil enlace

también de investigaciones adicionales, me doy cuenta de que pronto hex no es lo mismo que NEC lo siento pero creo que su problema radica en que su tercera y cuarta palabra 0011 0006 dicen cuánto durarán las ráfagas 1 y 2. Su valor decimal es el tiempo que duran las ráfagas 1 y 2, y el suyo se suma a 23. Pero no conté su código. (Sigo editando) Su código se suma a 21, como debería ser. Cambie su 0011 0006 a 0000 0015

También trabajando en bits 5,6

    
respondido por el Wolfe

Lea otras preguntas en las etiquetas