Problemas con analogRead()

Realmente no entiendo que es lo que pasa, este codigo funciona perfectamente:

void loop() {
 
int Temperatura = analogRead(A0);
int c= (500*Temperatura)/1023;
lcd.setCursor(2,1);
lcd.print(c);

delay(1000);

}

Pero cuando agrego la linea que esta en negrita, el valor de la variable C se desestabiliza y toma valores negativos y llega hasta miles.

void loop() {

int Temperatura = analogRead(A0);
int c= (500*Temperatura)/1023;
lcd.setCursor(2,1);
lcd.print(c);
delay(1000);


[i][b]int Humedad = analogRead(A15);[/b][/i]


}

No entiendo que pasa :(, no se puede usar dos sensores?
estoy usando un sensor de temperatura LM35 y un sensor de Humedad YL-69 en un arduino MEGA 2560, necesito poner las dos variables en una pantalla LCD, pero no puedo usar dos analogRead simultaneamente.

Deberías inicializar las varibles antes del loop, no meterlas ahi a pelo, porque las vas a estar inicializando todo el rato cada vez q ejecutes el bucle, igual por eso se hace la picha un lio.

int Temperatura, Humedad, T, H;

void loop()
{
  
   Temperatura = analogRead(A0);
   Humedad = analogRead(A15);

   T= (500*Temperatura)/1023;
   H= (Humedad)/1023;

   lcd.clear();
   lcd.setCursor(1,1);
   lcd.print(T);
   lcd.setCursor(2,1);
   lcd.print(H);

   delay(1000);

}

Lo que tienes es un problema de desbordamiento

si defines algo como entero como aquí

int c= (500*Temperatura)/1023;

resulta que si Temperatura fuera digamos 1000 tienes esta cuenta

1000x500 = 500000 y eso supera 32768 = 2^15 por lo tanto la aritmetica desborda y pasa a negativo porque justamente la notación con el bit 15 en 1 es para enteros negativos que van hasta 2^15-1

Entonces o defines como long o usas float.

Como siempre me queda algo por decir pongo las cosas de otro modo, en términos de temperatura.

Todo lo que supere 32768/500 = 65 en tu AD dará un desbordamiento.

o sea que traducido una vez mas 32768/500 es lo que corresponde a 32 grados.

Gracias a ambos, segui sus consejos y me fueron muy utiles. El float me ayudo a reducir demasiado la oscilacion y ya no pasaba a numeros negativos pero aun asi tenia una oscilacion de +-5 grados constante, para eso use un filtro pasabajos y soluciono al 100% mi problema.

Son cosas diferentes. Un tema es que te de valores negativos y otro son las oscilaciones o ruido presente en tu lectura del sensor LM35.

Una solución al segundo problema es un promedio de N valores.

Lees N valores usando analogRead() sin convertir en una variable unsigned long en la que los vas sumando.
Y al final usas esa variable y le aplicas lo mismo que estas haciendo además de dividirla por N.

La respuesta será un valor mas estable.