Paso 15: programación
Sólo flash el firmware a él.
El código es bastante extenso, ofrecerá una visión general del código completo.
Firmware completo: https://github.com/victornpb/sketch_aug20b_som_rem...
displayRoutine.ino contiene:
- ledBlink - asas led parpadeando y tiempo asincrónicamente
- currentViewMode - uno de los posibles:
- VIEWMODE_NORMAL, muestra el volumen actual, luego cambiar a VIEW_IDLE
- VIEWMODE_ANIM_MUTE, alternar entre guiones y el volumen corriente en un intervalo definido
- VIEWMODE_ANIM_VOLUP, Mostrar la animación y luego cambiar a VIEWMODE_NORMAL
- VIEWMODE_ANIM_VOLDW, mostrar el anim hacia atrás, luego cambiar a VIEWMODE_NORMAL
- VIEWMODE_LOCKED, de la pantalla y a la de los decimales
- VIEWMODE_IDLE, la pantalla no cambiará mostrará lo que está actualmente en el búfer.
framesLenght y marcos [] [2] es la animación actual y la longitud.
- displayRoutine()
- llama a la función en el bucle principal controlará los tiempos de espera y llama la sevenSeg_displayHold() que mostrará los datos en la pantalla actual.
sevenSeg.ino contiene:
Este sketch de arduino proporciona software para coche pantalla de 7 segmentos con multiplexación asincrónica y no necesita interrupciones externas de hardware o temporizador. Sólo un único segmento es dado vuelta al tiempo, esto permite que la pantalla para activar los pasadores de seguridad actual y sólo requiere una sola resistencia por pantalla en el perno común, también permite la visualización que debe utilizarse una fracción de la potencia.
- sevenSeg_font [] array que contiene un mapa de bits que representan cada dígito
- [displayData] - búfer de bytes de cada display de 7 segmentos
- sevenSeg_setNumber() función que establece el búfer displayData con el mapa de bits de sevenSeg_font correcto
- sevenSeg_displayHold() función que llevar a cabo la multiplexación para dibujar cada dígito con un retraso de assyncronous entre los segmentos
EVC.ino contiene:
Biblioteca para el uso de PT2257 - electrónica IC del regulador de volumen.
- void evc_setVolume (uint8_t dB);
- void evc_setVolumeLeft (uint8_t dB);
- void evc_setVolumeRight (uint8_t dB);
- void evc_mute (bool palanca);
- void evc_off();
Remote.ino contiene:
- enum LgRemote
- enum AiwaRemote
- lgMenu
Las flechas UP y DOWN se utilizan para controlar el volumen, pero cuando se presiona la tecla de menú, estas teclas se usan para navegar por el menú, este espacio de nombres se utiliza para manejar cuando se presiona una tecla de menú y momentarly no responde a la / DW claves para evitar conflictos cuando se navega por el menú.
- onModeLocked
- onModeLockedOff
- routine()
- processKey (valor sin signo de largo, currentMillis largo)
- byte processRemote() llama a esta función en cada bucle y manijas y despacho todo lo relacionado con eventos de IR
sketch_aug20b_som_remote4.ino
- enum Cmd {CMD_NONE, CMD_VOLUP, CMD_VOLDW, CMD_MUTE}
- modo de octeto
- Máquina de estado
----
Escribí el firmware en piezas que se pueden utilizar si usted quiere hacer su propio firmware:
Biblioteca para el uso de PT2257 - electrónica IC del regulador de volumen:
https://github.com/victornpb/Evc_pt2257
Sketch con el buen patrón para utilizar uno o más mandos a distancia para ejecutar acciones:
https://github.com/victornpb/generic_remote_contro...
Este sketch de arduino proporciona software para coche pantalla de 7-segmentos con multiplexación, ninguÌ n conductor externo requerido en disco 1 o unas pocas pantallas. No hay interrupción del hardware necesaria, ejecución asincrónica:
https://github.com/victornpb/ledDisp
Código de ejemplo de Arduino para manejar un display de 7 segmentos, de una matriz de mapa de bits: