Posts Tagged ‘ LCD ’

Caracteres personalizados

Estava vendo um post do Hack a day que mostrava um relógio num display de texto com os caracteres personalizados.

Cada letra do display de texto, ao menos esses com controlador HD44780 ou similar, é uma pequena matriz de 8 linhas por 5 colunas, sendo que você apenas escolhe o carácter e o controlador preenche a matriz.

Para estilizar os caracteres, você precisa gravar novos na memória volátil do controlador do LCD, sendo que ela tem espaço apenas para 8 (0 a 7 da tabela ASCII, não podem ser impressos). Os outros não podem ser modificados.

A ideia aqui é juntar 3 colunas para formar um número grande. Para isso, é preciso criar os caracteres que vão ser usados para desenhar as partes do número, sendo que precisam ser bem genéricos para que caibam nos 8 espaços da memória.

No caso eu usei 5 caracteres. Os três acima e as versões invertidas dos dois últimos. E criei os números como abaixo:

Para criar cada um dos 5 caracteres estilizados, é preciso enviar ao LCD o formato de cada uma das 8 linhas com números de 0 a 31, onde cada bit acende um ponto da linha. Você pode usar notação binária (por exemplo 0b10101) ou colocar o número decimal correspondente, se achar mais fácil.

Com as bibliotecas do Arduino, pode ser feito algo como:

LiquidCrystal lcd(2, 3, 4, 8, 9, 10, 11);
byte meus_chars[][8] = {{31,31,31,31,31,31,31,31}, 
                        {31,31,0,0,0,0,0,0},   
                        {0,0,0,0,0,0,31,31},
                        {31,31,0,0,0,0,0,31},
                        {31,0,0,0,0,0,31,31}};

for (byte i=0; i<5; i++){
    lcd.createChar(i, meus_chars[i]);
}

//Exemplo de exibição do número 0
lcd.clear();
lcd << '\0' << '\1' << '\0';
lcd.setCursor(0,1);
lcd << '\0' << '\2' << '\0';

Falando nisso, baixe a biblioteca Streaming que faz overload do << para imprimir coisas no LCD ou na Serial.

Abaixo um vídeo dos números no display:
Meu display 16×2 ainda não chegou. Enquanto isso, continuo com esse 8×2.

Projeto com display LCD

Com o advento do Arduino, fazer sistemas caseiros de controle ficou bem mais fácil, pois a IDE desse microcontrolador traz diversas bibliotecas que precisam de pouca configuração para acessar outros hardwares.

No final de semana eu fiz um pequeno projeto onde a hora e temperatura eram apresentadas num display LCD de texto com espaço para 8 caracteres em cada uma das suas duas linhas.

Para medir a temperatura eu usei um termômetro digital da Dallas Semiconductor, o DS18B20, que tem precisão de 0.0625 grau e já vem calibrado de fábrica.

Esse termômetro é um hardware bastante interessante, pois usa um protocolo chamado 1-Wire que permite diversos aparelhos conectados num fio e pode ser alimentado de forma parasita (pelo próprio fio de comunicação). Inclusive eu testei com dois termômetros conectados no mesmo fio e ambos apresentavam sempre a mesma temperatura (com uma diferença de no máximo 0.1 grau).

Basicamente, eles funcionam com um endereçamento de 64 bits, fazendo com que não exista confusão na comunicação. Essa forma de utilização é conhecida como microlan.

Para ajustar o horário, a solução mais simples foi mandar um comando serial para o microcontrolador, já que ele está conectado à USB e não tinha botões para colocar.

Abaixo deixo um vídeo onde eu seguro o termômetro e a temperatura (que já estava alta pelo calor do verão) aumenta um pouco mais.

Esse relógio-termômetro é parte de um projeto bem maior que estou fazendo para uma matéria da faculdade. Em breve mais coisas vão aparecer aqui.

Monitores atuais

Ultimamente eu tenho notado que os monitores de LCD estão crescendo e as resoluções diminuindo.

Na época em que os CRT’s ainda eram populares, as pessoas tinham ou monitores de 17″ de resolução 1280×1024 ou tinham aqueles de 14/15″ de 1024×768. O primeiro com formato 5:4 ‘quadradão’ e os outros com 4:3 (um pouco menos ‘quadradão’). Era raro ver qualquer coisa diferente disso.

As primeiras telas finas a ficarem populares foram as de plasma, mas, por conta da dificuldade de fazer pixels pequenos, elas eram comumente de baixa resolução 854×480 – algo que temos em LCDs de celular – e eram enormes (40″, 50″ ou maior). Seu formato é 16:9, que é bem mais esticado que o 4:3.

Em comparação com as TVs CRT de 500 linhas verticais, essas telas de plasma são até boas, mas para usar com um computador não dá muito certo.

Logo após, começaram a surgir monitores de LCD com o formato dos CRTs. Aqueles da Samsung e LG, entre outras, de 17″ e resolução 1280×1024 são ainda bem comuns, mas praticamente não são mais fabricados.

Talvez por causa dos notebooks serem bem mais compridos que largos, painéis de LCD começaram a ficar alongados.

A primeira safra foram dos monitores 15,6″ de resolução 1280×800 (16:10), que tem exatamente a mesma largura do monitor 5:4 de 17″, mas com menos pixels verticais. Para notebooks esse monitores aprecem em tamanhos de 15,6″, 14″ e 13,3″, normalmente.

Praticamente junto da resolução 1280×800, surgiram os monitores de 17″ 1440×900 e um pouco depois os 1680×1050, ambos também 16:10. Essas versões foram destinadas basicamente à monitores de Desktop.

Durante esse tempo, as TVs de Plasma já começaram a apresentar resoluções maiores e passaram a competir com os LCDs que estavam barateando. Apareceu no mercado mais um padrão de resolução que era o 1366×768, um formato 16:9, o mesmo usado no cinema. Ele é um pouco maior que o 720p, que é 1280×720, que também começou a ficar famoso. Ambos são considerados HD (High Definition).

Nas TVs, ainda, surgiu o Full HD (ainda maior que o HD) também conhecido como 1080p e é um formato 16:9 de resolução 1920×1080. Nos monitores surgiu o 1920×1200, que é 16:10 (Normalmente para telas de 22″ e 24″).

Para assistir filmes, nada melhor que ter a tela inteira preenchida com a imagem, sem aquelas barras pretas em cima e embaixo. Já no uso do computador, qualquer quantidade de pixels verticais já ajuda, por causa das barras de programas, título das janelas, barra de abas, barra de ferramentas, etc.


Firefox no Windows 7 em resolução 1280×720. Apenas 540 pixels verticais estão disponíveis para o conteúdo.

Claro que, usando uma tela Full HD, mesmo sendo 16:9, o problema desaparece, mas veja que 1080px verticais são quase os mesmos 1024px dos monitores CRT de 17″.

Mesmo assim, por causa desse apelo do formato de cinema, a nova safra de monitores parece estar seguindo essa tendência. Olhando em sites de compras, praticamente só se vê monitores de 18,5″ (18 é o novo 17) com 1366×768, monitores de 19″ com 1600×900 e monitores de 21,5″ com 1920×1080 de resolução. Todas no formato 16:9.

Para monitores de notebook menores, também começaram a aparecer resoluções como 1280×720 e 1024×576, ambas 16:9, como se alguém comprasse um aparelho com tela de 10″ para assitir filmes.

Mudando de 1024×600 (16:10) para 1024×576 num netbook, você perde 24 pixels, que é exatamente o tamanho de uma barra como a de programas do Windows!

Veja abaixo uma comparação de monitores comuns:

Abaixo uma lista ordenando as resoluções pelo total de megapixels:

É interessante ver como um monitor de CRT antigo de 17″ tem mais pixels que os monitores de 17″ e 18,5″ vendidos atualmente. A diferença é quase inexistente para os monitores de 17″ 1440×900, mas para os de 18,5″ atuais de 1366×768, temos uma grande perda de pixels e mais ainda de espaço vertical.

É claro que existem exceções, mas os monitores estão ficando maiores e as resoluções menores, tudo isso para adaptar as telas ao formato de cinema.

Minha opinião:
Telas alongadas são mais agradáveis, pois nossos olhos estão na horizontal e conseguem captar mais informação sem ter que subir e descer a cabeça. Ao mesmo tempo, temos que conseguir conciliar o problema do espaço vertical disponível.

Para televisão: Não há dúvidas que o formato 16:9 é a melhor opção, desde que os programas exibidos também sejam nesse formato. Eu vejo muita gente com TV Full HD assistindo rede Globo com a imagem 4:3 esticada num telão de 50″ em 16:9.
Para computador: Depende. Entre um monitor 16:10 e um 16:9, primeiro eu escolheria pelo número de pixels e depois pelo formato.