galera ja tentei de tudo

criei um codigo o menor possivel para um sensor de temperatura digital dallas

ele ira exibir a temperatura em um display de sete segmentos

o problema e o seguinte...

se coloco o codigo que requisita a temperatura no loop o display fica piscando

se coloco fora tipo no setup o display exibe  a temperatura normalmente, mas não atualiza

ja entendi o motivo

quando coloco a requisiçao da temperatura no loop ela fica atualizando e o display em cada atualização desliga e liga

alguem tem uma sujestão??

estou procurando uma variavel que leia a temperatura a cada tempo determinado, mas ta barra viu..

segue o codigo

***********************************************************************************************

#include <OneWire.h> //biblioteca onewire para sens d temp digital
#include <DallasTemperature.h> // biblioteca do sens de temp digital
#include "Seven_Seg_LED_Display.h" // biblioteca do display de 7 segmentos para facilitar
LEDDisplay disp; // variavel para adicionar numeros ao display
#define ONE_WIRE_BUS 9 //pino que vai ligado o pino digital do sensor de temp
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int temperatura=sensors.getTempCByIndex(0); // requisita temperatura e direciona para o display


void setup(void)
{

sensors.begin(); //inicia o sensor

sensors.requestTemperatures(); // requisita a temperatura


}


void loop()
{

disp.DisplayNumber(temperatura); //mostra a temperatura no display

}

Exibições: 715

Anexos

Responder esta

Respostas a este tópico

#include <OneWire.h> //biblioteca onewire para sens d temp digital
#include <DallasTemperature.h> // biblioteca do sens de temp digital
#include "Seven_Seg_LED_Display.h" // biblioteca do display de 7 segmentos para facilitar
LEDDisplay disp; // variavel para adicionar numeros ao display
#define ONE_WIRE_BUS 9 //pino que vai ligado o pino digital do sensor de temp
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int temperatura=sensors.getTempCByIndex(0); // requisita temperatura e direciona para o display


void main()

{
sensors.begin(); //inicia o sensor

sensors.requestTemperatures(); // requisita a temperatura
disp.DisplayNumber(temperatura); //mostra a temperatura no display

delay_ms(1000);//opcional agora neste código

}

//perdoa -me pois não sou especializado em C

opa, tdo bem almir, eu tentei encontrar a variavel que estava fora do escopo no codigo e nao consegui botar para funcionar, estou na tentativa aqui.

valew pela ajuda.

#include <OneWire.h> //biblioteca onewire para sens d temp digital
#include <DallasTemperature.h> // biblioteca do sens de temp digital
#include "Seven_Seg_LED_Display.h" // biblioteca do display de 7 segmentos para facilitar
LEDDisplay disp; // variavel para adicionar numeros ao display
#define ONE_WIRE_BUS 9 //pino que vai ligado o pino digital do sensor de temp
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int temperatura=sensors.getTempCByIndex(0); // requisita temperatura e direciona para o display

int temp;


void setup(void){

sensors.begin(); //inicia o sensor

sensors.requestTemperatures(); // requisita a temperatura
}


void loop(){

temp = sensors.getTempCByIndex(0);

if(temp != temperatura){
disp.DisplayNumber(temperatura); //mostra a temperatura no display

temperatura = sensors.getTempCByIndex(0);

}

}

-------------

Tenta isso ai.

Se nao funcionar, ja sabe pelo menos a logica do que fazer.

Guarda a temperatura numa var1 e escreve no display, e no loop voce pega a temperatura na var2, se a var2 = var1, entao nao faz nada, se for diferente, escreve no display e atualiza var1

Fala caique, desde já agradeço sua ajuda,...

é o seguinte....

do jeito que voce me mandou o codigo eu ja tinha tentado antes, quase igua, ate o mesmo nome da var... so que o meu ficava piscando e atualizando, o seu pisca somente a hora que a temperatura muda e apaga, creio que esta quase la, e o contrario disso, ao invez dele ficar apagado e piscar quando muda a temperatura, ele precisa ficar ligado  e piscar quando atualiza.

o codigo que me mandou inicial piscava so a primeira vez que ligava, depois nao piscava mais e nem atualizava pois o get da temperatura estava no setup ai alterei para isso

***********************************************************

#include <OneWire.h> //biblioteca onewire para sens d temp digital
#include <DallasTemperature.h> // biblioteca do sens de temp digital
#include "Seven_Seg_LED_Display.h" // biblioteca do display de 7 segmentos para facilitar
LEDDisplay disp; // variavel para adicionar numeros ao display
#define ONE_WIRE_BUS 9 //pino que vai ligado o pino digital do sensor de temp
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int temp;

void setup(void){
sensors.begin(); //inicia o sensor

}


void loop(){
int temperatura=sensors.getTempCByIndex(0); // requisita temperatura e direciona para o display
sensors.requestTemperatures(); // requisita a temperatura
temp = sensors.getTempCByIndex(0);
if(temp != temperatura){
disp.DisplayNumber(temperatura); //mostra a temperatura no display
temperatura = sensors.getTempCByIndex(0);
}
}

****************************************************

se tirar a exclamação de antes do sinal do igual ele fica piscando 

Entao agora ta funcionando, ne??

É porque eu pensei q esse "sensors.getTempCByIndex(0);" que pegava a temperatura, e nao o outro la.

pior que ainda não esta funcionando, vou ter que estudar a biblioteca, peguei varios pedaços e editei ela de acordo com meu display de 7 segmentos.

Oi Fabio,

você pode passar o link ou o código fonte da biblioteca de display de 7 segmentos que você esta usando? Olhando o código talvez eu passo te ajudar.

Abs,

ola Luciano segue as bibliotecas que estou usando

nesse link tem o datasheet do display

http://labdegaragem.com/profiles/blogs/projeto-utilizando-o-display...

Anexos

kra, nao era bom dar uma uma procurada em multiplexação?

pelo q vi, seu display eh de 4 digitos com 7 segmentos, correto?

dah uma olhada em http://arduino.cc/en/Tutorial/ShiftOut

Oi Fabio,

Eu não tenho o hardware que você tem então não consegui testar o código abaixo. Peguei o seu código e junto com os comentários do resto da galera fiz uma nova versão. Dá uma olhada tenta compilar e veja os comentários, existem alguns pontos importantes como ler o sensor e depois recuperar a temperatura e eu também adicionei um intervalo de 200 milisegundos entre cada leitura de temperatura.
Eu nem cheguei compilar este código aqui na minha máquina então pode ser que ele tenha algum problema.
Qualquer coisa posta ai.

Abs




#include <OneWire.h> //biblioteca onewire para sens d temp digital
#include <DallasTemperature.h> // biblioteca do sens de temp digital
#include "Seven_Seg_LED_Display.h" // biblioteca do display de 7 segmentos para facilitar


/*Declaracao de variaveis */
LEDDisplay disp; // variavel para adicionar numeros ao display
#define ONE_WIRE_BUS 9 //pino que vai ligado o pino digital do sensor de temp
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int ultimaTemperatura=0;
/* No setup vamos fazer a inicializacao dos sensores
e variaveis necessarias
*/

void setup(void)
{
sensors.begin(); //inicia o sensor
}
/*
Depois de iniciado o Arduino o loop vai ficar rodando constantemente até desligar
então em cada passo temos que requisitar a temperatura (requestTemperatures) e depois lê-la do sensor
no primeiro ciclo a variavel ultimaTemperatura estara com valor "0" (zero) e provavelmente sera diferente do valor da temperaturaAtual isso alterará o display
*/

void loop()
{
sensors.requestTemperatures(); // a cada ciclo do MCU (atmega) solicita novamente a temperatura ao sensor
int temperaturaAtual = sensors.getTempCByIndex(0); // recupera a temperatura atual
if(temperaturaAtual != ultimaTemperatura){ // seguindo a dica do Caique Freitas
ultimaTemperatura = temperaturaAtual;
disp.DisplayNumber(ultimaTemperatura);
}
delay(200); // da um descanso pro pobre Arduino respirar! brincadeira, esta pausa de 200 milisegundos (0,2segundos) é pra criar um intervalo de leitura da temperatura e deixar o processo mais fluido
}

Ola luciano, era para ser simples, mas isso virou um tormento hehe.

testei seu codigo e aconteceu como em um dos que elaborei, o display fica apagado e pisca agora somente a hora que a temperatura muda e apaga novamente.

eu tenho quase certeza que é porque meu display tem as polaridades invertidas como o do link que te mandei, terei de arrumar outro ou fazer um de led.

de qualquer forma muito obrigado, irei mecher no seu codigo para ver se consigo algo, qualquer coisa posto aqui.

olhei todo o codigo de vocês não tem como estar errado, o problema e na minha biblioteca ou polarização do display de 7 segmentos, vou me dedicar agora a isso.

estou pensando aqui, teria como implementar um codigo que so  ligasse ou desligasse o display no caso da temperatura ser !=, até fazer um if para cada numero tipo (if temperatura = 25 mostrar display 25 ja tentei e nada...) eu recebo a temperatura do sensor em 4 digitos tipo  28.37º  e no display esta exibindo somente 2, creio que por causa do ponto ou virgula que a temp usa, acho que isso também pode estar causando esse problema? como faço uma conversão de 28.37 somente para 28?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço