我有arduino uno r3,温度传感器lm335z和2 led。 我在互联网上找到了这段代码
float celsius = 0, kelvin=0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
kelvin = analogRead(0) * 0.004882812 * 100;
celsius = kelvin - 273.15;
Serial.print("Celsius: ");
Serial.println(celsius);
//Serial.print("Kelvin: ");
//Serial.println(kelvin);
Serial.println();
delay(10000);
}
并且适用于此架构
我使用此代码添加两个led:
float celsius = 0, kelvin=0;
int led_green = 13;
int led_red = 12;
void setup()
{
Serial.begin(9600);
pinMode(led_green, OUTPUT);
pinMode(led_red, OUTPUT);
}
void loop()
{
kelvin = analogRead(0) * 0.004882812 * 100;
celsius = kelvin - 273.15;
Serial.print("Celsius: ");
Serial.println(celsius);
//Serial.print("Kelvin: ");
//Serial.println(kelvin);
Serial.println();
if (celsius <= 25.00)
{
digitalWrite(led_green, HIGH);
digitalWrite(led_red, LOW);
}
else
{
digitalWrite(led_green, LOW);
digitalWrite(led_red, HIGH);
}
delay(10000);
}
和这个架构:
温度在1,2或3度加上正常的地方或我想念的地方?
答案 0 :(得分:1)
因为
kelvin = analogRead(0) * 0.004882812 * 100;
因此,ADC的每一步都意味着~0.5度的温差。由于您未在草图中指定任何内容,因此参考电压为电源电压。只用一个LED(就像你一样)加载Arduino的输出可能会影响电源电压,其数量级为50-100 mV。这反过来会影响您的温度读数几度。
您可以在my blog
中找到有关此效果的详细分析因此可以通过在电路中添加LED来解释这个问题。