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 !!!!!