Estoy haciendo un globo LED POV RGB que reproduce animaciones en su superficie. Actualmente estoy usando un Arduino Mega 2560 con 256k de memoria flash. Mi programa y el gestor de arranque ocupan 20k de memoria, dejándome con 236k.
Hay 64 LED RGB que usan 8 bits de brillo que cambian de color 64 veces por revolución. $\left( 64 \cdot 64 \cdot 3 \cdot 8 \right) \div 1024 = 12\mbox{ kB}$ == 12288 BYTES
Cada cuadro de animación ocupa 12288 BYTES (12k) de memoria. Eso solo me deja con 19 fotogramas de animación. Bueno, pero no excelente, a 10 cuadros por segundo, eso es solo 2 segundos de animaciones. Esperaba ~64 fotogramas de animación o 768k de RAM. (768+20=788k totales)
He probado algunos métodos de carga "sobre la marcha" y vapor (SD, inalámbrico), pero no pueden mantenerse al día con los datos requeridos mientras transmiten los datos a los LED. A continuación, intentaré usar un método de compresión simple, pero no tengo muchas esperanzas de que el sistema pueda descomprimir los datos mientras transmite la información de color a los LED.
Actualmente he probado 10 fotogramas de animación con el Arduino Mega 2560 y funciona. Algo así, todavía hay algunos errores. Pero realmente no quiero apagar una placa Arduino si puedo evitarlo.
Mis preguntas son:
Gracias por tu tiempo.
Editar: estoy usando la palabra clave "PROGMEM" para almacenar mis animaciones en la memoria Flash, no en la SRAM. http://www.arduino.cc/playground/Learning/Memoria
Intente usar un chip SRAM I2C.
Tal vez un N256S0830HDA de 256 kbit a 3 V de AMI se ajuste a la factura: http://www.modtronix.com/products/components/ram/n256s0830hda.pdf
Ver http://arduino_related.livejournal.com/1414.html para un tutorial.
La compresión de datos puede ser una opción. Probablemente no NECESITE todas las iteraciones del conjunto de datos 255/255/255. Incluso quedarse con 256 colores sería más que suficiente para lo que está tratando de hacer.
Luego, cada LED solo necesita 1 byte de información para almacenar su configuración de brillo, lo que aumenta la cantidad de fotogramas disponibles a 57, lo que estaría bastante cerca de los 64 que estaba buscando.
Si quedan suficientes pines de E/S, puede intentar conectar el chip SRAM y controlarlo manualmente. Puede intentar usar pestillos adicionales para almacenar la dirección, para reutilizar el mismo conjunto de pines para los buses de datos y direcciones (por ejemplo, los sistemas basados en MCS-51 solían usar 74HCT373 para bloquear la parte inferior del bus de direcciones, consulte aquí ) . Este enfoque debería permitir transferencias de datos más rápidas en comparación con los chips SRAM I2C.
Tenga en cuenta que la memoria del tamaño que necesita probablemente vendrá en un paquete TSOP o similar.
Realmente no puedes expandir la RAM direccionable; el chip tiene todo lo que tiene adentro y no presenta un bus de memoria afuera. Puede agregar un escudo SD como este y usarlo como un disco de estado sólido, como lo está haciendo ahora con el flash integrado.
Algunas personas usan varios Arduinos (u otro procesador), cada uno de los cuales ejecuta una pequeña sección de una pantalla LED.
Por ejemplo, tal vez podría usar 8 Arduinos, cada uno responsable de 8 LED RGB de su total de 64 LED RGB. (Aunque funcionarían más Arduino Megas, esto también abre la opción de usar Arduinos más pequeños, livianos y de menor costo, como el Arduino Pro Mini, que tiene muchos menos pines que el Arduino Mega).
Esto le permite ampliar su pantalla a cualquier cantidad de LED, mucho más de lo que Arduino podría manejar.
kevin vermeer
kevin vermeer
Steven Smethurst
kevin vermeer
$
signos para invocar el formato LaTeX. Sin embargo, me falta el punto en el que necesita multiplicar por tres. ¿Tiene 8 bits para cada color de los LED RGB?Steven Smethurst
posipiet
davidcary