http://www.arduinoecia.com.br/2013/03/display-lcd-winstar-wh1602a.html
Display LCD Winstar WH1602A Hoje vou falar um pouco sobre a ligação do Display LCD Winstar WH1602A, como esse da foto :
Comprei esse display pela internet, e como veio sem manual ou qualquer esquema de ligação, apanhei um pouco para faze-lo funcionar. Apesar de seguir o padrão de ligação 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 estão numerados da seguinte maneira :
Os pinos são numerados de 1 a 14, em ordem decrescente, e depois vem os pinos 16 e 15. Vai entender...
E como descobrir a função 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 difícil. Depois que você descobre pra que serve cada pino, a ligação 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 potenciômetro, que vai fazer a regulagem do contraste (Pino 3: Vo (Ajuste de contraste)
O circuito :
Vamos testar essa ligação ? Você pode utilizar o exemplo que vem no próprio Arduino, carregando o programa através da IDE, no menu ARQUIVO => EXEMPLOS => LIQUIDCRYSTAL => DISPLAY , ou então usar essa minha versão resumida :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
// Programa : Teste de Display LCD 16 x 2 // Alteração / revisão : Arduino & Cia #include
//Carrega a biblioteca LiquidCrystal //Define os pinos que serão utilizados para ligação ao display LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { //Define o número de colunas e linhas do LCD: lcd.begin(16, 2); //Envia o texto entre aspas para o LCD : lcd.print("Arduino & Cia"); } void loop() { // Insira aqui o código para alterar // o texto, gerar efeito "blink" (piscar), etc. }
Lembram do artigo sobre o LM35 ? No próximo , usaremos o display juntamente com o LM35 para exibir as informações 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 tensão de saída (pino Vout) de acordo com a temperatura medida na superfície do sensor. No Arduino, usamos uma das entradas analógicas para ler esta tensão do LM35 e calcular a temperatura.
No circuito abaixo, podemos ver a ligação do LM35, assim como os 3 leds na protoboard, que acendem de acordo com a variação da temperatura. Todo esse material você encontra no Kit Arduino Iniciante , disponível na loja FILIPEFLOP :
Ao executar o programa, o LM35 vai enviar informações pela entrada analógica do Arduino, que por sua vez vai tratar essas informações, converter a tensão do sensor para graus celsius e fahrenheit, armazenar os valores máximo e mínimo, e enviar essas informações pela serial, além de acender os leds. Após 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 próprias, possibilidade de ligar mais de um sensor na mesma porta do Arduino, e várias outras vantagens. Vou testar este sensor posteriormente e farei um post específico.
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 2 3 4 5
//Programa : Sensor de temperatura LM35 //Arduino & Cia int pin = 0; // Pino analogico para ligacao do LM35
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
// Variaveis que armazenam a temperatura em Celsius e Fahrenheit int tempc = 0,tempf=0; int samples[8]; // Array para precisão na medição // Variáveis que guardam a temperatura máxima e mínima int maxtemp = -100,mintemp = 100; int i; void setup() { Serial.begin(9600); pinMode(13, OUTPUT); pinMode(12, OUTPUT); vermelho) pinMode(11, OUTPUT); amarelo) }
// Inicializa comunicação serial // Define pino 13 como saída (led verde) // Define pino 12 como saída (led // Define pino 11 como saída (led
void loop() { for(i = 0;i<=7;i++){ // Loop que faz a leitura da temperatura 8 vezes samples[i] = ( 5.0 * analogRead(pin) * 100.0) / 1024.0; //A cada leitura, incrementa o valor da variavel tempc tempc = tempc + samples[i]; delay(100); } // Divide a variavel tempc por 8, para obter precisão na medição tempc = tempc/8.0; //Converte a temperatura em Fahrenheit e armazena na variável tempf tempf = (tempc * 9)/ 5 + 32; //Armazena a temperatura máxima na variável maxtemp if(tempc > maxtemp) {maxtemp = tempc;} //Armazena a temperatura máxima na vari[avel mintemp if(tempc < mintemp) {mintemp = tempc;} //Se a temperatura estiver abaixo de 25, acende o led verde if(tempc < 25) { digitalWrite(13, HIGH); digitalWrite(12, LOW); digitalWrite(11, LOW); } //Se a temperatura estiver acima de 28, acende o led vermelho if(tempc > 28) {
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
digitalWrite(12, HIGH); digitalWrite(13, LOW); digitalWrite(11, LOW); } //Se a temperatura estiver acima de 25 e abaixo de 28, acende o led amarelo if((tempc > 25) && (tempc < 28)) { digitalWrite(11, HIGH); digitalWrite(12, LOW); digitalWrite(13, LOW); } // As linhas abaixo enviam para o monitor serial a temperatura em // Celsius e Fahrenheit, // e também as temperaturas máxima e mínima registradas Serial.print(tempc,DEC); Serial.print(" Cels., "); Serial.print(tempf,DEC); Serial.print(" Fahr. -> "); Serial.print(" Min : "); Serial.print(mintemp,DEC); Serial.print(" Max: "); Serial.println(maxtemp,DEC); tempc = 0; delay(1000); // Aguarda 1 segundo e reinicia o processo }
Até a próxima !