2012-11-30 44 views
1

我有arduino uno r3,温度传感器lm335z和2 led。 我发现在互联网Arduino temp&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); 
} 

这个代码,并与这个模式

temp only

我添加了两个导致此代码的伟大工程:

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); 
} 

与此架构:

led and temp

温度1,2或3度加上比正常的地方或我想念的东西?

+0

因此,你的温度读数是出了一两个程度?我不确定我会担心太多。此外,它看起来并没有像正确连接温度传感器。 3个引脚应该连接 - 这只是一个示意图'错字'? – Marty

回答

1

由于

kelvin = analogRead(0) * 0.004882812 * 100; 

所以ADC的每个步骤将意味着〜0.5度的温差。由于您未在草图中指定任何内容,因此参考电压即为电源电压。仅使用一个LED加载Arduino的输出(与您一样)可能会影响50-100 mV量级的电源电压。这反过来会影响你的温度读数几度。

你可以找到这种影响在my blog

详细分析这样的问题,可以通过添加的LED,以你的电路来解释。