1

私はarduinounor3、温度センサー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を2つ追加します。

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度プラス通常よりどこで、または何が恋しいですか?

4

1 に答える 1

1

なぜなら

kelvin = analogRead(0) * 0.004882812 * 100;

したがって、ADC の各ステップは、約 0.5 度の温度差を意味します。スケッチで何も指定しなかったため、電圧基準は供給電圧です。Arduino の出力に 1 つの LED だけをロードすると (実際に行っているように)、供給電圧に 50 ~ 100 mV 程度の影響を与える可能性があります。これは、温度の読み取り値に数度影響します。

この効果の詳細な分析については、私のブログをご覧ください。

したがって、この問題は、回路に LED を追加することで説明できます。

于 2013-05-31T14:50:53.627 に答える