terça-feira, 27 de outubro de 2015

Projeto #2: Fazendo sua TV se conectar com seu Arduino (e ainda com áudio!)

Voltei galera!
Hoje eu ensino vocês a conectar seu Arduino na sua TV lá da sala, aquela que a sua mãe não deixa nem você conectar seu Play 2 pra jogar GTA.
Enfim, mão na massa!
Do que eu preciso?
Primeiramente, você vai precisar de:
- Dois cabos RCA
- Um Arduino Uno ou qualquer outro que tenha um ATMega328;
- 1 resistor de 1K e 2 resistores de 470 ohms;
e só.
Conectando
Conecte seu duino assim:
Screen Shot 06-25-14 at 10.06 AM
Você deve conectar a parte de fora (a casca) do conector no terra e a parte de dentro nos resistores de 1K e 470 ohms.
No conector de áudio, conecte a parte de dentro no resistor de 470 ohms que sobrou e a parte externa no terra.
Baixe a biblioteca TVout, que possibilita a você fazer essa proeza, nesse endereço aqui.

Programando

A resolução máxima suportada é de 128x96. Mas dá pra você fazer bastante coisa, inclusive mostrar bitmaps!
O Robson Couto, do Dragão sem Chama, mostrou seus próprios bitmaps. E o código que ele usou é esse:

#include 
#include 
#include "met.h"
#include "invader.h"

TVout TV;
void setup() {
  TV.begin(PAL,120,96);
  TV.select_font(font6x8);
  TV.println(0,40,"Arduino e TV com a\nbiblioteca TVout\n");
  TV.delay(2500);
  TV.clear_screen();
  TV.println(0,40,"Desenhando Imagens:");
  TV.delay(1500);
  TV.clear_screen();
  TV.bitmap(18,0,met);
  TV.delay(10000);
  
  for(int i=0;i<90;i--){
  TV.clear_screen();
  TV.bitmap(i,0,invader);
  TV.delay(100);
  }
 
  TV.clear_screen();
  TV.print(9,44,"Dragao sem Chama");
  TV.delay(2000); 
}

void loop() {
}
Os headers "met.h" e "invader.h" podem ser baixados aqui.

Bônus: Como mostrar seus próprios bitmaps

No Paint, redimensione a imagem que você quer mostrar até um tamanho menor que 128x96 e salve como bitmap monocromático.
Baixe o programa Image2Code nesse link aqui.
Abra ele e arraste o bitmap no programa.
Escolha a terceira opção da esquerda para a direita.
Screen Shot 06-24-14 at 11.07 PM
Se você quiser que ele apareça "branco no preto", escolha a opção "Invert image".
Escolha C array writer e clique em "Convert".
O Bloco de notas vai abrir.
Escolha "Editar > Substituir..." e coloque "{" sem as aspas no campo Procurar por. Não coloque nada no campo Substituir por. Clique em Substituir tudo e faça o mesmo com o símbolo "}". Já a última vírgula do arquivo, apague manualmente.
Crie um novo arquivo .cpp com o nome da imagem e com o seguinte código:

#include "<nome-da-imagem>.h"

PROGMEM const unsigned char <nome-da-imagem>[] = {
(cole aqui o código convertido antes)
};
e depois crie um arquivo .h com o nome da imagem na mesma pasta e com o seguinte código:

#include <avr/pgmspace.h>
#ifndef <nome-da-imagem-em-maiusculo>_H
#define <nome-da-imagem-em-maiusculo>_H

extern const unsigned char <nome-da-imagem>[];

#endif
Daí, inclua o header que você criou, assim:
#include "<nome-da-imagem>.h"
Depois inclua o código no meio:
TV.bitmap(<pos_X>,<pos_Y>,<nome-da-imagem>);
E... ta-da! A sua imagem aparece!

Dúvidas? Comente e eu te respondo.
É isso aí! Até mais!

Nenhum comentário:

Postar um comentário