Você está na página 1de 8

http://www.arduinoecia.com.br/2013/03/display-lcd-winstar-wh1602a.

html

Display LCD Winstar WH1602A

Hoje vou falar um pouco sobre a ligao do Display LCD Winstar WH1602A, como esse da foto
:

Comprei esse display pela internet, e como veio sem manual ou qualquer esquema de ligao,
apanhei um pouco para faze-lo funcionar. Apesar de seguir o padro de ligao dos outros
displays com os quais eu j mexi, esse tem uma pinagem um pouco diferente, como vc pode
ver na figura abaixo :

Olhando o display de frente, os pinos esto numerados da seguinte maneira :


Os pinos so numerados de 1 a 14, em ordem decrescente, e depois vem os pinos 16 e 15. Vai
entender...

E como descobrir a funo de cada pino ? Procurando o Datasheet, como eu j havia


comentado em outro post. O datasheet do WH1602A voc encontra aqui.

Bom, essa foi a parte mais difcil. Depois que voc descobre pra que serve cada pino, a ligao
no Arduino fica assim :

Pino 2 do Arduino vai no 14 do display (Pino 14: DB7)


Pino 3 do Arduino vai no 13 do display (Pino 13: DB6)
Pino 4 do Arduino vai no 12 do display (Pino 12 : DB5)
Pino 5 do Arduino vai no 11 do display (Pino 11: DB4)
Pino 11 do Arduino vai no 6 (Enable) do display
Pino 12 do Arduino vai no 4 (RS) do display
Vcc do Arduino, ligar nos pinos 2 e 15 do display (Pino 2 : Vdd, Pino 15 : A/Vee)
GND do Arduino, ligar nos pinos 1, 5 e 16 do display (Pino 1: GND, Pino 5: RW, Pino 16
: 0v (luz de fundo)
Ligar pino 3 do display no pino central do potencimetro, que vai fazer a regulagem do
contraste (Pino 3: Vo (Ajuste de contraste)

O circuito :
Vamos testar essa ligao ? Voc pode utilizar o exemplo que vem no prprio Arduino,
carregando o programa atravs da IDE, no menu ARQUIVO => EXEMPLOS => LIQUIDCRYSTAL
=> DISPLAY , ou ento usar essa minha verso resumida :
1 // Programa : Teste de Display LCD 16 x 2
2 // Alterao / reviso : Arduino & Cia
3
4 #include <LiquidCrystal.h> //Carrega a biblioteca LiquidCrystal
5
6 //Define os pinos que sero utilizados para ligao ao display
7 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
8
9 void setup()
10 {
11 //Define o nmero de colunas e linhas do LCD:
12 lcd.begin(16, 2);
13 //Envia o texto entre aspas para o LCD :
14 lcd.print("Arduino & Cia");
15 }
16
17 void loop()
18 {
19 // Insira aqui o cdigo para alterar
20 // o texto, gerar efeito "blink" (piscar), etc.
21 }

Lembram do artigo sobre o LM35 ? No prximo , usaremos o display juntamente com o LM35
para exibir as informaes de temperatura no display. At l !

http://www.arduinoecia.com.br/2013/02/lm35-sensor-de-temperatura.html

LM35 - Sensor de Temperatura

O LM35 um sensor de temperatura fabricado pela National Semiconductor. Varia a tenso de


sada (pino Vout) de acordo com a temperatura medida na superfcie do sensor. No Arduino,
usamos uma das entradas analgicas para ler esta tenso do LM35 e calcular a temperatura.
No circuito abaixo, podemos ver a ligao do LM35, assim como os 3 leds na protoboard, que
acendem de acordo com a variao da temperatura. Todo esse material voc encontra no Kit
Arduino Iniciante , disponvel na loja FILIPEFLOP :

Ao executar o programa, o LM35 vai enviar informaes pela entrada analgica do Arduino,
que por sua vez vai tratar essas informaes, converter a tenso do sensor para graus celsius e
fahrenheit, armazenar os valores mximo e mnimo, e enviar essas informaes pela serial,
alm de acender os leds.

Aps compilar e transferir o programa para o Arduino, abra o Monitor Serial da IDE do Arduino
e voc ver uma tela parecida com esta :
Existem outros sensores de temperatura mais modernos, como o DS18B20, que um sensor
digital, possui bibliotecas prprias, possibilidade de ligar mais de um sensor na mesma porta
do Arduino, e vrias outras vantagens. Vou testar este sensor posteriormente e farei um post
especfico.

E j que falamos em datasheet no post anterior, abaixo os links para os datasheets dos
sensores citados :

Datasheet LM35 :

http://www.datasheetcatalog.org/datasheet/nationalsemiconductor/DS005516.PDF

Datasheet DS18B20 :

http://datasheets.maxim-ic.com/en/ds/DS18B20.pdf

Abaixo, o programa relativo ao circuito apresentado nesse post :

1 //Programa : Sensor de temperatura LM35


2 //Arduino & Cia
3
4 int pin = 0; // Pino analogico para ligacao do LM35
5
6 // Variaveis que armazenam a temperatura em Celsius e Fahrenheit
7 int tempc = 0,tempf=0;
8 int samples[8]; // Array para preciso na medio
9
10 // Variveis que guardam a temperatura mxima e mnima
11 int maxtemp = -100,mintemp = 100;
12 int i;
13
14 void setup()
15 {
16 Serial.begin(9600); // Inicializa comunicao serial
17 pinMode(13, OUTPUT); // Define pino 13 como sada (led verde)
18 pinMode(12, OUTPUT); // Define pino 12 como sada (led
19 vermelho)
20 pinMode(11, OUTPUT); // Define pino 11 como sada (led
21 amarelo)
22 }
23
24 void loop()
25 {
26 for(i = 0;i<=7;i++){ // Loop que faz a leitura da temperatura 8
27 vezes
28 samples[i] = ( 5.0 * analogRead(pin) * 100.0) / 1024.0;
29 //A cada leitura, incrementa o valor da variavel tempc
30 tempc = tempc + samples[i];
31 delay(100);
32 }
33
34 // Divide a variavel tempc por 8, para obter preciso na medio
35 tempc = tempc/8.0;
36 //Converte a temperatura em Fahrenheit e armazena na varivel
37 tempf
38 tempf = (tempc * 9)/ 5 + 32;
39 //Armazena a temperatura mxima na varivel maxtemp
40 if(tempc > maxtemp) {maxtemp = tempc;}
41 //Armazena a temperatura mxima na vari[avel mintemp
42 if(tempc < mintemp) {mintemp = tempc;}
43
44 //Se a temperatura estiver abaixo de 25, acende o led verde
45 if(tempc < 25)
46 {
47 digitalWrite(13, HIGH);
48 digitalWrite(12, LOW);
49 digitalWrite(11, LOW);
50 }
51
52 //Se a temperatura estiver acima de 28, acende o led vermelho
53 if(tempc > 28)
54 {
55 digitalWrite(12, HIGH);
56 digitalWrite(13, LOW);
57 digitalWrite(11, LOW);
58 }
59
60 //Se a temperatura estiver acima de 25 e abaixo de 28, acende o
61 led amarelo
62 if((tempc > 25) && (tempc < 28))
63 {
64 digitalWrite(11, HIGH);
65 digitalWrite(12, LOW);
66 digitalWrite(13, LOW);
67 }
68
69 // As linhas abaixo enviam para o monitor serial a temperatura em
70 // Celsius e Fahrenheit,
71 // e tambm as temperaturas mxima e mnima registradas
72
73 Serial.print(tempc,DEC);
74 Serial.print(" Cels., ");
75 Serial.print(tempf,DEC);
76 Serial.print(" Fahr. -> ");
77 Serial.print(" Min : ");
78 Serial.print(mintemp,DEC);
79 Serial.print(" Max: ");
Serial.println(maxtemp,DEC);

tempc = 0;
delay(1000); // Aguarda 1 segundo e reinicia o processo
}

At a prxima !