Também utilizaremos duas bibliotecas externas para acessar o LCD do nokia e uma outra feita por mim para criar menus.
- PCD8544 - API de acesso ao LCD
- APIGrafica (clique aqui) - API para desenho e controle de 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.





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.
ResponderEliminarEste comentário foi removido pelo autor.
EliminarEu tbm n consegui baixar....
ResponderEliminarOnde está a API GRAFICA ????
ResponderEliminarNão consegui baixar !!!!!