Sensores LM35DZ + LDR com variações

Prezados,

Essa é minha primeira participação no forum ARDUINO e minha duvida é seguinte teno um arduino Duemilanove e estou ligando dois sensores nele um LM35DZ no pino 0(analogico) e o LDR no pino 5, já no codigo eu faço a leitura dos pino e imprimo no monitor, o que acontece quendo faço esse monitoramento individual os valores sai corretos ex.: a temperatura do LM35dz já e também do LDR sai certinho porem quando tento monitorar os dois ao mesmo tempo o LDR está alternado o valor do LM35dz, oque pode está ocorrendo está no codigo ou no hardware já que ambos usam a mesma fonte +(5v) e - (gnd) do arduino, porem já tornei essa fonte externa e com o pino gnd interligado no arduino e o mesmo ocorreu, algum aqui já passou por isso monitorar dois sensores analogicos com arduino e o valor sair alterado???

Olá,
Mande seu código aqui, assim podemos ajudar mais!

int potPin = 0; //input read pin for LM35 is Analog Pin 0
float temperature = 0; //variable which will be calculated in process
long val=0; //variable to store the value coming from the sensor

//-------------- LDR
long valor = 0; // Variavel onde e guardado o valor lido do LDR
int analogin = 5; // Pino onde vamos ligar a LDR
//---------------FIM

void setup()
{
Serial.begin(9600);

}
void loop () //loop below process
{
//-------------LDR
valor = analogRead(analogin); // O valor que irá ser lido na porta analogica numero 6 irá ser guardado na variavel “valor”
Serial.println(“Valor LDR”);
Serial.println(valor); // Mostras no Serial Monitor o valor da variavel “valor”
//--------------FIM

val = analogRead(potPin); //read the value of sensor
temperature = (5val100/1024); //convert voltage to temperature
Serial.println(“Valor LM35dz”);
Serial.println ((long)temperature); //print temperature value on serial screen

delay(10000); //Tempo de espera em secondos
}

Alguem testou???

Preciso de ajuda pq não sei mais o que fazer

Amigo adicione um Serial.print, para verificar o valor lido do LM35

  val = analogRead(potPin);                 //read the value of sensor
  Serial.print("LM35: ");
  Serial.println(val); // ## imprima o valor lido aqui e verifique se esta de acordo com o esperado
  temperature = (5*val*100/1024);           //convert voltage to temperature
  Serial.println("Valor LM35dz");
  Serial.println ((long)temperature);       //print temperature value on serial screen
 
  delay(10000);  //Tempo de espera em secondos

Se o valor lido estiver ok, e o valor depois de feito o calculo estiver incorreto, você está com problema de tamanho de variavel. Se ambos os valores estiverem incorretos, o problema está nas ligações (ligação incorreta, mal contato, porta com defeito, etc).

Para o primeiro caso, tenta declarar temperatura como unsigned long, e ajustar o calculo para trabalhar com numero inteiro. calculos com pontos flutuantes geralmente sao problematicos para microcontroladores.

Aliás, a variável "val" pode ser do tipo inteiro.

Obrigado,

Vou testa hoje e relato o resultado

pq você esta imprimindo a temperatura que é um float como um long?

#define analogin 5   // Pino onde vamos ligar a LDR para economizar memória pode definir com o define
#define potPin 0   


float temperature = 0;                    
int val=0;                                

//-------------- LDR
 int valor = 0;      // não precisa ser um long

//---------------FIM

void setup()
{
 Serial.begin(9600);
}

void loop ()                                //loop below process
{
 //-------------LDR
 valor = analogRead(analogin);    // recebe valor da porta analógica
 Serial.println("Valor LDR");      
 Serial.println(valor);   // mostar o valor decimal para o voltagem , 0 a 1024

   //--------------FIM
 

  temperature = (5*val*100/1024);    //convert voltage to temperature
  Serial.println("Valor LM35dz");
  Serial.println (temperature);       //print temperature value on serial screen
 
  delay(10000);  //Tempo de espera em millisegundos
}