.
Se trata de una librería para crear video compuesto con Arduino. Su utilización es muy sencilla y directa.
Tan sólo necesitas un par de diodos y un par de resistencias!!!!
Para un Diecimila (ATMega328P) los pines son:
- Sync = pin 9, Arduino
- Video = pin 7, Arduino
- GND = masa, Arduino
Veámos un ejemplo sencillo con dos simples pantallas. En la primera se muestra texto con la temperatura recogida con una NTC y adquirida por Arduino en su entrada 5. Después de un delay, se muestra un bitmap (ver el vídeo del resultado al final de esta entrada).
He utilizado la última versión beta disponible en el momento de escribir esta entrada. Existe una función para mostrar imagenes almacenadas en memoria flash. Para crear imagenes, puedes utilizar el software Image2Code (http://sourceforge.net/projects/image2code/files/).
El software permite abrir directamente una imagen y convertirla a un array en C:
Una vez hecho click sobre Convert, se te abrira el editor de textos con el código de la foto. Usa la función
reemplazar para eliminar "{" y "}".
Ahora ya tienes tu imagen preparada para grabarla en tu Arduino. Lo único que falta es crear un array de char donde guardarás dicha imagen. Para ello hay que crear dos archivos, uno *.h donde estará la declaración de la variable y uno *.cpp donde se guardará el array obtenido con Image2Code.
En mi ejemplo, guardaré la imagen creada en un array llamado ok[] .
Empecemos con el *.h, en mi caso le he llamado bitmap.h.
Para el *.cpp, en mi caso bitmap.cpp. (en la tercera línea, se pone el tamaño de la imagen (74x96).
#include "bitmap.h"
PROGMEM const unsigned char ok[] = {
74,96,
//pegar aquí el código obtenido con Image2CodePROGMEM const unsigned char ok[] = {
74,96,
};
Librerías y código:
Código del sketch:
#include <TVout.h> #include <fontALL.h> #include "bitmap.h" TVout TV; int final=8; int mydelay=10; double temperatura=0.0; void setup() { TV.start_render(PAL); TV.clear_screen(); } void loop() { TV.select_font(font4x6); TV.print_str(2,0*8,"Rumbeando con Arduino By IgOrR"); TV.select_font(font8x8); temperatura=analogRead(5)*5.0/1023.0; TV.set_cursor(2,5*8); //Muestro voltage TV.print("Analog 5= "); TV.print(temperatura,2); TV.print("V"); //Muestro grados TV.set_cursor(2,6*8); TV.print("Temp = "); temperatura=-27.025*temperatura + 112.95; TV.print(temperatura,2); for (int i=0;i<3;i++) { for (int i=0;i<final;i++) { TV.print_str(0,9*8," "); TV.print_str(i*6,9*8,"Toma ya!"); TV.delay_frame(mydelay); } for (int i=final;i>0;i--) { TV.print_str(0,9*8," "); TV.print_str(i*6,9*8,"Toma ya!"); TV.delay_frame(mydelay); } } TV.clear_screen(); TV.bitmap(30,0,ok,0,0,0); TV.delay_frame(300); TV.clear_screen(); }
Pongo unas fotos,para que se aprecie mejor la calidad:
Links:
- http://www.rickard.gunee.com/projects/video/pic/howto.php
- http://www.batsocks.co.uk/readme/video_timing.htm
.
.
Con explicaciones asi, es como se aprende.. muchisimas gracias.
ResponderEliminarHola, muy genial tu explicación, pero aún no entiendo como instalar la librería en un mac, me puedes ayudar por favor???
ResponderEliminargracias
Meow!
Hola Meow,
ResponderEliminarTienes que guardar las dos carpetas de la libreria (TVout y TVoutfonts) en donde tienes todas las demas (dentro de la carpeta arduino\libraries\).
Salu2
http://www.arduino.cc/es/Reference/Libraries
ResponderEliminarcuales serian los pines en caso de usar un arduino UNO o un Duemilanove ???
ResponderEliminarlos mismos pines??
enhorabuena por la pagina, voy a tirarme muchas horas leyendo toda la información util. mucha información q he buscado en internet y nunca encontre.
gracias
Hola,
ResponderEliminarEsos pines son para un UNO, Duemilanove, Diecimila....
Solo son diferentes para las placas MEGA.
Saludos
Igor
Hola Igor,
ResponderEliminarYo ya lo he probado y funciona perfectamente, es una pasada.
Hay alguna libreria de fuentes con algo mas de resolución?.
Un saludo..
Que diodos usar? En la original no pone nada de diodos. (Por ejemplo: 1N4148 )
ResponderEliminarYo use unos 1n4148.
ResponderEliminarSalu2
Pudiste encontrar un RCA hembra para PCB (No se como se llama a la perfora o usaste un cable directamente? He leido algo de ponerle una resistencia de 75ohms).
ResponderEliminarPodrías poner un imagen de como te quedo por delante y por detrás, gracias por publicar vuestro conocimientos, normalmente solo publicamos cuando no nos funciona y más documentado como lo hicisteis :)
Use un cable RCA reciclado, del cual ya tienes los conectores. Por el otro extremo solde unos pines, y me hice una pequenya plaquita de prototipos con clemas. A ver si subo una foto...
ResponderEliminarEn que parte usaste los diodos? porque en el esquema solo aparecen 2 resistencias... o me equivoco?
ResponderEliminarIgor,
ResponderEliminarFantastic work! could this be used to create a video overlay?
Thanks in advance
Mark
hola sabes ise todo lo que aparece en las instrucciones pero me dice que hay errores porciacaso uso arduino uno
ResponderEliminarHola, se agradece el artículo!!!
ResponderEliminarLa libería TVout para arduino se puede descargar actualmente utilizando el Gestor de Librerías del IDE Arduino.
Mas info de la librería se puede encontrar en el siguiente link:
https://github.com/fredericplante/arduino-tvout
Entre otras cosas, al final de la página se encuentra un link a la wiki con la explicación del uso de las funciones y de los cambios que hay que realizar en los programas o sketches entre la version vieja Pre-Beta 1.0 y la nueva Beta 1.0.