Paso 3: Decodificación de Control remoto
ON, OFF
- 882, 438
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 52
- 56, 162
- 56, 162
- 56, 162
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 52
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 162
- 56, 4010
- 882, 218
No había ningún espacio para guardar tiempos para 24 botones en el AVR, así que tuvo que encontrar un patrón en las señales. Después de mucha experimentación, logré decodificar la señal de codificación patrón para el control remoto. Ya que es bastante genérica, lo más probable es que su RGB remoto puede tener las mismas señales. Si no, tendrá que modificar las funciones readIR() y decodeIR() en el código.
Para decodificar las señales, me di cuenta de que sólo los valores en la posición 18-22 y 26-30 están cambiando para los diferentes botones. Además, los valores en el rango de 18-22 son siempre los mismos 26-30. Así que leyendo cualquier una alcance basta. Decidí leer ambos y comparar para estar 100% seguro. Los valores individuales de la gama son ya sea cerca de 52 o 164. Así que supuse que señal de tiempo en las proximidades de 52 como 0 y 164 1. Luego se descodifica sus valores en binario. He tratado los botones como matriz de 6 x 4 y por consiguiente el nombre de los botones de [0] [0] (arriba izquierda) [5] [3](bottom right).
Posición del botón | [0][0] B+ | [0][1] B- | [0] [2] de | [0] [3] en | [1][0] – R | [1][1] – G | [1][2] – B | [1][3] – W | [2][0] | [2][1] | [2][2] | [2][3] | [3][0] | [3][1] | [3][2] | [3][3] | [4][0] | [4][1] | [4][2] | [4][3] | [5][0] | [5][1] | [5][2] | [5][3] |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Posición de tiempo 18 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 |
Posición de tiempo 19 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 |
Posición de tiempo 20 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 |
Posición de tiempo 21 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Posición de sincronización 22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Descodificar el valor Decimal | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
Nota: para mejorar la velocidad, me duro codificados los valores de duración de tiempo en el código. También, he utilizado basado en interrupción IR señal de lectura para otras funciones, como desaparecer el efecto, pueden funcionar en paralelo y obtener velocidad máxima.