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.