2012-11-30 45 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,以你的電路來解釋。