ventilador temperatura proyecto programarfacil lm35 leds ds18b20 controlador arduino sensor temperature

proyecto - Sensor de temperatura Arduino



sensor de temperatura lm35 arduino lcd (3)

La entrada analógica 0 no es el pin 0.

Deberías usar los símbolos definidos:
A0, A1, ..., A7
para entradas analógicas.

Tratar

int sensorPin = A0;

y tu programa debería funcionar

Si tiene curiosidad acerca de los valores reales, en su Arduino IDE instale la apariencia en el archivo
.. / hardware / arduino / variantes / estándar / pins_arduino.h

Estoy tratando de construir un pequeño programa con Arduino usando un sensor de temperatura.

Pensé que sabía cómo hacerlo, pero estoy obteniendo algunas salidas raras.

Aquí está mi código:

int sensorPin = 0; void setup() { Serial.begin(9600); } void loop() { int reading = analogRead(sensorPin); float voltage = reading * 5.0 / 1024; float temperatureC = (voltage - 0.5) * 100; Serial.print(temperatureC); Serial.print(" degrees C, "); Serial.print(voltage); Serial.println(" volts"); delay(1000); }

Este código me da el resultado:

-26.56 degrees C, 0.23 volts -26.56 degrees C, 0.23 volts -27.05 degrees C, 0.23 volts -26.56 degrees C, 0.23 volts -26.07 degrees C, 0.24 volts -26.07 degrees C, 0.24 volts

¿Por qué es - en grados? y ¿Por qué puedo cambiarlo a cualquier pin que quiera y aún así me dará un resultado similar?


Primero, debes usar los símbolos definidos A0

int sensorPin = A0; in the next float voltage = reading * (5.0 / 1024);

Hay un ejemplo en File/Examples/Basic/AnalogReadSerial


Usted está leyendo esta entrada correctamente. Para que no obtengas títulos negativos, tendrás que procesarlo de manera diferente.

Con este:

float temperatureC = (voltage - 0.5) * 100;

Cualquier valor < 0.5 resulta en multiplicar un número negativo por 100.

Intenta dividir esto usando propiedad conmutativa.

  • (voltage - 0.5) * 100 es lo mismo que (voltage * 100) - (0.5 * 100) .
  • Esto se puede simplificar aún más a (voltage * 100) - 50 .

Aún así, para todos los valores donde la voltage < 0.5 la temperatura será negativa.

  • Yo sugeriría que multiplique la temperatureC por -1 para que sea positiva y no ponga el sensor cerca de nada que sea `~> = 50 grados Celsius.

Además, como jdr5ca señaló aquí , en realidad no está obteniendo datos del sensor todavía ... :(

Probablemente estés recibiendo ruido (o basura) de lo que sea pin0.

EDITAR

Es una buena práctica usar paréntesis para hacer el orden de las operaciones más claro.

  • es decir:
    • float voltage = reading * 5.0 / 1024;
    • debiera ser
    • float voltage = reading * (5.0 / 1024);