Paso 8: El código
Quizás la parte más larga y más difícil de la construcción entera. La impresión 3D puede me han llevado 3 meses para diseñar, pero el código ha sido un trabajo en progreso durante 6 meses. Sobre todo porque yo soy un noob, sino también porque tenía que utilizar un montón de "trucos" para conseguir el Abalorio para animar el ojo.
Ver, Arduinos no son realmente adecuados para animaciones, especialmente las animaciones que son tan grandes como este. Seguro que puede funcionar un pequeño mapa de bits, pero lo más probable es que a comer una gran cantidad de memoria del sistema y el bosquejo se convierte esencialmente en un uno-trick-pony. Así que tuve que consultar muchas fuentes no sólo obtener el Abalorio para animar, sino también adaptarse al bosquejo en el microcontrolador con más espacio para otras funciones. Sin embargo, lo hice con mucha ayuda. A continuación se enumeran sitios/blogs que consulté y prestado de, los que usé en el bosquejo se acreditan dentro del código:
- https://Learn.Adafruit.com/Adafruit-GFX-Graphics-l...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- http://andybrown.me.uk/2012/06/04/Nokia-QVGA-TFT-l...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://Learn.Adafruit.com/1-8-TFT-display/displa...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://Learn.Adafruit.com/2-2-TFT-display/Graphi...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- http://matthewcmcmillan.blogspot.com/2014/01/ARDU...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- http://www.stm32duino.com/viewtopic.php?t=410
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://github.com/stravant/CMPUT296_Assignment3/...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://HackADay.IO/Project/6038-pdqgfx-optimzed-...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://github.com/XarkLabs/PDQ_GFX_Libs
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://Learn.Adafruit.com/2-8-TFT-Touch-Shield/c...
- https://github.com/Adafruit/Adafruit_ILI9340/BLOB/...
- https://Forum.pjrc.com/threads/26305-Highly-Optim...
Umm, sí, estaba ocupado.
Así que lo que usted ve aquí es una evolución de entendimiento mientras está parado sobre los hombros de muchas personas que realmente saben lo que están haciendo. De ahí que mi código sea un poco sin pulir y voluminosos, pero funciona. Puede acceder a través de mi enlace de github:
https://github.com/zymurgeneticist/Eye_of_Agamotto
Cargar el código en el archivo .ino en el enlace anterior en su baratija 5V Pro (cualquier otro microcontrolador deberá compensarse en el código). Asegúrese de leer primero sobre Cómo utilizar el gestor de arranque de baratija . No podrás ejecutar el sketch y ver las animaciones hasta montar todo en el paso siguiente.
El truco era manejar la mayor parte de la "animación" con una función poco que permite el controlador de ILI9340 en la pantalla. Cuando el ojo mira hacia adelante y hacia atrás a lo largo del eje x (realmente el eje y, puesto que la pantalla está destinada a ser vertical) la imagen no es realmente ser animada, realmente es desplazamiento, como lo haría con texto. Esto permite que el microcontrolador y la pantalla a la ardua y laboriosa carga del mapa de bits sólo una vez (hecho con el contraluz apagado para que no puede ver), toda otra animación en esta visión se logra por "desplazamiento" hacia arriba y hacia abajo (o izquierda y derecha en nuestro caso).