INTRODUÇÃO
Sejam bem vindos ao blog Arduinovação, este é nosso primeiro post e vamos falar da biblioteca TVout, a qual tem o objetivo de gerar caracteres na tela de um televisor via arduino. Os créditos de desenvolvimento da biblioteca são para Myles Metzer.
Com a biblioteca TVout podemos escrever e desenhar na tela de um televisor e emitir sons usando para isso uma placa arduino e conectando-a através das entradas de áudio e vídeo do televisor por um cabo RCA.
A seguinte tabela mostra os pinos que serão usados de acordo com o arduino escolhido.
A imagem abaixo ilustra o diagrama de ligação entre o arduino e o televisor.
Segue abaixo os diagramas para arduinos Uno e Mega respectivamente.
Funções disponíveis na biblioteca:
- begin(mode) Inicia com resolução de tela padrão com 128 colunas e 96 linhas.
- begin(mode, x, y) O programador especifica a resolução.
- end() Limpa os dados de vídeo e desativa as interrupções.
- force_vscale(sfactor) Força o número de vezes que a linha será exibida.
- force_outstart(time) Força a saída de uma linha ativa.
- force_linestart(line) Força a saída de uma linha.
- set_vbi_hook(func) Define a função chamada uma vez por período de supressão vertical.
- set_hbi_hook(func) Define a função chamada uma vez por período de supressão horizontal.
- hres() Retorna a resolução horizontal.
- vres() Retorna a resolução vertical.
- char_line() Retorna o número de caracteres que se encaixam em uma linha de texto.
- set_pixel(x, y, color) Define um pixel.
- get_pixel(x, y) Obtém um pixel.
- fill(color) Preenche a tela com uma cor, preto ou branco.
- clear_screen() Limpa a tela.
- invert() Inverte os dados na tela.
- shift(distance, direction) Desloca a tela uma determinada distância em qualquer direção.
- draw_line(x0, y0, x1, y1, color) Desenha uma linha de x0, y0 até x1, y1 informando sua cor.
- draw_row(row, x0, x1, color) Desenha uma linha de x0 até x1 informando sua cor.
- draw_column(column, y0, y1, color) Desenha uma coluna de y0 até y1 informando sua cor.
- draw_rect(x, y, w, h, color, fillcolor) Desenha um retângulo em x0, y0 até w, h informando sua cor.
- draw_rect(x, y, w, h, color) Desenha um retângulo em x0, y0 até w, h.
- draw_circle(x, y, radius, color, fillcolor) Desenha um círculo com o raio, cor e preenchimento.
- draw_circle(x, y, radius, color) Desenha um círculo com raio e cor.
- bitmap(x, y, bmp, i, width, height) Desenha um bitmap na coordenada x, y.
- print_char(x, y, c) Imprime um caractere na coordenada x, y.
- set_cursor(x, y) Define a posição que o próximo caractere será impresso.
- select_font(font) Define o tamanho da fonte a ser impressa.
- print(x, y, text) Imprime uma letra, palavra ou texto sem quebra de linha na coordenada x, y.
- println(x, y, text) Imprime uma letra, palavra ou texto com quebra de linha na coordenada x, y.
- printPGM() Imprime a partir da memória de programa.
- tone(frequency) Reproduz um som na frequência informada.
- tone(frequency, duration) Reproduz um som na frequência e duração (ms) informadas.
- noTone() Para todos os sons.
Vejamos alguns exemplos, este código escreve na tela do televisor:
Podemos também criar desenhos, animações, sons, etc com TVout:
#include <TVout.h> #include <fontALL.h> TVout TV; // Define largura (qtd colunas) e altura (qtd linhas) da tela byte largura = 120; byte altura = 96; void setup() { // Inicializa no sistema PAL de tv TV.begin(_PAL, largura, altura); // Define o tamanho da fonte TV.select_font(font6x8); } void loop() { // Limpa a tela TV.clear_screen(); // Desenha o retângulo da bandeira TV.draw_rect(0, 0, largura - 1, altura - 1, WHITE); // Desenha o losango da bandeira TV.draw_line(0, altura / 2, largura / 2, 0, WHITE); TV.draw_line(0, altura / 2, largura / 2, altura, WHITE); TV.draw_line(largura / 2, 0, largura, altura / 2, WHITE); TV.draw_line(largura / 2, altura, largura, altura / 2, WHITE); // Desenha o círculo da bandeira TV.draw_circle(largura / 2, altura / 2, 25, WHITE); // Imprime BRASIL no centro do círculo da bandeira TV.print(43, 45, "BRASIL"); // Atraso para evitar intermitência da tela delay(25); } |
LINKS ÚTEIS
http://playground.arduino.cc/Main/TVout
CÓDIGO FONTE
Escrevendo texto com TVout http://www.dropbox.com/s/u9jx9tq44phxsw2/Arduinovacao%20Texto%20TVout%20Post1.ino?dl=0
Criando gráficos com TVout https://www.dropbox.com/s/0k7p6f8knwpzcyp/Arduinovacao%20TVout%20Bandeira%20Brasil%20Post1.ino?dl=0
Biblioteca TVout - Link 1 https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/arduino-tvout/TVoutBeta1.zip
Biblioteca TVout - Link 2 https://github.com/Avamander/arduino-tvout
Legal...eu preciso fazer um projeto com Arduíno... Acender e apagar uma lâmpada...
ResponderExcluirQual Arduíno uso..?
A alguma coisa além do Arduíno e a programação... Valeu
Qualquer placa arduino pode ser usada para isso!
ExcluirHaaaaaaa...esqueci ..
ResponderExcluirÉ com comando de voz..kkkkkkkkkk...valeuuu
Em breve teremos material sobre comando de voz com arduino!
ExcluirTem algum material sobre uso de arduino como inversor de tensão? E porque as portas do uno e mega precisam ser diferentes? De qualquer forma ficou ótimo a explicação vlw
ResponderExcluirNo momento não tenho material sobre inversor de tensão com arduino, mas deixarei em minha lista de ideias para o blog, obrigado!
ExcluirSobre as portas serem diferentes para UNO e MEGA, é porque o desenvolvedor da biblioteca TVout definiu isso internamente no código da mesma.
Muito bom o conteudo. Vai me ajudar muito nos projetos da faculdade😄👍
ResponderExcluirObrigado!!!
ExcluirMuito bom o material do blog. Parabens 😄👍
ResponderExcluirObrigado!!!
ExcluirParabéns pelo blog, muito úteis as informações. Os exemplos originais da biblioteca TVOut não tinham funcionado para mim, mas os exemplos aqui do blog funcionaram.
ResponderExcluirBoa tarde colega, poderia me passar uma dica, preciso printar na tela do TV.out o valor de uma variavel, como por exemplo de um contador, a variavel K=501 , TV.print(20,45,K);
ResponderExcluirEste comentário foi removido pelo autor.
ExcluirBom dia, pq a imagem fica preto e branco? Existe alguma lib pra arduíno com RCA que permita imagens coloridas?
ResponderExcluir