これは改訂されたコードです。初期値は変換せずに無計画に高いです! temperatureCと同様にinitialTempに適用する変換を取得するにはどうすればよいですか?初心者のArduinoループ関数と変数
私が知る限りで助けてくれたコードは、私が達成しようとしていたものですが、明らかにそうです。
ありがとうございました!
int pin_tempRead = 0; // temperature sensor pin
int coolLED = 2; // cooling LED digital pin
int heatLED = 3; // heating LED digital pin
float initialTemp;
float cutOffTemp = 30; //cut off temperature = 30°C
void setup()
{
Serial.begin(9600); //Start the serial connection with the computer
pinMode(heatLED, OUTPUT); //initialise as OUTPUT
pinMode(coolLED, OUTPUT); //initialise as OUTPUT
initialTemp = analogRead(pin_tempRead); // read the initial temp
Serial.print("Initial temperature: "); Serial.print(initialTemp); Serial.println("C"); //prints out starting temperature
}
void loop() // run over and over again
{
//getting the voltage reading from the temperature sensor
float current_temp = analogRead(pin_tempRead);
// converting that reading to voltage
float voltage = current_temp * 5.0; voltage /= 1024.0;
float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree with 500 mV offset
//to degrees ((voltage - 500mV) times 100)
if(temperatureC > cutOffTemp) {
// temp too high -> turn on the cooling system
digitalWrite(heatLED, LOW);
digitalWrite(coolLED, HIGH);
}else if (temperatureC < initialTemp) {
// temp too low -> turn on the heating system
digitalWrite(heatLED, HIGH);
digitalWrite(coolLED, LOW);
}
Serial.print("Current pump temperature: ");
Serial.print(temperatureC); Serial.println("C");
delay(1000);
}
ありがとうございました!あなたは大量に正しい方向に私を入れました。だから私が望むのは、最初は常温でデバイスの温度を測定し、最初の読みを印刷するarduinoです。 50℃に達するまで読み取り値をプリントアウトします(私は30℃を選んだので、手で温度をトリップするのが簡単です)。実際には、最初の温度はカットオフ温度を決して超えません。ですから、あなたは、現在の温度に電圧変換されないアナログ読み出しでは、初期温度を150℃と表示します。新しいコードで投稿を編集します。ありがとうありがとう!! – vividillusion
変換コードをすべてスキップしました。答えをスケルトンコードとして取り出し、必要なコードを追加します。 –
最初の一時行をvoid設定に移動したのは、最初に一度だけ印刷する必要があるためです。それは明らかにどこでエラーが発生しているのですか? – vividillusion