Aprendendo Arduino — Parte 4 — LCDs e Marfagatos

marfagato1

Uma das partes chatas de brincar com eletrônica, reconheço, é a imensa quantidade de fios, e hoje em dia tudo usa fio. Futuro Wireless my ass! E quanto melhor a solução, mais fio tem. Veja por exemplo o display da imagem acima. É um LCD de 16 colunas e duas linhas, excelente para qualquer projetinho, custa míseros R$ 12,00 nas melhores casas do ramo mas… usa fio a rodo.

O 8-Bit Guy fez um vídeo muito legal demonstrando o funcionamento de um display desses, com botões acionando cada um dos terminais, enviando dados em binário, etc. Lindo de ver, um imenso saaaaaco de fazer.


The 8-Bit Guy — How a Character LCD works Part 1

São 16 cabos, entre conexões de força, dados, iluminação. Deveria existir um jeito mais fácil de integrar esse bicho a um projeto.

SEUS PROBLEMAS ACABARAM!

i2c

Esse é um módulo I²C, custa 12 reau também e evita a marfagatização de seu circuito. Mas aí você me pergunta: Cardoso, que diabos é I²C? Eu explico: é a forma pedante e correta de escrever I2C, Inter-Integrated Circuit Protocol, um mecanismo de comunicação serial de curta distância, projetado para integrar componentes sem necessidade de parear portas de dados, clocks complicados, triggers, etc. Pense nele como uma USB em miniatura.

Teoricamente um circuito pode ter até 1.008 dispositivos escravos, e contrariando a diretiva bíblica, no I²C um escravo pode ter mais de um mestre. Ou seja: dois circuitos independentes podem acessar o mesmo sensor.

O protocolo foi desenvolvido em 1982 pela Phillips, originalmente tinha velocidade de até 100 kbit/s, mais que suficiente para coisas simples como mísseis balísticos e tape decks.

O Arduino é compatível com I2C, entre outros protocolos, e seu uso é muito simples.

Instalando o módulo

O primeiro passo é soldar o módulo ao display. Você pode usar uma ponte de conectores ou soldar diretamente. Para evitar mal-contato, e dado o baixo custo dos componentes, recomendo soldar diretamente.

i2c2

Alinhe o pino 1 do módulo no conector 1 do display. Não tem como errar, veja a imagem.

Verifique se não há excesso de solda colocando pinos em curto, e vamos conectar.

O módulo tem quatro pinos:

pinos

  • Ground;
  • VCC;
  • Serial Data (SDA);
  • Serial Clock (SCL).

Na versão mais atual do protocolo é possível atingir velocidades de 5 megabit/s, mas somente na configuração de um único mestre, e é unidirecional, somente leitura. De qualquer jeito se você tentar isso com seu Arduino ele encenará a piada da formiguinha e do elefante.

Com um cabo de protoboard fêmea/macho ligue o Ground a um dos pinos GND do Arduíno.

O VCC deve ser conectado ao pino 5 V.

Aqui temos uma pequena complicação. Cada modelo de Arduino utiliza pinos diferentes para a conexão serial. Veja se o seu está na lista:

  • UNO: SDA (A4) SCL (A5)
  • MEGA: SDA (20) SCL (21)
  • Leonardo: SDA (20) SCL (21)

No nosso caso usaremos o Arduino Uno R3, então Serial Data se conecta ao pino A4, e Serial Clock ao pino A5.

lcduno

Feito isso seu display deverá acender, mostrando quadrados pretos ou outra coisa sem-sentido. Use uma chave phillips miniatura para regular o trimpot azul e ajustar o brilho até a imagem ficar nítida e legível.

Achando o endereço

Cada dispositivo I2C tem um endereço, e a forma mais rápida é rodar um sketch que pesquisa sua rede atrás de dispositivos compatíveis. É bem simples. Abra a IDE do Arduino, crie um sketch vazio e copie por cima o código-fonte disponível esta página. Execute-o e abra o monitor serial. Se tudo estiver corretamente conectado, você verá algo assim:

arduinomonitor

Anote esse número, é a identificação do seu display.

Na IDE do Arduino vá no menu Sketch. Selecione Incluir Bibliotecas / Gerenciar Bibliotecas.

Coloque “LiquidCrystal I2C” no campo de buscas, selecione (é a criada por Frank de Brabander) e instale.

Hello, World

Enviar texto para o display usando o protocolo I2C é extremamente simples. Com a biblioteca devidamente instalada, crie um novo sketch com o seguinte código-fonte:

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2); 

/*  Primeiro parâmetro: endereço do display

 *  Segundo parâmetro: número de colunas do display

 *  Terceiro parâmetro: número de linhas do display

 */

void setup() {

lcd.init(); // iniciando o display

lcd.backlight(); //acendendo a iluminação

lcd.setCursor(0,0); //posiciona o início da escrita na coluna 0, linha 0.

lcd.print("Hello, World");

}

void loop() {

}

vlcsnap-error466

Vamos experimentar com valores dinâmicos. Crie o seguinte sketch:

#include <Wire.h> 

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2); 

/*  Primeiro parâmetro: endereço do display

 *  Segundo parâmetro: número de colunas do display

 *  Terceiro parâmetro: número de linhas do display

 */

Unsigned int valor;

void setup() {

lcd.init(); // iniciando o display

lcd.backlight(); //acendendo a iluminação

lcd.setCursor(0,0);

lcd.print("CONTADOR:");

}

void loop() {

for (valor = 0; valor < 32768; valor +=1) {  

lcd.setCursor(9,0);

lcd.print(valor);

}

}

Só por diversão depois de executar corretamente o sketch, remova a linha lcd.setCursor(9,0) e veja o display ficar um tanto… confuso.


Carlos Cardoso — Aprendendo Arduino – parte 4

Componentes utilizados:

Bibliotecas utilizadas:


Leia também:

Relacionados: , ,

Autor: Carlos Cardoso

Entusiasta de tecnologia, tiete de Sagan e Clarke, micreiro, hobbysta de eletrônica pré-pic, analista de sistemas e contínuo high-tech. Cardoso escreve sobre informática desde antes da Internet, tendo publicado mais de 10 livros cobrindo de PDAs e Flash até Linux. Divide seu tempo entre escrever para o MeioBIt e promover seus últimos best-sellers O Buraco da Beatriz, Calcinhas no Espaço e Do Tempo Em Que A Pipa do Vovô Subia.

Compartilhar

Aproveite nossos cupons de desconto:

Cupom de desconto Asus, Cupom de desconto Frio Peças, Cupom de desconto Mundo da Carabina, Cupom de desconto JBL, Cupom de desconto Costa Cruzeiros, Cupom de desconto Loja do Mecânico, Cupom de desconto Staples