Paso 4: Firmware funciones
Regular el voltaje de la salida del Joule Thief (tensión de alimentación del microcontrolador)
Firmware monitorea la tensión de alimentación utilizando el convertidor A/D - en lugar de conectar uno de los pines de entrada a la tensión de alimentación, muestras de convertidor A/D, construidas en el voltaje de referencia fijo utilizando la tensión de alimentación la tensión de referencia A/D. El resultado es el número inverso de la tensión de alimentación. El resultado de A/D resulta ser: 512/supply_voltage. Comparando este número contra umbral predeterminado para activar o desactivar el circuito Joule Thief efectivamente regula la tensión de alimentación. Este voltaje se encuentra ligeramente por debajo de la tensión del diodo Zener de 5.1V para evitar que el diodo Zener la desviación de la tensión - desperdiciando energía.
Compruebe si el interruptor se empuja
El firmware también rutinariamente comprueba si se pulsa el botón. Puesto que el interruptor de botón es multiplexado con el pin que controla al Joule Thief, el trabajo es un poco complicado.
El firmware primero cambia el pin de salida a modo de entrada. Lo que significa que el pin se convierte en alta impedancia. Ponerlo otra manera, circuito Joule Thief es apagado. En este punto, el voltaje del pin debe ir bajo, a menos que el interruptor está cerrado. Entonces el firmware simplemente lee el estado del pin y da el pin a modo de salida. Esto sucede aproximadamente cada 8 milisegundos o 125 veces por segundo.
Ahora el estado del botón se comprueba contra el reloj para ver si se lleva a cabo lo suficientemente largo. Si es demasiado corto, el empuje del botón es ignorado como un ruido. Si el empuje es suficiente, se incrementa un contador para verificar si hay grifos simples o dobles. Firmware espera durante un periodo determinado para otro toque de botón. Cuando se agote, se creó un evento individual/doble grifo o pulsador.
Animar los LEDs
La función más importante de todos - animar los LEDs! Uso la palabra animar porque JT onda simplemente no "parpadea" el LED, pero cambios LED brillo suavemente arriba y abajo en niveles de 8 bits completo.
El motor de animación trabaja de forma paramétrica. Tiene pocos parámetros a especificar; actualización base tasa (velocidad), dirección del movimiento (izquierda), umbral que uno desencadena adyacentes llevó a empezar a cambiar el nivel de brillo entre otras cosas. Cambiando estos parámetros puede crear patrones sin fin de la animación.