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

Ninguém para ajudar ???????

Olá José,

Você colocou bastante informação, mas faltou colocar exatamente qual o erro de compilação está dando.

Precisa definir qual código que você quer usar: se o da Adafruit ou do samuraipyo.

As pessoas nem sempre tem o hardware que você está usando e o tempo necessário para simular o seu erro. Mas se você for mais pontual na sua dúvida acho que elas podem te ajudar melhor.

Bom dia Wagner,

primeiramente gostaria de agradecer a resposta.

Seguinte eu comprei este display no Ebay, inclusive é igualzinho o da figura acima, o que apareceu no display foi uma figura parecido com uma flor, isto porque juntei pedaços aqui de programas. Não deu erro por enquanto mais só apareceu a flor e nada mais. Ele compilou para o ARduino, mais queria usar esta fonte (conforme figura) e que me mostrasse a temperatura. Ah agora entendi. Quero usar da Samuray fica mais chique. 

Não estou enxergando (por não entender bem de programação) a parte da conversão da temperatura.

No aguardo e um bom dia.

Já vi sim a parte da conversão. Um dia vou ficar bom nisto, vou tentar compilar este código da Samuray para ver os erros que aparecerão e depois posto aqui.

C:\Program Files (x86)\Arduino\libraries\PCD8544\Adafruit_PCD8544.cpp: In member function 'void Adafruit_PCD8544::begin(uint8_t, uint8_t)':
C:\Program Files (x86)\Arduino\libraries\PCD8544\Adafruit_PCD8544.cpp:166: error: 'SPI' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\PCD8544\Adafruit_PCD8544.cpp:167: error: 'SPI_CLOCK_DIV4' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\PCD8544\Adafruit_PCD8544.cpp:168: error: 'SPI_MODE0' was not declared in this scope
C:\Program Files (x86)\Arduino\libraries\PCD8544\Adafruit_PCD8544.cpp: In member function 'void Adafruit_PCD8544::spiWrite(uint8_t)':
C:\Program Files (x86)\Arduino\libraries\PCD8544\Adafruit_PCD8544.cpp:234: error: 'SPI' was not declared in this scope

Será que falta a biblioteca ?

Como ficaria o código ?

José,

Instalei o programa da Adafruit, que você postou, na minha máquina, no Arduino versão 1.0.5, com as bibliotecas Adafruit_GFX e Adafruit_PCD8544 e a compilação não deu erro.

Faça de novo o download das bibliotecas de novo do github (links abaixo):

https://github.com/adafruit/Adafruit-GFX-Library
https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library

Apague as bibliotecas Adafruit_GFX e Adafruit_PCD8544, que você tem ai na sua máquina.

Copie para o diretório "libraries" do Arduino, lembrando de renomear o diretório para os nomes Adafruit_GFX e Adafruit_PCD8544.

Obs.: Dentro destes diretórios não deve ter outro nível de diretório, além do diretório "examples" e dos arquivos da biblioteca. Não esqueça de fechar a IDE para estas libs serem carregadas na próxima carga da IDE.

Boa sorte.

Bom dia.

Veja se eu entendi sua dúvida, a parte do código que faz a aquisição de valores de temperatura e conversão da mesma estão nestas linhas comentadas (//) por mim:

total = total - lecturas[index]; // Descarta a última leitura, que está em lecturas[index], do total acumulado
lecturas[index] = analogRead(S1pin); // Armazena leitura de temperatura atual do pino S1pin em lecturas[index]
total = total + lecturas[index]; // acumula leitura de temperatura atual que está em lecturas[index]
index = index + 1; // incrementa index para a próxima leitura

if (index >= nlecturas) // Se o index ultrapassou a quantidade de leituras em "nlecturas"
index = 0; // zera index para começar a descartar e armazenar a partir do início do array

promedio = total / nlecturas; // Faz média das 20 últimas leituras de temperatura, pois 20 é o valor de nlecturas


float temp = ((5.0*promedio*100.0)/1024.0); // Converte a média, que está em promedio, de um valor analógico para graus celsius


Se você não conhece ou tem dificuldades com lógica de programação, variáveis, arrays, etc., recomendo estudar isto antes de alterar este código.

 

Wagner, novamente bom dia,

Não quero alterar o código e nem mudar nada lá, apenas quero fazer funcionar em meu display e em meu Arduino, quando faço a compilação do código aparece este erro acima. Não sei se está faltando alguma coisa na biblioteca. Só isto. Quero fazer funcionar do jeito que está na figura. Com o tempo eu irei aprender programar ai sim poderei brincar com a programação, mais de agora só quero fazer funcionar aqui do jeitinho que está.

Desculpe-me pela minha ignorância mais quem não sabe pergunta.

Obrigado.

José,

Vide minha resposta acima.

Também testei a compilação do código do samuray e funcionou perfeitamente.

Baixando a biblioteca certa com o nome certo no lugar certo o código compila.

Com o tempo a gente vai pegando o jeito das coisas. Eu tb comecei apanhado com estas coisas de biblioteca.

Opa Wagner não tinha visto seu post mais tentarei fazer o que o mestre mandou primeiro:

SE:(if)

1. O código em seu pc funcionou (Samuray),

Conclusão: Não é o código que está errado;

2. A biblioteca certa no lugar certo. ESTE ESTÁ SENDO MEU PRIMEIRO ERRO, OU SEJA NÃO BAIXEI A BIBLIOTECA CERTA NO LUGAR CERTO.  

HUM vou fuçar mais.

Tem de sair.

José,

Estou aprendendo tb, pois tenho um projeto semelhante que usa o LCD5110. Portanto, vai ser útil pra mim.

Veja na figura abaixo as configurações que fiz para compilar os dois código (tive que mover para fora da pasta libraries as pastas Robot_Control e Robot_Motor, pois as mesmas conflitavam com as libs da Adafruit):

Luis e Wagner:

Apaguei a antiga biblioteca, baixei novamente os arquivos, retirei as 

Robot_Control e Robot_Motor e  vejam como ficou.

 

copiei o texto novamente assim ó sem mudança nenhuma pois o Wagner nos disse e eu vi que o dele compilou:

 
//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);
 
}
E me apareceu isto aqui:

sketch_jun26a:17: error: 'LCD5110' does not name a type
sketch_jun26a.ino: In function 'void setup()':
sketch_jun26a:37: error: 'myGLCD' was not declared in this scope
sketch_jun26a.ino: In function 'void loop()':
sketch_jun26a:58: error: 'myGLCD' was not declared in this scope
sketch_jun26a:59: error: 'CENTER' was not declared in this scope

Tá miorando eram 6 erros agora já são 5.

JA

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço