Para hacer las pruebas con colores estoy utilizando un viejo monitor 1084S de Commodore que cuenta con entradas por componentes. Concretamente utilizaré el DIN de 6 pìns que consta de 3 pins para el color en RGB, dos pins de sincronía (vertical y horizontal) y otro pin de tierra.
Navegando por la red encontré el código de Alastair Parker, un sencillo
Pong en Arduino con toda la programación dentro del mismo sketch, sin utilizar ninguna librería. Buscando un poco más encontré un ejemplo en
Daily Duino hecho por un tal Phizone a partir del código del Pong. El ejemplo en cuestión simplemente pinta unas letras en la pantalla. Descargué el código, lo cargué en un Arduino Nano, conecté las resistencias y el monitor por entrada de video compuesto y funcionó.
Luego me dije ¿Y si pruebo de utilizar la entrada RGB conectando la salida de video de Arduino con uno de los componentes y la salida de sincronía con alguno de los pins de sincronía? No esperaba ver colores, pero si lo deseaba y pasó, los elementos blancos de pantalla se veían del color del pin utilizado.
|
Esquema de Daily Duino |
|
Resultado en el monitor |
|
Esquema rojo |
|
Resultado en el monitor |
|
Esquema verde |
|
Resultado en el monitor |
|
Esquema azul |
|
Resultado en el monitor |
El próximo paso fue crear 3 salidas de video y pintarlas a la vez en el puerto correspondiente. Además de intentar conseguir más resolución disminuyendo el tamaño del pixel. Para esto último había que conseguir delays más pequeños que el mínimo que ofrece Arduino (1 microsegundo). Esto se consigue con una instrucción de ensamblador llamada "nop" (
no operation performed) que espera un ciclo de reloj sin hacer nada. Si Arduino utiliza un cristal de cuarzo de 16MHz, podemos calcular el tiempo de delay que representa un "nop" de la siguiente forma:
nop = 1 ciclo = 1/16 us = 62.5 ns
Así que tras probar varias combinaciones llegué a la conclusión de que
con 6 nop's detrás de cada pixel podía llegar a pintar 84 columnas. Y
ajustando el tiempo de delay vertical con 470 us después de cada fotograma,
podía pintar 60 filas.
Aquí está el resultado:
|
Esquema RGB |
|
Barras en el monitor con una inscripción en negro |
Podeis descargar el código de la prueba de color RGB de 3 bits
aquí.
No hay comentarios:
Publicar un comentario