Arduino, Ligando um display paralelo

Arduino Leonardo

Aqui vai minha primeira contribuição para o mundo micro processado o Arduino. Um mundo novo que abre a as portas da automação de forma mais simples que outros circuitos programáveis, como os PIC eProns e etc. Pelo seu enfoque educativo facilidade uso e de programação e um mundo de informações para buscar na rede. Nesta primeira viajem vamos aprender a ligar um LCD 2×16 reciclado. Pois é, quer entrar na robótica automação, tem de saber usar o ferro de solda, sugador, alicate etc e usar sucata!

Reaproveitandoum LCD 2x16

 

Era um LCD de um Bina que já tinha sido aproveitado para meu antigo projeto um case-mod. Mas como a minha MoBo, não tem serial, e muito menos paralela estava em desuso a muito.

Fazendo ponteiras

Como não tinha os Jumpers que facilitam muito as montagem experimentais na protoboard utilizei aqueles cabinhos de gabinetes velhos e os pinos de conexão dos Jumpers de uma antiquíssima placa de modem uma UsRobotics de 33kbps ISA, para fazer as pontas dos cabos e com a solda isolada por tirinhas de fita isolante, ficou melhor que a da China, e Leds e push-buttons já prontos para experimentos, custo zero e 100 ecológico!

Ligando lcd 2x16

Como é um LCD Paralelo compatível com o TS1620A, e sem a interface serial (STV1602) tenho que ligar ele diretamente e neste processo quase todos os pinos digitais (I/O) vão ficar ocupados, optei pela ligação econômica que utiliza menos 4 pinos, porem mais lenta no carregamento do display mas imperceptível, para o tipo de aplicações que vamos fazer e sobram I/O’s suficientes para a maioria dos experimentos.

Como este é um LCD sem Backlight,  assim como alguns roubados de telefones públicos, vão ter duas ligações a menos, os pinos 16(Gnd) e o 15, Drive do Led do backlight que em alguns displays já tem um resistor em serie, se não tiver tem de coloque um de 220R antes de ligar ao 5V, e opcionalmente pode ser controlado por um potenciômetro ou pelo próprio Arduino.

Da direita para a esquerda pinos 1-2-3-4-5-6-7-8-9-10-11-12-13-14, normalmente vem marcado no próprio display, ou melhor, procure o datasheet.

1- Gnd

2- V+ (5v)

3- Contraste, ponte com um resistor de 82R e Gnd

Ligando lcd 2x16

4-  (RS)  – D7 Arduino

5-  (RW) – Gnd

6-  (EN) –  D8 Arduino

7-  (DB0)

8-  (DB1)

9-  (DB2)

10- (DB3)

11- (DB4) – D9   Arduino

12- (DB5) – D10 Arduino

13- (DB6) – D11 Arduino

14- (DB7) – D12 Arduino

Liguei um push bottom entre o Gnd e o Pino 6 (D6) do Arduino, só para testar a IF ELSE. Neste circuito não coloquei o resistor de 10M ligado do D6 ao Gnd,  que serve para evitar flutuações e interferências, faça o mesmo e experimente retirar a linha “digitalWrite(PINO6, HIGH);”

Ficou maluco não é?  As vezes conta, para, começa do zero. E  que quando configuramos uma I/O digital no Arduino como entrada esta linha de comando liga um resistor interno de 20M, para deixar a entrada em alta impedância, e evitar flutuações. Mas a boa pratica, é sempre ligar um resistor de 10M como Gnd, quando uma I/O for configurada como entrada.

 

#include <LiquidCrystal.h> LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int PINO13 = 13;
//inicia as variáveis (led on board)
int BOTAOLIGA = 0;
// variavel que armazena o status do pino 6
int PINO6 = 6;
int VAR1 = 0;
void setup()
{   Serial.begin(9600);
pinMode(PINO13, OUTPUT);
//Define os modos das saidas
pinMode(PINO6, INPUT);
digitalWrite(PINO6, HIGH);
// Liga o resistor interno do pino 6
lcd.begin(16, 2);
//Inicia o LCD reciclado
lcd.print("www.CdeF.com.br!"); } void loop()
{   BOTAOLIGA = digitalRead(PINO6);
//Le o status do pino 6
if (BOTAOLIGA == HIGH)
{     Serial.println("PARADO = ");
//condicional que testa se o
VAR1 = 0;
//Botao do pino 6 e zera a variavel VAR1   }
else {
// Se nao pressionado continua por aqui
digitalWrite(PINO13, HIGH);
//liga o led do p13
delay(500);
// atrazo de 0,5 segundos
VAR1 ++;
//He a mesma coisa que VAR1 = ++ VAR1;
Serial.print("teste = ");
//imprime no serialmonitor sem quebra de linha
Serial.println(VAR1);
// valor de VAR1 na tela
digitalWrite(PINO13, LOW);
//apaga o led do pino 13
lcd.setCursor(7, 1);
//define LCD coluna 7 linha 2
lcd.print(VAR1);
//imprime VAR1 em coluna 7 linha 2
delay(100);
// atraso de 0,5 segundos
 } }

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *