Olá a todos.

Estava pensando em adquirir uma tela LCD para um projeto que estou desenvolvendo, entretanto, vi que várias pessoas já comentaram sobre a possibilidade de ligar o arduino na televisão, e isso seria muito interessante para mim.

O que pretendo exibir na televisão? frases pequenas e números (para produzir um menu) e um "relógio". Pode ser tudo em preto e branco.

Vi estes links:

1 - http://labdegaragem.com/profiles/blogs/gerando-sinal-vga-colori...

2 - http://labdegaragem.com/forum/topics/arduino-na-tv-via-rca (que o link não funciona mais)

3 - https://create.arduino.cc/projecthub/paulscott56/arduino-tv-out... (que, aparentemente, foi o mais próximo do que eu quero. ,as é só adicionar um serial.begin(9600) ou serial print, que o trem para de funcionar)

4 - https://code.google.com/archive/p/arduino-tvout/downloads (que, pessoalmente, não entendi o motivo de não ter o ".ino" na pasta, e do ide do arduino não reconhecer, e PARECE ser o mesmo que o "3".

Vi outros sites e vídeos, entretanto, a maioria sempre trabalhando com imagem colorida, e para isso, era necessário alterar o time0. Que, por sua vez, gera um problema no millis().

No final: Alguém conhece alguma forma de exibir frases e números (ao menos 4 ou 5 linhas), em preto e branco, usando RCA, VGA ou HDMI, e mantendo a função do millis() e, possibilidade de usar a serial e talvez, tone()?

Exibições: 3231

Responder esta

Respostas a este tópico

Olá Tiago,

É que lá no início da postagem você fala "...comentaram sobre a possibilidade de ligar o arduino na televisão, e isso seria muito interessante para mim...", então pensei que você se referia a gerar imagens utilizando uma placa Arduino.

Bom, se você for usar o Bluepill, que tem mais SRAM e FLASH, aí existe a biblioteca TTVout, em conjunto com a TNTSC. O funcionamento fica o mesmo da TVout, mas só que funcionando no Bluepill.
E é claro, consegue uma resolução bem maior.

Obrigado pela sugestão Etienne Leite. Entretanto estou evitando fazer a aquisição de qualquer outro novo controlador. Fixei no Esp32 para concluir este projeto. Caso contrário, eu não vou terminar nunca. Pois surge sempre uma nova ideia para implementar. e já já o raspbarry se tornaria necessário.

Mas, novamente, agradeço a sugestão.

Tem a Biblioteca TTVout para STM32F103, se interessar.

 Rodrigo Corbera

Fiz alguns comparativos utilizando diferentes televisores. Primeiro utilizando a Lib "Color Pal" do Bitluni (https://bitluni.net/esp32-color-pal)

Televisão Antiiiiiiiiiga que nem sei a ref:

https://www.youtube.com/watch?v=ah4DPMvzedc

- Aqui apenas preto e branco

Monitor de notebook com uma placa da china.

ESP32 Alimentado pela USB: https://youtu.be/9S590uHQ2wM

- Observe o chiado na televisão

Esp32 Alimentado com LM2596: https://www.youtube.com/watch?v=YEa16cvWZao

- Observe que a quantidade de chiado diminuiu.

Televisão da Philips, 720p, que já tem uns 10anos+. Deve ser LCD.

obs- a tv tem problema mesmo.

https://youtu.be/FLfZehfbgRg

- Chiado menor

TV de LED (esse modelo não é tão velho comparado aos outros)

https://youtu.be/RkxDImz-pns

- Pouco chiado, ou quase nenhum,

Não sei se a chiadeira é por conta dos cabos, pois tiveram umas "adaptações" (Esp32 -> Protoboard -> jumper macho/macho -> jacaré/jacaré -> 2 fios/RCA Femea -> RCA Macho/Macho -> TV)

Legal Tiago, bons testes.

Este é o vídeo original do Bitluni: https://www.youtube.com/watch?v=-JXuwwXQh8c

Observe as cores mostradas no mapa, logo no início do vídeo e a partir dos 42 segundos.

O mapa completo é mostrado aos 5:53 no vídeo.

Verifique se há problemas com com cores vermelhas e amarelas que não são corretamente traduzidas na TV.

No mapa na parte sul da América do Sul, deveria ser visível algo meio amarelado ou ocre.

Na parte da Amazônia, mais para o lado da Colômbia, deveria haver alguma parte meio que verde.

No seu teste final, parece que as cores aparecem bem. Nos outros fica difícil ver pela filmagem.

A cor que melhor funciona é o Azul, que é grande parte do globo (oceano).  Pelo youtube é difícil ver esses detalhes de cores... imagino que você tenha que ver aí ao vivo.

Tem um jogo do Bitluni que mostra naves com vermelho, explosões em amarelo e a nave do jogador em uma combinação de azul com detalhes em vermelho... poderia ser um outro teste.

Os meus teste mostraram problemas com cores em algumas TVs. Quase todas mostram a imagem, nem que seja em preto e branco, mas as cores eram mostradas erradas. Testei em muitas TVs LGE e Samsung que são bastante usadas no Brasil. Tudo realmente varia com a marca de TV. Com TV de marcas europeias, parecia bem, mas com Asiáticas dependia do modelo e com brasileiras tinha muita dificuldade (CCE e OKI).

Link do jogo: https://github.com/bitluni/ESP32SpaceShooter

Depois conta aqui como foram seus testes!

Abraços!

Olá Tiago,

Vi que no exemplo do Bitluni, a Africa aparece super bem colorida com verde e marrom por todo o lado. A Austrália aparece bem avermelhada com tons de marrom.

Para fazer um teste melhor para as várias TVs, criei, abaixo, um código que mostra várias cores.

Esse código deve substituir o loop() no mesmo DawnOfAV.ino:

#if 0    // para executar o código original do Bitluni basta fazer "#if 1" e para teste de cores "#if 0"

void loo() {

..... código original do Bitluni ....

}

#else

void loop() {   // mero teste de cores na TV, vai mostrar 256 cores entre tons diferentes.

  //fill audio buffer
  audioSystem.calcSamples();


  graphics.begin(0);


  // mostra as 256 cores na tela...
  graphics.fillRect(0,0,320,240,graphics.rgb(0, 0, 0));
  for ( uint8_t i = 0; i < 16; i++)
    for ( uint8_t j = 0; j < 16; j++) {
      uint16_t x, y;
      uint8_t c;
      x = j*20;
      y = i*13+20;
      if (i < 8) c = i*2*16+j;
      else c = (i*2-15)*16+j;
      graphics.fillRect(x, y, 15, 11, graphics.rgb(c&0xE0, (c&0x1C)3, (c&0x3)6)); // x, y, w, h, color
    }

 graphics.end();

}

#endif

O resultado deveria ser algo como a imagem abaixo:

Opa Rodrigo!

Testei seu código rapidinho aqui, entretanto da erro na compilação.

obs- deveria existir um [code] e [spoiler] aqui no fórum.

//===================================

...In function 'void loop()':

DawnOfAV:104:72: error: expected ')' before numeric constant

graphics.fillRect(x, y, 15, 11, graphics.rgb(c & 0xE0, (c & 0x1C)3, (c & 0x3)6)); // x, y, w, h, color

^

DawnOfAV:104:84: error: expected ')' before numeric constant

graphics.fillRect(x, y, 15, 11, graphics.rgb(c & 0xE0, (c & 0x1C)3, (c & 0x3)6)); // x, y, w, h, color

^

exit status 1
expected ')' before numeric constant

Não sei qual a importancia do "3" e do "6" depois do parênteses, removi, compilei e o resultado foi esse: 

graphics.fillRect(x, y, 15, 11, graphics.rgb(c & 0xE0, (c & 0x1C), (c & 0x3)));

 

Devido a diferença da imagem entre o monitor e a foto, vale alguma observação.

O vermelho das linhas 6 e 7, dos 2 blocos (pois no centro é cinza escuro) possuem um tom muito SIMILAR ao (255,0,0) deste link. https://www.w3schools.com/colors/colors_rgb.asp.

Na sequência fiz umas mudanças rápidas e obtive resultados diferentes:

graphics.fillRect(x, y, 15, 11, graphics.rgb(c & 0xE0, (c & 0x1C), (c & 0x36)));

1º, 2º, 3º, 8º (cinzal), 9º(azul), 10º, 11º e 13º linha, NA FOTO estão fieis ao apresentado no monitor, as demais, são cores mais fortes (como no caso anterior)

graphics.fillRect(x, y, 15, 11, graphics.rgb(c & 0xE0, (c & 0x1C3), (c & 0x3)))

O primeiro bloco (linha 1 á 7, pois a 8º agora é um preto total) é levemente mais brilhosa que o segundo bloco. Descrevo o amarelo praticamente como um (255,255,0). Tirando a intensidade do amarelo (que está mais fraca na foto), é possível ter uma boa ideia da configuração.

graphics.fillRect(x, y, 15, 11, graphics.rgb(c & 0xE0, (c & 0x1C3), (c & 0x36)))

Tirando o amarelo já citado (que na foto ela está meio... "fosca", a única observação desta foto é que o "roxo" de cima é, na verdade, idêntico ao roxo de baixo.

Pensei em testar em outros televisores, mas acredito que o resultado seria o mesmo.

Não realizei nenhum outro teste, AGORA (03:15am), além do citado, pois não manjo de hexa e o sono bateu forte kkkkkk. (mas ao acordar irei olhar o significado)

De qualquer forma, espero ter sido capaz de facilitar mais o caminho para acharmos uma solução.

Olá Tiago,

O erro de compilação aconteceu pois ao colar o código aqui no fórum, o editor simplesmente remove o simbolo "duplo <" depois de clicar em "Adicionar resposta"....

de fato falta um modo <code> ou algo assim no editor de posts.

Já tive esse problema antes em outro post....


Mas vamos ao fato, o código correto da linha que deu erro está na imagem abaixo:

Olá rodrigo. Teste realizado, segue a imagem:

obs- devido ao modo de captura (fotografia), vale lembrar que as cores são levemente mais "fortes" (pois na imagem fica um pouco "fosca")

(monitor de notebook, lcd, com placa da china)

na prática, ela fica com o tom levemente mais forte/escuro.

TV Led (LG)

na prática, ela fica com o tom levemente mais fraco/claro.

A título de curiosidade, na tela de LED, por ser maior, pude observar um leve bug. https://youtu.be/tywMY7IJjQ4

De qualquer forma, talvez possa ser até problema na gambiarra adaptação do cabo.

LCD Phillips

Muito bom, no geral as cores são essas mesmas.

Normalmente não se veria muito salto de tons na vertical e tudo pareceria meio que com variação uniforme como em um "arco-íris".

Acho que em geral está funcionando bem nessas TVs.

O leve bug não tem relação com as ligações ou "gambiarras" das conexões, mas sim com a forma como a codificação das cores e sinais é feita na biblioteca do Bitluni.

Não é um sistema perfeito, portanto ocorrem os chamados "artefatos visuais"  que são falhas quando uma linha muda para outra ou mesmo quando uma cor muda para outra na linha horizontal.

Não há muito o que fazer pois é parte da codificação de sinal usada pelo sistema PAL e parte pelas limitações de velocidade de sinal gerado pelo ESP32.

E pior, é meio que aleatório, ou seja não dá pra prever, portanto só testando no fim o seu programa mesmo é que vai poder ver se algo assim aparece ou não.

Para ter uma imagem perfeita mesmo, somente usando o sistema digital de imagens, seja por meio do HDMI ou do VGA. É possível usar VGA em conjunto com um conversor VGA para HDMI e assim ter imagens perfeitas para qualquer TV mais moderna.

Agora é só você seguir em frente com seu projeto e concluir!

Boa sorte!

Abaixo uma imagem típica mostrando à esquerda uma imagem VGA (digital) e à direita uma imagem de Vídeo Composto com NTSC (poderia ser o mesmo efeito com PAL).

O que observamos é que quanto mais perto os Pixels ficam uns dos outros e mais variamos a cor entre eles, aparecem erros na imagem devido a falhas na interpretação das cores por parte da TV. A TV com Vídeo Composto é boa para imagens mais dinâmicas, e sem detalhes ou definição.

Abaixo fica fácil ver os artefatos visuais gerados na tela com vídeo composto.

Já VGA ou HDMI são feitos para imagens com boa definição e detalhes, com pixels de cores perfeitas e super nítidos.

Muito interessante Rodrigo Corbera

Resolvi desenvolver um pouco a interface da coisa, e tudo estava aceitável, até que resolvi adicionar letras.

Fundo preto e palavra com letra branca, já começa a misturar amarelo, verde e roxo, não era 100%, mas devido a situação dava pra levar. Entretanto, ao adicionar uma palavra com uma única cor (vermelho, por exemplo), o caos se instalou.

Mas, pensei que o problema pudesse esta entre a bancada e a cadeira.

Então resolvi da uma revisada nas suas postagens e vi a imagem do comparativo. Percebo que, TALVEZ, o número de problemas que eu venha a enfrentar com o RCA, seja suficiente para considerar o VGA (que era minha segunda opção).

O Bitluni ainda possui 2 versões, uma de 3 bits (que testei rapidinho, mas a limitação de cor pode vim a se tornar um problema - coisa que não era problema no rca, aparentemente-) e outra de 14bits. O mais curioso é que a Demo do VGA 14bits, ocupa praticamente o mesmo espaço e processamento que o exemplo RCA preto e branco.

Evidentemente, existe uma diferença enorme no número de pinos utilizados e no número de componentes externos (31 resistores).

De qualquer forma, irei montar tudo, criar umas imagens e retorno a postagem, afinal, futuramente mais pessoas poderão se aproveitar do conteúdo que está sendo discutido aqui.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço