Greenhouse exhaust fan programming

Hello everyone! I am new here and new to the Arduino world. I am simply setting up my Arduino to turn on my greenhouse exhaust fan when the temperature is too high. Ideally I would like the fan to cut on if the temperature gets above 75°. In the sketch I will post below, I believe the threshold is valued with Celsius instead of degrees in Fahrenheit. The problem I’m having is, the fan wants to stay on constantly. I can’t figure out what I’m doing wrong. I also want to turn on the fan if the humidity rises but I would like to tackle the temperature first and then add the humidity statements. Hopefully I posted this in the correct place and maybe somebody has already asked this question.

Thank you in advance to all

#include <DHT.h>

#define DHTPIN A0 // what pin DHT sensor is connected to
#define RELAY_ON 0
#define RELAY_OFF 1

const int exhaust = 4; // Relay 2
const int threshold = 22; // TEMP THRESHOLD
const int analogPin = A0; // pin that the sensor is attached to
int analogValue = analogRead(analogPin);

// Uncomment whatever type DHT Temp/humidity sensor you’re using!
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

//DHT Wiring info below
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your ethernet controller below.
// The IP address will be dependent on your local network:
byte mac = {
0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //MAC address found on the back of your ethernet shield.
IPAddress ip(192,168,1,23); // IP address dependent upon your network addresses.

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
// initialize the exhaust pin as an output:
pinMode(exhaust, OUTPUT);
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}

dht.begin();

// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}

void loop() {

// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)
float h = dht.readHumidity();
float t = dht.readTemperature();

// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t) || isnan(h)) {
Serial.println(“Failed to read from DHT”);
} else {
Serial.print(“Humidity: “);
Serial.print(h);
Serial.print(” %\t”);
Serial.print(“Temperature: “);
Serial.print(t);
Serial.println(” *C”);
}

// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println(“new client”);
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you’ve gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == ‘\n’ && currentLineIsBlank) {
// send a standard http response header
client.println(“HTTP/1.1 200 OK”);
client.println(“Content-Type: text/html”);
client.println(“Connection: close”); // the connection will be closed after completion of the response
client.println(“Refresh: 5”); // refresh the page automatically every 5 sec
client.println();
client.println("");
client.println("");

// output the value of the DHT-11
client.println("

");
client.print(“Humidity: “);
client.println(”

”);
client.println("

");
client.println("

");
client.print(h);
client.print(" %\t");
client.println("

");
client.println("

");
client.println("

");
client.print(“Temperature: “);
client.println(”

”);
client.println("

");
client.print(t*1.8+32);
client.println(" °");
client.println(“F”);
client.println("

");

client.println("");
break;
}
if (c == ‘\n’) {
// you’re starting a new line
currentLineIsBlank = true;
}
else if (c != ‘\r’) {
// you’ve gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println(“client disonnected”);
delay(3000);}

// read the value of the potentiometer:

// if the analog value is high enough, turn on the LED:
if (analogValue > threshold) {
digitalWrite(exhaust, HIGH);
} else {
digitalWrite(exhaust, LOW);
}

}

 int analogValue = analogRead(analogPin);   //***replace with int analogValue;

put

analogValue = analogRead(analogPin);

in setup();

I think that you are reading the analog input before the hardware is set up so analogRead returns 0. A serial print later in the program will confirm.

Please use code tags to post code. Read the "how to use the forum" stickies to see how to format and post code properly.

Ldeneale:
Hello everyone! I am new here and new to the Arduino world. I am simply setting up my Arduino to turn on my greenhouse exhaust fan when the temperature is too high. Ideally I would like the fan to cut on if the temperature gets above 75°. In the sketch I will post below, I believe the threshold is valued with Celsius instead of degrees in Fahrenheit. The problem I’m having is, the fan wants to stay on constantly. I can’t figure out what I’m doing wrong. I also want to turn on the fan if the humidity rises but I would like to tackle the temperature first and then add the humidity statements. Hopefully I posted this in the correct place and maybe somebody has already asked this question.

Thank you in advance to all

#include <DHT.h>

#define DHTPIN A0     // what pin DHT sensor is connected to
#define RELAY_ON 0
#define RELAY_OFF 1

const int exhaust = 4; // Relay 2
const int threshold = 22;    // TEMP THRESHOLD
const int analogPin = A0;    // pin that the sensor is attached to
int analogValue = analogRead(analogPin);

// Uncomment whatever type DHT Temp/humidity sensor you’re using!
#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

//DHT Wiring info below
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);

#include <SPI.h>
#include <Ethernet.h>

// Enter a MAC address and IP address for your ethernet controller below.
// The IP address will be dependent on your local network:
byte mac = {
 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //MAC address found on the back of your ethernet shield.
IPAddress ip(192,168,1,23); // IP address dependent upon your network addresses.

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
   // initialize the exhaust pin as an output:
 pinMode(exhaust, OUTPUT);
// Open serial communications and wait for port to open:
 Serial.begin(9600);
  while (!Serial) {
   ; // wait for serial port to connect. Needed for Leonardo only
 }

dht.begin();

// start the Ethernet connection and the server:
 Ethernet.begin(mac, ip);
 server.begin();
 Serial.print("server is at ");
 Serial.println(Ethernet.localIP());
}

void loop() {

// Reading temperature or humidity takes about 250 milliseconds!
 // Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)
 float h = dht.readHumidity();
 float t = dht.readTemperature();

// check if returns are valid, if they are NaN (not a number) then something went wrong!
 if (isnan(t) || isnan(h)) {
   Serial.println(“Failed to read from DHT”);
 } else {
   Serial.print(“Humidity: “);
   Serial.print(h);
   Serial.print(” %\t”);
   Serial.print(“Temperature: “);
   Serial.print(t);
   Serial.println(” *C”);
 }

// listen for incoming clients
 EthernetClient client = server.available();
 if (client) {
   Serial.println(“new client”);
   // an http request ends with a blank line
   boolean currentLineIsBlank = true;
   while (client.connected()) {
     if (client.available()) {
       char c = client.read();
       Serial.write(c);
       // if you’ve gotten to the end of the line (received a newline
       // character) and the line is blank, the http request has ended,
       // so you can send a reply
       if (c == ‘\n’ && currentLineIsBlank) {
         // send a standard http response header
         client.println(“HTTP/1.1 200 OK”);
         client.println(“Content-Type: text/html”);
         client.println(“Connection: close”);  // the connection will be closed after completion of the response
  client.println(“Refresh: 5”);  // refresh the page automatically every 5 sec
         client.println();
         client.println("");
         client.println("");
       
         // output the value of the DHT-11
        client.println("

");
           client.print(“Humidity: “);
           client.println(”

”);
           client.println("

");
           client.println("

");
           client.print(h);
           client.print(" %\t");
           client.println("

");
           client.println("

");
           client.println("

");
           client.print(“Temperature: “);
           client.println(”

”);
           client.println("

");
           client.print(t*1.8+32);
           client.println(" °");
           client.println(“F”);
           client.println("

");
         
               
       
         client.println("");
         break;
       }
       if (c == ‘\n’) {
         // you’re starting a new line
         currentLineIsBlank = true;
       }
       else if (c != ‘\r’) {
         // you’ve gotten a character on the current line
         currentLineIsBlank = false;
       }
     }
   }
   // give the web browser time to receive the data
   delay(1);
   // close the connection:
   client.stop();
   Serial.println(“client disonnected”);
  delay(3000);}

// read the value of the potentiometer:

// if the analog value is high enough, turn on the LED:
 if (analogValue > threshold) {
   digitalWrite(exhaust, HIGH);
 } else {
   digitalWrite(exhaust, LOW);
 }

}