Paso 3: Software
El enlace de software se enumera a continuación. Mientras que está dirigido para el 12F683, fácilmente se adaptó a otras versiones de la foto. Usted necesitará cambiar la línea que identifica la versión de PIC (lista =) y el archivo de inclusión, pero los cambios intuitivas. La línea __CONFIG también necesite ajustar sólo porque uno o dos de las etiquetas utilizadas se deletrean diferentemente en algunos de los archivos de inclusión. Sólo asegúrese de que el PIC que uso tiene la capacidad de modulación (PWM) de ancho de pulso.
Hay un par de maneras para generar la forma de onda que necesitamos. Un método que es común en internet utiliza una serie de NOPs para producir la señal de 38 kHz y el ciclo de trabajo. Que el método funciona porque un pulso de 38 kHz tarda un poco mas de 26us así es bastante fácil hacerlo usando el reloj interno de 4 MHz PIC (1 por instrucción del ciclo). El otro método común es utilizar algo que produce una corriente de pulso de 38 kHz y luego utilizar el PIC a los impulsos de la puerta para la cantidad apropiada de tiempo. Que podría ser hecho usando algo así como un temporizador 555 para generar los pulsos pero muchas fotos tienen la capacidad de generación de pulso construida en. Lo que me refiero a es la función PWM que se utilizó en el episodio 9 para controlar la velocidad de un motor DC. Para nuestra aplicación de IR, sin embargo, vamos a permitir que el generador PWM ejecutar en un ciclo de trabajo fijo en lugar de cambiar el ciclo de trabajo igual para el controlador de velocidad del motor.
Otra vez, como vimos en el episodio 9, el PIC ofrece un pin específico para la salida PWM. Para bloquear los impulsos en este pin todos que tenemos que hacer es cambiar la definición del pin de entrada a una salida. Para cerrar la puerta simplemente cambiamos la definición de patillas a una entrada. Eso se puede hacer sobre la marcha en el software. Al iniciar una transmisión queremos asegurarnos que estamos sincronizados con los impulsos de modo que vigilar a la bandera de desbordamiento del Timer2. TIMER2 se dedica a la función PWM, por lo que establece el indicador de desbordamiento en una frecuencia de 38 kHz. Entonces todos tenemos que hacer es contar el número de desbordamientos en base al tiempo que tenemos que dejar la puerta abierta. Por ejemplo, la parte 560us de la onda de NEC es igual a aproximadamente 21 pulsos. También contamos con desbordamientos durante el tiempo de puerta cerrada. Todo eso se podría hacer utilizando otro temporizador e interrupciones pero la forma más fácil es simplemente matar el tiempo viendo la bandera de desbordamiento en el software. Eso es aceptable porque allí realmente no es cualquier otra cosa que debemos hacer al emitir la forma de onda del IR.
En este ejemplo, he codificado la IR dirección a ser FF 00 y dio valores arbitrarios a los comandos de dos interruptor. Puede cambiarlos para satisfacer sus propias necesidades. El interruptor de dirección lógica es muy simple y sólo busca un valor bajo en el pin GPIO apropiado. Cuando uno detecta que se llama una rutina de controlador de interruptor. Cada controlador de interruptor retrasa 50ms y luego chequea el pin GPIO. Eso es para tener en cuenta para la despedida de contacto en el interruptor. Después de que se transmite el comando IR comprobamos el pin GPIO para un lanzamiento del interruptor. Cuando se detecta un comunicado retrasamos otra vez para que 50ms para tener en cuenta para el posible rebote de contacto.
Bueno, eso es para el episodio 11 de "Diversión con foto montaje". Estad atentos para más episodios.