Se
você é geek (nerd) de verdade e adora videogames aposto que já ficou
olhando para o aparelhinho e imaginando como seria criar seu próprio
jogo ou até mesmo seu próprio vídeo game!
Pois é, eu já fiquei imaginando e planejamento até que descobri a biblioteca Arduino-tvout que pode ser baixada em http://code.google.com/p/arduino-tvout/downloads/detail?name=TVoutBeta1.zip&can=2&q= e também há uma cópia em http://www.seucurso.com.br/downloads/TVoutBeta1.zip
O hardware é muito simples e vamos nos preocupar primeiro com ele. Você precisará de:
01 cabo com pelo menos duas vias:
01 conector RCA:
01 resistor de 1k ohm (marro-preto-vermelho) e 01 de 470 ohm (amarelo-violeta-marrom):
Claro, também de um Arduino.
Em uma das vias do cabo solde os dois resistores que será depois conectado ao Arduino:
Solde
a via onde foram soldados os resistores ao pino central do conector RCA
e escolha outra via para ser soldada no pino externo:
Ligue
o resistor de 470 ohm ao pino digital 7, o resistor de 1k ohm ao pino
digital 9 e a via do cabo soldada ao pino externo do conector RCA ao GND
do Arduino:
Agora
vamos ao software. Criei um pequeno exemplo que usam praticamente todas
as funções da biblioteca como linha, círculo e etc. você pode encontrar
muito mais na página do projeto no mesmo link que foi colocado acima
para fazer o download da biblioteca.
Para
podermos importar a biblioteca descompacte o arquivo baixado e copie a
pasta TVout para pasta libraries do seu ambiente de programação Arduino:
Abra
seu ambiente de programação Arduino e antes de começarmos o exemplo
importe a biblioteca TVout clicando no menu Sketch, selecione a opção
Import Library... e clique sobre TVout:
Você terá as duas linhas abaixo adicionadas automaticamente:
#include#includeTVout TV;void setup() {pinMode(13,OUTPUT);digitalWrite(13,LOW);TV.begin(NTSC,72,56); delay(1000);TV.draw_line(0,0,10,10,WHITE);TV.draw_rect(0,0,71,55,WHITE,BLACK); TV.draw_circle(36,28,10,WHITE);TV.shift(1,UP);TV.set_pixel(36,28,WHITE); delay(15000); } void loop() { delay(1000);}
Como você pode ver, não espere grande resolução!
Com:
TV.begin(NTSC,72,56);
Inicializamos
a função de vídeo no formato NTSC, também há o formato PAL. Os valores
seguintes são a resolução horizontal e vertical.
Você pode ainda verificar o valor retornado pela função begin:
0 – inicialização normal
1 – resolução horizontal não é múltiplo de 8
2 – resolução vertical não é múltiplo de 8
4 – não há memória suficiente
TV.draw_rect(0,0,71,55,WHITE,BLACK);
Desenha um retângulo com início nas coordenadas 0,0 e final nas coordenadas 71,55
As cores também não são muito ricas, você tem a opção de:
BLACK = 0 = preto
WHITE = 1 = branco
INVERT = 2 = invertido
Desenha uma linha na cor branca com início nas coordenadas 0,0 e final nas coordenadas 10,10
Desenha um círculo com centro nas coordenadas 36,28 e raio 10 na cor branca.
Seta um pixel na tela nas coordenadas 36,28 na cor branca.
Movimenta toda a tela 1 pixel por vez na direção de subida, as direções podem ser:
UP = 0 = para cima
DOWN = 1 = para baixo
LEFT = 2 = para a esquerda
RIGHT = 3 = para a direita
Há
também funções para escrever na tela, mas tive problemas de sincronismo
com a TV ao usá-las, mas não é nada difícil desenhar as letras e
números para escrever na tela, pixel-a-pixel.
Fazer animações também não é nada difícil, não apenas usando a função shift.
Bom,
a partir disso é fácil usar a imaginação e um pouco de conhecimento em
eletrônica e Arduino para criar seu próprio console. Uma sugestão é
espelhar-se no PONG (http://pt.wikipedia.org/wiki/Pong).
0 comentários:
Postar um comentário