Mostrar imágenes con c ++ y atmega 328

2

Quiero hacer un programa que muestre imágenes en color (eventualmente también video con sonido) en una pequeña pantalla lcd en color, quiero usar un chip atmega 328 con una tarjeta SD para almacenar las imágenes. Cualquier ayuda que me apunte en la dirección correcta sería muy apreciada.

    
pregunta Cjueden

2 respuestas

1

Sin más detalles, es imposible dar una respuesta específica, así que aquí hay algunas cosas generales:

Si desea visualizar video en color (por ejemplo, ~ 24 cuadros o más por segundo), necesitará un poco más de potencia de procesamiento de la que puede proporcionar la mayoría de los uC de 8 bits.

Para dar un ejemplo, supongamos que tiene una pequeña pantalla TFT de 240 x 320 colores con un color de hasta 18 bits. El color de 18 bits da 2 ^ 18 = 262144 colores posibles.

Necesitará al menos una pantalla de RAM para la memoria de pantalla.
Para mostrar una pantalla completa se necesitarán 240 x 320 x 18 = 1382400 bits (1.38Mbit o 172.8KByte) de RAM.
Si tiene una velocidad de cuadros, por ejemplo, 25 cuadros por segundo, tiene un rendimiento de datos de 1.38Mbit x 25 = 34.56Mbit o 4.32MB por segundo.

Por supuesto, no tienes que usar la información completa de 18 bits de color, por lo que puedes llegar a, por ejemplo. 240 x 320 x 8 = 614400 bits por fotograma con 256 colores (~ 15.3 Mbit para 25 fps)

Para blanco y negro solo necesita 1 bit por píxel, por lo que obtiene 240 x 320 x 1 = 76800 bits o 9.6KB por fotograma. El rendimiento a 25 fps sería 240 x 320 x 25 = 240 KB por segundo.

Por lo tanto, a menos que solo desee imágenes estáticas (o que cambien lentamente), le aconsejaría que busque una uC de 32 bits como una PIC32 o una ARM de algún tipo. Los circuitos integrados del controlador de pantalla que controlan las pantallas (es decir, con lo que habla la unidad uC) por lo general tienen al menos un valor de fotogramas de memoria, a veces más, por lo que puede trabajar con RAM limitada si baraja las cosas un poco, pero en general la idea es usted. realice los cambios en la memoria RAM de uC y luego actualice la pantalla completa a la velocidad de fotogramas especificada.

Microchip tiene unos pocos TFTV cartel en línea y una pila de Gráficos para ayudar con el desarrollo, aunque no apostaría por nada menos que los PIC32 de gama alta para conducirlos.
Dependiendo de sus requisitos de resolución / color / sonido, una ARM más capaz podría ser mejor, van desde 40MHz hasta GHz, por lo que hay muchas opciones: las opciones de desarrollo generalmente no son tan amigables con el presupuesto. Un chip excelente es el STM32F4, echa un vistazo al
STM32F4 Discovery board , tiene todo lo que necesita para comenzar a usarlo por £ 10 (sí, realmente). Para esto, obtiene una uC de 168MHz con 1MB de Flash, 192KB de RAM y más periféricos de los que puede sacudir un stick. Además, en la placa hay un acelerómetro MEMS y micrófono, códec y toma para auriculares y programador STLINK2 (se puede usar para programar otros chips ST) incluidos.

En el lado negativo, el desarrollo no es tan amigable como, por ejemplo, Microchip o Atmel: no proporcionan un IDE y la documentación deja mucho que desear.

Vídeo aleatorio de STM32F1 jugando QVGA

    
respondido por el Oli Glaser
0

Me suena como que deberías pensar mucho en desarrollar tu aplicación en un Arduino como un comienzo, ya que está construido en el ATMega328.

Hay varias bibliotecas y tutoriales por ahí para la conducción de pantallas LCD gráficas. Del mismo modo, las bibliotecas principales de Arduino incluyen controladores de tarjeta SD . Y una vez que esté listo para ello, hay Shields y controladores para generar audio también.

Una vez que haya creado un prototipo con Arduino y escudos, puede obtener los artefactos compilados (por ejemplo, archivos hex / elf) de la compilación Arduino y usarlos en su propio diseño integrado.

Bajo las cubiertas, el software Arduino es solo C ++ construido con avr-libc / avr-gcc.

    
respondido por el vicatcu

Lea otras preguntas en las etiquetas