Paso 11: Captura de datos de Control remoto IR
Vaya en primer lugar, abra la hoja de datos de AT90USB1686 y leer sobre los temporizadores. En particular, entender completamente el temporizador 1 y su unidad de captura de entrada. Tengo un apéndice en contadores de tiempo, por favor lea.
Se ejecutará el temporizador de forma continua. La unidad de captura de entrada nos dará una fecha y hora de cuando el receptor IR cambia su salida. Esta manera, podemos medir la longitud de cada uno "en" y "off" pulse.
Así no estamos confundidos, recuerde que nuestro receptor es activo bajo, lo que significa que un "pulso de ON" es cuando la salida es baja, y un pulso de"OFF" cuando la salida es alta. El encendido y apagado se refiere a si se envía la luz IR.
Sabemos por la forma de onda he capturado y mostrado en el paso anterior que un comando se repite una y otra vez mientras se mantiene pulsado el botón del mando a distancia. Sabemos que cuando este comando se repite porque cada comando comienza con el más largo "a pulso".
Conociendo estos hechos, podemos con éxito captura y coincide con una serie de pulsos contra un patrón conocido mediante software. Simplemente nos podemos registrar los pulsos en una matriz, y cuando se detecta un muy largo "a pulso", sabemos que para empezar a grabar al principio de la matriz.
Todos los comandos contienen el mismo número de pulsos, por lo que mantenemos la cuenta de cuántos pulsos para saber cuando un comando haya terminado. Cuando el comando finaliza, tratamos de coincidir con nuestra matriz grabada en una matriz conocida para ver qué comando fue enviado, con el proceso de eliminación.
Nota: Este método no es plena prueba, pero he probado otros métodos, como haciendo una comparación en sentido inverso después de cada pulso de ON (en comparación con después de un cierto número de en pulsos). La cantidad de datos que necesitamos comparar y el microcontrolador lento causado el proceso de comparación tomar demasiado largo, y el microcontrolador "perder" algunos pulsos.
Para obtener la lista de comandos conocidos, simplemente conectar el microcontrolador al receptor IR y entonces tener el puerto serie Dile cuánto tiempo entre pulsos. Tengo a disposición una utilidad llamada "IR código Visualizer" escrito en Javascript que te permitirá ver el puerto serie de salida como una forma de onda, como un analizador lógico.
Tan cable de salida del receptor IR al pin PORT-D-4, que es la entrada de 1 de unidad de captura de entrada, y luego conecte la alimentación y la masa del receptor IR. No necesita un diagrama para esto, al menos espero que... Pero he incluido una de todos modos.
Tome los archivos han proporcionado, compilar, cargar y ejecutar en el Teensy ++. Luego abra el terminal serial y presionar un botón en el control remoto. Verás los impulsos listados en la pantalla. Guardar los resultados para cada botón, pégalos en el "Visualizador de código de IR" para ver la forma de onda.
Te voy a mostrar cómo utilizar los resultados en el siguiente paso.
Pop quiz, ¿cuál es la unidad que se utiliza para capturar los valores de ancho de pulso de almacén el IR que estamos utilizando?
Teensy ++ tiene un cristal de 16 MHz, pero nos estamos quedando en 3, 3V en lugar de 5V, por lo que estamos utilizando "clock_prescale_set(clock_div_2);" por lo que realmente se ejecuta a 8 MHz. El código fuente muestra el temporizador 1 se configura para usar un prescaler "dividir por 8", para que el temporizador está funcionando a 1 MHz. Así, 1/1000000 segundos es 1 nanosegundo, y que de lo que los valores son capturados y almacenados en.
--Copiado de mi apéndice sobre temporizadores