Ok, i am currently having this problem right now. There are two tasks where it got my confused at some points. And they mention: -
[1] It should only work when the lights are on, using an LDR.
And
[2] Use a potentiometer as a calibration mechanism
Here is the code i've implemented for those tasks:
[1]:
const int ThermPin = A0;
const int LDRPin = A1;
const int PotentPin = A2;
const int SpeakerPin = 11;
const int ButtonPin = 6;
int ButtonState = 0;
const int FanPin = 5;
const int LEDPin1 = 2;
const int LEDPin2 = 3;
const int LEDPin3 = 4;
void setup(){
Serial.begin(9600);
pinMode(LDRPin, INPUT);
pinMode(ButtonPin, INPUT);
pinMode(LEDPin1, OUTPUT);
pinMode(LEDPin2, OUTPUT);
pinMode(LEDPin3, OUTPUT);
pinMode(SpeakerPin, OUTPUT);
pinMode(FanPin, OUTPUT);
}
int SteinHart_Celcs(int ThermPin){
ButtonState = digitalRead(ButtonPin);
int SensorValue = analogRead(ThermPin);
int LDRSensVal = analogRead(LDRPin);
int PotentSensVal = analogRead(PotentPin);
float C1 = 1.346e-03;
float C2 = 2.309e-04;
float C3 = 9.815e-08;
float Rt = 10000.0;
float logRt = log(((10240000/SensorValue) - Rt));
float Temp = (1.0/(C1 + C2*logRt + C3*logRt*logRt*logRt));
float Celcius = Temp - 273.15;
if(Celcius >= 10 && Celcius <= 23){
digitalWrite(LEDPin1, HIGH);
digitalWrite(LEDPin2, LOW);
digitalWrite(LEDPin3, LOW);
digitalWrite(SpeakerPin, LOW);
digitalWrite(FanPin, LOW);
Serial.println("Status: Its COOOLD..D..D ");}
if(Celcius >= 24 && Celcius <= 29){
digitalWrite(LEDPin2, HIGH);
digitalWrite(LEDPin1, LOW);
digitalWrite(LEDPin3, LOW);
digitalWrite(SpeakerPin, LOW);
digitalWrite(FanPin, LOW);
Serial.print("Status: Its WARM..OK ");}
if(Celcius >= 30 && Celcius <= 40){
digitalWrite(LEDPin3, HIGH);
digitalWrite(LEDPin1, LOW);
digitalWrite(LEDPin2, LOW);
digitalWrite(SpeakerPin, HIGH);
Serial.print("Status: ITs HOT..SHUT THE SYSTEM DOWN...ASAP! " );}
//if statement specifically made for the fan.
if(Celcius >= 27 && Celcius <= 40){
digitalWrite(FanPin, HIGH);}
//if statemewnt specifically made for the button reset sequence.
if(ButtonState == HIGH){
digitalWrite(SpeakerPin, LOW);}
else{
ButtonState = LOW;}
//if statement made for the LDR.
if(LDRSensVal <= 200 && LDRSensVal >= 0){
digitalWrite(LEDPin1, HIGH);
digitalWrite(LEDPin2, HIGH);
digitalWrite(LEDPin3, HIGH);}
if(LDRSensVal <= 300 && LDRSensVal >= 220){
digitalWrite(LEDPin1, LOW);
digitalWrite(LEDPin2, LOW);
digitalWrite(LEDPin3, HIGH);}
if(LDRSensVal <= 400 && LDRSensVal >= 320){
digitalWrite(LEDPin1, LOW);
digitalWrite(LEDPin2, HIGH);
digitalWrite(LEDPin3, LOW);}
if(LDRSensVal <= 500 && LDRSensVal >= 420){
digitalWrite(LEDPin1, HIGH);
digitalWrite(LEDPin2, LOW);
digitalWrite(LEDPin3, LOW);}
if(LDRSensVal <= 600 && LDRSensVal >= 520){
digitalWrite(LEDPin1, LOW);
digitalWrite(LEDPin2, LOW);
digitalWrite(LEDPin3, LOW);}
Serial.print("LDRSensVal = ");
Serial.print(LDRSensVal);
//if statements made for the Potentiometer
if (PotentSensVal <= 320 && PotentSensVal >= 11){
digitalWrite(FanPin, LOW);}
if (PotentSensVal <= 620 && PotentSensVal >= 321){
digitalWrite(FanPin, HIGH);
delay(1500);
digitalWrite(FanPin, LOW);
delay(1500);}
if (PotentSensVal <= 820 && PotentSensVal >= 621){
digitalWrite(FanPin, HIGH);
delay(600);
digitalWrite(FanPin, LOW);
delay(600);}
if (PotentSensVal <= 920 && PotentSensVal >= 821){
digitalWrite(FanPin, HIGH);
delay(400);
digitalWrite(FanPin, LOW);
delay(400);}
if (PotentSensVal <= 920 && PotentSensVal >= 821){
digitalWrite(FanPin, HIGH);
delay(200);
digitalWrite(FanPin, LOW);
delay(200);}
if (PotentSensVal <= 970 && PotentSensVal >= 921){
digitalWrite(FanPin, HIGH);}
Serial.print("\t PotentSensVal = ");
Serial.print(PotentSensVal);
Serial.print("\t Celcius = ");
Serial.print(Celcius);
Serial.println(" C");
}
void loop(){
SteinHart_Celcs(ThermPin);
delay(100);
}
Making the system only works when the lights are on using the LDR.