Boa tarde Srs.

 

Como não entendo de programação (mais sou fução) resolvi abrir este tópico para um experimento que estou tentando desenvolver no Arduino.

 

O circuito: 

o código: (este que é o problema) que, como juntei umas partes aqui a unica coisa que imprime no display é uma figura parecido com uma flor.

 

// Termometro JA com LM35 display Nokia LCD 5110
 
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h> 
 
// Software SPI (slower updates, more flexible pin options):
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
 
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
 
#define sensor 0        // Define o pino A0 como “sensor”
 
int  Ventrada;          // Variável para ler o sinal do pino do Arduino
float  Temperatura; // Variável que recebe o valor convertido para temperatura.
 
void setup()  
{
  Serial.begin(9600);
 
  display.begin();
  display.setContrast(20);
  
display.print("Temperatura: ");           // Manda o texto para a tela do display
}
 
void  loop()
{
  Ventrada = analogRead (sensor);  /*  Manda o Arduino ler o pino e armazena
 o valor em “Ventrada”. */
  Temperatura=(500*Ventrada)/1023;  /* Converte o valor de tensão em
temperatura e armazena na variável “Temperatura” */
  display.setCursor(0, 1);           // Move o cursor do display para a segunda linha.
  display.print(Temperatura);    // Exibe o valor de temperatura no display.
  display.print(" C");         // Escreve “C” para dizer que a escala é Celsius.
 
  delay(1000); /* Aguarda 1 segundo para efetuar uma nova leitura de
temperatura. */
}

 

Gostaria que imprimisse a temperatura.

Vi num site e achei interessante os digitos são grandes vou postar também.

 

Quando iniciei com o display Nokia ele dava uns bugs de erro ao tentar gravar com o Arduino 1.0.5 porém descobri uma biblioteca e fiz uns ajustes.

 

Ai vai o código que gostaria de usar (do site) e a imagem do display.

 

 

 
//Junio - 2013
 
// Este programa necesita un modulo LCD Nokia 5110.
 
// Asumimos que el modulo esta conectado en los siguientes pin del Arduino.
 
// SCK - Pin 3
// MOSI - Pin 4
// DC - Pin 5
// RST - Pin 6
// CS - Pin 7
//
#include <LCD5110_Graph.h>
 
LCD5110 myGLCD(3,4,5,6,7);
 
extern unsigned char BigNumbers[];
extern unsigned char SmallFont[];
extern unsigned char TinyFont[];
 
const int nlecturas = 20;
int lecturas[nlecturas];
int index = 0;
int total = 0;
int promedio = 0;
int S1pin = A0;
void setup()
{
  Serial.begin(9600);
   for (int i = 0; i < nlecturas; i++)
  {
  lecturas[i]=0;
  }
  
  myGLCD.InitLCD();
  myGLCD.drawRoundRect(0,0,83,47); //dibujamos un rectangulo con bordes redondos
  myGLCD.drawLine(0,15,83,15);//dibujamos una linea.
}
 
void loop()
{
  
    total = total - lecturas[index];
    lecturas[index] = analogRead(S1pin);
    total = total + lecturas[index];
    index = index + 1;
    
      if (index >= nlecturas)
      index = 0;
      promedio = total / nlecturas; //promediamos las lecturas del lm35.
       
   
    float temp = ((5.0*promedio*100.0)/1024.0); //calculo de la temperatura a partir del voltaje obtenido con el LM35
    
    
    myGLCD.setFont(SmallFont); //seleccionamos la fuente smallfont
    myGLCD.print("Temperature",CENTER,5); //imprimimos el texto en el centro
    myGLCD.setFont(BigNumbers); //seleccionamos la fuente bignumbers
    myGLCD.printNumF(temp,1, 14, 20);
    myGLCD.setFont(SmallFont);
    myGLCD.print("o",72,19);
    myGLCD.update();
    
 
    delay(50);
 
}
 
não consigo compilar ao Arduino ?????? 
 
Já percebi que o hardware teremos de inverter os pinos do display. 
 
a imagem do display.

No aguardo e vamos faze-lo funcionar mais não me apertem que não sei muito sobre programação como disse, vamos por partes.

Obrigado.

JA

Exibições: 6652

Anexos

As respostas para este tópico estão encerradas.

Respostas a este tópico

José,

No print das telas das suas bibliotecas eu vi que você está usando a LCD5110_Basic. Retire esta pasta e coloque a pasta LCD5110_Graph.

Feche a IDE do arduino e abra novamente compilando o seu código.

Se você não tem esta biblioteca, baixe e descompacte o arquivo LCD5110_Graph.rar deste link:

http://www.henningkarlsen.com/electronics/library.php?id=47

Lembre-se que só deve ter o diretório  LCD5110_Graph com as pasta examples, hardware e os demais arquivos dentro deste.

 

Vou montar o hardware e depois posto o resultado. 

Uhm 98%.

Falta regular o contraste somente.

Mais tá show.

Wagner, fuçando no site de quem desenvolveu o código, achei os parâmetros para esta fonte grande, e também como regular o contraste só que temos de inserir esta parte no programa, e já sabe né ainda fico bão nisto.

 

No aguardo de vossos comentários.

José,

Na linha onde está o comando:

myGLCD.InitLCD();

Coloque o parametro entre os parenteses com o valor do contraste de de 0 a 127. 

Comece com o meio que é 64 e vai ajustando:

myGLCD.InitLCD(64);

Caso não funcione, reveja a ligação dos pino do LCD com o Arduino. As vezes pode ser algum mau contato, ou ligação errada.

DEPOIS DE TANTO PERTUBAR O WAGNER (OBRIGADÃO MESMO WAGNER) VOCÊ FOI MEU INCENTIVADOR PARA NÃO PARAR O PROJETO MESMO NA PRIMEIRA RESPOSTA ACHEI QUE FOSSE ME ABANDONAR, MAIS DEPOIS FOI ME AJUDANDO COM AS DICAS. VALEU MESMO.

OLHEM AI O RESULTADO: 

VOU POSTAR O CÓDIGO E O ESQUEMA PARA QUEM TIVER O INTERESSE EM MONTAR.

ABRAÇOS E OBRIGADO PELA AJUDA ATÉ O PRÓXIMO PROJETINHO.

WAGNER FIZ ASSIM:

void setup()
{
Serial.begin(9600);
for (int i = 0; i < nlecturas; i++)
{
lecturas[i]=0;
}


myGLCD.InitLCD();
myGLCD.setContrast(30);
myGLCD.drawRoundRect(0,0,83,47); //dibujamos un rectangulo con bordes redondos
myGLCD.drawLine(0,15,83,15);//dibujamos una linea.
}

 MAIS VOU TESTAR DO JEITO QUE VC FALOU

José,

Ficou muito legal.

Tanto faz usar InitLCD(30) como setContrast(30).

Fique a vontade pra perguntar. Acho que este espaço é para incentivar o desenvolvimento de projetos.

Até,

Wagner

Valeu Wagner é isso aí eu contribuo muito com um outro fórum de eletricidade,  sou eletrotécnico e apaixonado por eletrônica, temos de aprender e também ensinar, a Vida é mesmo assim, nem os ensinamentos levamos para baixo da terra, então se você puder compartilhar que faça neste plano.

Wagner, não sei se devemos fechar esta discução e abrir uma outra, ou prosseguir neste mesmo post,

Eu vi não me lembro onde, terei de fuçar novamente aqui meus arquivos, que este código não tem muita precisão, onde a variação de temperatura (pude observar no display) varia muito, ou seja ex 23.9 para 24.4C. Tentarei achar e qualquer coisa eu posto aqui.

PS.: Realmente fiz os dois modos e funcionaram iguais (depois quando eu ficar bom na programação vou saber o porque), mais ou menos eu desconfio mais quero aprender um pouco mais para não falar besteira. One=1=hum

Valeu

Opa opa,

Tem algo que não está cheirando bem.

Quando ligo ao pc através do cabo USB fica permanentemente em 24.9 C e quando ligo através de uma bat 9V fica em 23.9V.

Se pegar um isqueiro e esquentar o LM blz sobe rapidinho, a mesma coisa fiz colocando a montagem do proto no congelador (chegou a 1 C),

 Depois destas varições volta a 24.9C (tenho aqueles termometros China) 2 deles, e funcionam muito bem e a temperatura neste dia naquele exato momento era de 26,7 graus (valor medido pelos 2 termometros).

O que mais me deixou encucado foi que ele vai a este valor de 24.9 e só sai se esquentar demasiado ou esfriar.

Será que esta formula está certa ? 

Tem coisa errada ai não ? 

Abraços.

José Antonio

Olá Jose,

Não acredito que a fórmula esteja errada, se a alimentação fornecida ao circuito é de 5V regulados pelo Arduino, então a fórmula deve funcionar pra qualquer tipo de alimentação.

O LM35 fornece com exatidão, valores temperatura com variações de 0,25ºC ou até mesmo 0,75ºC dentro da faixa de temperatura de –55ºC à 150ºC.

Entretanto podemos ter flutuação nos pinos análógicos, por conta de mau contato na protoboard, interferência eletromagnética, etc.

Portanto, tenha certeza que as ligações estão bem firmes, principalmente, quando mexer na protoboard para mudar o tipo de alimentação.

A porta usb do seu computador fornece uma tensão de 5v com corrente máxima de 500mA.

Qual é a corrente fornecida por esta bateria de 9V?

O seu circuito pede corrente total igual a soma das correntes consumidas pelo Arduino+LCD5110(com backlight ligado!)+LM35.

Teste a troca de alimentação nas seguintes situações:

1 - não mude a protoboar de local;

2 - verificando as ligações antes;

3 - desligue o backligth do LCD para diminuir o consumo.

Pode ser uma destas situações ou mais de uma junta que está causando a variação de 1 grau.

Se o seu projeto pede uma precisão melhor, você deveria utilizar uma placa de circuito onde soldar os componentes ou usar um shield com sensor de temperatura soldado nele. Sensor de temperatura digital também evita interferências.

A todos que ajudaram o tópico, meu muito obrigado. Em especial Wagner Bastos.

Vamos para o próximo desafio.

José Antonio

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço