Paso 6: ¿Qué es el código del dispositivo?
El código de dispositivo es largo, pero es similar, la mayor parte del repetido código para los efectos de tiempo específicos incluidos. Aquí le damos las partes básicas:
La clase base de Neopixel, incluida al "exigir" la biblioteca de NeoPixels. Esta clase crea un blob (una estructura de datos, algo así como una matriz pero capaz de ser leído y escrito como una secuencia de archivo) que se utiliza como un búfer de marco. El frame buffer puede ser modificado en cualquier momento y luego escribir a la pantalla. Esta clase tiene tres funciones principales:
- clearFrame: claro el frame buffer (fija los valores para los tres canales de cada píxel de vuelta a cero)
- writePixel: escriba el valor de un píxel en el búfer de marco
- writeFrame: enviar el búfer de fotograma actual a la pantalla
La clase de extensión NeoWeather. Esta clase extiende la clase base, utilizando sus funciones como si fueran sus propia, pero también añadir otros nuevos. La clase NeoWeather incluye nuevos métodos para cada animación distinta. Algunos de estos métodos tienen un parámetro - factor. Este número es un entero de 0 a 9 que controla la "intensidad" de la animación. En los efectos de la lluvia y la nieve, el factor incrementa el número de "gotas" que aparecen en la pantalla. Mira el método de la lluvia si desea profundizar un poco en esta clase o añadir nuevas animaciones de los tuyos.
Instanciar la clase NeoWeather, limpiar el buffer y pixel 0 en rojo completo parece esto:
Por último, es un administrador de agentes con un gran montón de sentencias condicionales. Cuando el agente envía un mensaje de "seteffect" al dispositivo, que llega aquí. Esta función busca palabras clave en el pronóstico del tiempo en orden de prioridad. Si encuentra a una coincidencia, establece el efecto apropiado:
En algunos casos, el pronóstico viene con un modificador (e.g. "Heavy Rain"). El dispositivo busca, también y utiliza para establecer la intensidad del efecto correspondiente:
Por último, echemos un vistazo en el código de agente.