How do I make the Piezo sensor only make noise when I what it too?

Hi.
I have been working on a project that uses a temperature sensor, LED's and a piezo. What I want my project to do is to monitor what the room temperature is, and if it gets too hot or too cold the Prezo will sound an alarm so you know it is too hot or too cold. This project would work well in a greenhouse where you need to keep it at a specific temperature.

So what I need help with is the piezo sensor. I can't seem to figure out how to make it only sound an alarm when it is at a certain temperature. All it is doing right now is going off constantly no matter what the temperature is.

This is what my code looks like.

const int sensorPin = A0;
const float baselineTemp = 15.0;
int prezoPin = A1;
void setup(){
  Serial.begin(9600); // open a serial port
  for(int pinNumber = 1; pinNumber<7; pinNumber++){
    pinMode(pinNumber, OUTPUT);
    digitalWrite(pinNumber, LOW);
    
  }
}
void loop(){
  int sensorVal = analogRead(sensorPin);
  Serial.print("Sensor Value: ");
  Serial.print(sensorVal);
  // convert the ADC reading tp voltage
  float voltage = (sensorVal/1024.0) * 5.0;
  Serial.print(", Volts: ");
  Serial.print(voltage);
  Serial.print(", degrees C: ");
  // convert the voltage to temperature in degrees
  float temperature = (voltage - .5) * 100;
  Serial.println(temperature);
  if(temperature < baselineTemp){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    }else if(temperature >=baselineTemp+0 &&
    temperature < baselineTemp+3){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5,LOW);
    digitalWrite(6,HIGH);
    tone(prezoPin, 1000);
    }else if(temperature >=baselineTemp+3 &&
    temperature < baselineTemp+7){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, HIGH);
    digitalWrite(6, LOW);
   }else if(temperature >= baselineTemp+7 &&
    temperature < baselineTemp+11){
    digitalWrite(2, LOW);
    digitalWrite(3, LOW);
    digitalWrite(4, HIGH);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    }else if(temperature >= baselineTemp+11 &&
    temperature < baselineTemp+15){
    digitalWrite(2, LOW);
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    }else if(temperature >= baselineTemp+15 &&
    temperature < baselineTemp+19){
    digitalWrite(2, HIGH);
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);
    tone(prezoPin, 1000);
   
    
  }
  delay(1);
}

Thanks.

I see where you switch tone() on but I don't see any notone() command to switch it off.

Steve

you know, you have tone() in temperature >=baselineTemp+0?

tone() has a version with 3 parameter. it is time in milliseconds.

and you do everything again every millisecond