domingo, 2 de junho de 2013

LCD Nokia 5110 e Sensor de Temperatura LM35

Olá, neste artigo falaremos sobre a utilização do LCD Nokia 5110 e o sensor de temperatura LM35 com o arduino.
Também utilizaremos duas bibliotecas externas para acessar o LCD do nokia e uma outra feita por mim para criar menus.
O datasheet do sensor de temperatura LM35 pode ser obtido aqui.
O LCD do nokia, possui os seguintes pinos:

  • RST - Reset
  • CE - Chip Enable
  • DC - Data/Command
  • DIN - Data Input
  • CLK - Clock
  • VCC - Alimentação
  • BL - Backlight
  • GND - Ground

Devem ser ligados no Arduino de acordo com a tabela abaixo:


Segue abaixo o esquema completo do projeto.



A aplicação aqui exemplificada desenhará um menu inicial, um menu de demonstração e um exibindo a temperatura do ambiente.

Menu Inicial:
Menu Temperatura:

A troca entre as telas é feita através do Console Serial informando 1 - para o menu de exemplos, 2 - para o menu de temperatura e 3 ou outro caractere para voltar ao menu inicial. Pode-se colocar botões para substituir a interface serial.

Abaixo um exemplo de saída serial. 


A seguir o fonte desse projeto.

 #include <APIGrafica.h>  
 //Definindo o contraste do LCD  
 #define LCD_CONTRAST 49  
 //Pino analogico do A0 do arduino para o LM35  
 #define sensor 0  
 PCD8544 nokia = PCD8544(3, 4, 5,6,7); // 3 - clk, 4 - din, 5 - dc, 6 - ce, 7 - rst  
 APIGrafica apiGraf = APIGrafica(nokia); //Inicializacao da API Grafica  
 float temperaturaAmb; //Variavel que armazena a temperatura  
 int leituraSensor; //Valor lido pelo sensor  
 char buffer[20]; //Buffer temporario  
 void setup()  
 {  
  nokia.init(LCD_CONTRAST); //Inicializacao do LCD  
  Serial.begin(9600); //Inicializacao da serial  
  menuInicio(); //Carregando o menu inicial  
  Serial.println("Aguardando comando....");  
 }  
 //Menu de exemplo   
 void menu()  
 {  
   apiGraf.clearDisplay(); //Limpando a tela  
   apiGraf.createMenu("Titulo",3); //Setando o titulo do menu  
   apiGraf.setItem(0,"Item 01"); //Setando item 1  
   apiGraf.setItem(1,"Item 02"); //Setando item 2  
   apiGraf.setItem(2,"Item 03"); //Setando item 3  
   apiGraf.selItem(1); //Selecionando o item 1 da tela  
   apiGraf.setTextLeftBTN("Btn1"); //Setando o texto do botao esquerdo  
   apiGraf.setTextRightBTN("Btn2"); //Setando o texto do botao Direito  
   apiGraf.drawMenu(); //Desenhando o menu  
   apiGraf.updateDisplay(); //Atualizando o display  
 }  
 //Utilizando o menu e conjunto com a API do LCD nokia  
 void tempAmb()  
 {  
   apiGraf.clearDisplay();  
   apiGraf.createMenu("Temperatura",3);   
   apiGraf.setItem(0,"");  
   apiGraf.setItem(1,"");  
   apiGraf.setItem(2,"");  
   apiGraf.selItem(-1);  
   apiGraf.setTextLeftBTN("Voltar");  
   apiGraf.drawMenu();  
   //convertendo de float para string  
   dtostrf(temperaturaAmb, 4, 2, buffer);  
   //Desenhando a string na tela  
   nokia.setTextColor(BLACK);  
   nokia.drawstring(0,20,buffer);  
   apiGraf.updateDisplay();  
 }  
 //Menu inicial  
 void menuInicio()  
 {  
   apiGraf.clearDisplay();  
   apiGraf.createMenu("Aguard Serial",3);   
   apiGraf.setItem(0,"1 - Menu");  
   apiGraf.setItem(1,"2 - Temp");  
   apiGraf.setItem(2,"3 - Inicio");  
   apiGraf.setTextLeftBTN("btn1");  
   apiGraf.setTextRightBTN("btn2");  
   apiGraf.drawMenu();  
   apiGraf.updateDisplay();  
 }  
 void lerTemperatura()  
 {  
  leituraSensor = analogRead(sensor); //Lendo o valor do sensor  
  temperaturaAmb = (5.0*leituraSensor*100.0)/1024.0; //Convertendo para float  
 }  
 char comando = 0;//Variavel que armazenara o comando digitado na serial  
 void loop()  
 {  
   if(Serial.available()) //Aguardando dados na serial  
   {  
    comando = Serial.read(); //Lendo serial  
    Serial.print("comando recebido");  
    Serial.println(comando);  
    Serial.println("Aguardando comando....");  
   }  
   switch(comando)  
   {  
    case '1': //Se numero 1  
     menu(); //Desenha menu de exemplo  
    break;  
    case '2': //Se numero 2  
     lerTemperatura(); //Leitura da temperatura  
     tempAmb(); //Desenha menu de temperatura  
    break;  
    default: //Quanquer outro valor  
     menuInicio(); //Desenha menu inicial  
   }  
 }  


Até a próxima.

4 comentários:

  1. Prezado. Parabéns pelo site! Não consegui baixar a APIGRAFICA para criar menus no display nokia 5110... Parece uma ótima ferramenta, peço que me ajude a obte-la.Grato.

    ResponderEliminar
  2. Onde está a API GRAFICA ????

    Não consegui baixar !!!!!

    ResponderEliminar