Arduino Mega 2560 como el tablero pero con más ram

3

Estoy haciendo un globo POV RGB LED que reproduce animaciones en su superficie. Actualmente estoy usando un Arduino Mega 2560 con 256k de memoria Flash. Mi programa y el cargador 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 cuadros de animación. Bueno, pero no genial, a 10 cuadros por segundo, eso es solo 2 segundos de animaciones. Esperaba ~ 64 cuadros de animación o 768k RAM. (768 + 20 = 788k en total)

He intentado algunas cargas 'al vuelo' y métodos de vaporización (SD, Wireless) pero no pueden mantenerse al día con los datos requeridos mientras se 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 se difunde la información de color a los LED.

Actualmente, he probado 10 cuadros de animación con Arduino Mega 2560 y funciona. Tipo de, todavía hay algunos errores. Pero realmente no quiero apagar una placa Arduino si puedo evitarlo.

Mis preguntas son:

  1. ¿Hay tableros Arduino prefabricados con más ram?
  2. ¿Puedo agregar RAM a una placa Arduino existente?
  3. Sugiera una placa de Dev diferente que sea MUY similar a Arduino con un compilador de c ++.

Gracias por tu tiempo.

Editar: Estoy utilizando la palabra clave "PROGMEM" para almacenar mis animaciones en la memoria Flash, no en la SRAM. enlace

    
pregunta Steven smethurst

5 respuestas

4

Intente usar un chip SRAM I2C.

Tal vez un N256S0830HDA @ 3V de 256 kbit de AMI se ajuste a la factura: enlace

Consulte enlace para obtener un tutorial.

    
respondido por el posipiet
3

La compresión de datos puede ser una opción. Probablemente no NECESITA todas las iteraciones del conjunto de datos 255/255/255. Incluso seguir con 256 colores sería más que suficiente para lo que estás tratando de hacer.

Entonces, cada LED solo necesita 1 byte de información para almacenar su configuración de brillo, lo que aumenta la cantidad de cuadros disponibles a 57, lo que sería muy similar al 64 que estaba buscando.

    
respondido por el charliehorse55
1

Si quedan suficientes pines de E / S, puede intentar conectar el chip SRAM y controlarlo manualmente. Puede intentar usar latches adicionales para almacenar la dirección, para reutilizar el mismo conjunto de pines para los buses de datos y de 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 es muy probable que venga en un paquete TSOP o similar.

    
respondido por el Code Painters
1

Realmente no puedes expandir la memoria RAM direccionable; el chip tiene todo lo que tiene dentro y no presenta un bus de memoria afuera. Puede agregar un escudo SD como este y usarlo como un disco de estado sólido, tanto como Lo estás haciendo ahora con el flash a bordo.

    
respondido por el JRobert
0

Algunas personas usan varios Arduinos (u otro procesador), cada uno con una pequeña sección de una pantalla LED.

Por ejemplo, quizás podrías usar 8 arduinos, cada uno responsable de 8 LED RGB de su total de 64 LED RGB. (Aunque funcionaría más Arduino Megas, esto también abre la opción de usar Arduinos más pequeños, más livianos y de menor costo, como el Arduino Pro Mini, que tiene muchos menos pines que el Arduino Mega).

Esto te permite escalar tu pantalla a cualquier número de LED, mucho más de lo que Arduino podría manejar.

    
respondido por el davidcary

Lea otras preguntas en las etiquetas