Hello, I'm projecting a small greenhouse to grow plants during the winter. My problem is how can I write the code to controll the different output at the same time but with different time of action. for example I need to have "HIGH" on the lamp for 10 hours, but during this time I need to get "HIGH" on the ventilation pin 1 minutes every 5minutes. I write a code but I don't know if it's correct. I hope someone can help me, I'm a beginner.
// COSTANTI //
#include "DHT.h" //carico la libreria dht11
#define DHTPIN 6 //definisco il pin del sensore
#define DHTTYPE DHT11 //definisco il tipo di sensore
const int luce_Pin = 2; //costante luce al pin 2
const int emissione_Pin = 3; //costante emissione al pin 3
const int immissione_Pin = 4; //costante immissione al pin 4
const int pompa_Pin = 5; //costante pompa al pin 5
DHT dht(DHTPIN, DHTTYPE);
// VARIABILI //
byte lucePinState = LOW; //
byte emissionePinState = LOW; //
byte immissionePinState = LOW; //
unsigned long currentMilllis = 0; //
// SETUP //
void setup() {
Serial.begin(9600); //setto la velocità di trasmissione dei dati a 9600 baud (bit/s)
pinMode(luce_Pin, OUTPUT); //luce output
pinMode(emissione_Pin, OUTPUT); //emissione aria output
pinMode(immissione_Pin, OUTPUT); //immissione aria output
pinMode(pompa_Pin, OUTPUT); //pompa output
pinMode(6, INPUT); //DHT11 input
}
// SETUP //
void loop() {
updatelucePinState(); //dichiaro la funzione della luce
updatemissionePinState(); //dichiaro la funzione dell'estrattore
updateventilazionePinState(); //dichiaro la funzione dell'estrattore piu l'immettitore
}
void updatelucePinState() { //funzione del pin connesso alla luce
digitalWrite(luce_Pin, HIGH); //accendi lampada
delay(43200000); //luce accesa 12 ore
digitalWrite(luce_Pin, LOW); //spegni lampada
delay(43200000); //luce spenta 12 ore
}
void updatemissionePinState() { //funzione del pin connesso all'estrattore
digitalWrite(emissione_Pin, HIGH); //acccendi estrattore
delay(30000); //estrattore acceso 20secondi
digitalWrite(emissione_Pin, LOW); //spegni estrattore
delay(240000); //estrattore spento 3 minuti
}
void updateventilazionePinState() { //funzione del "kit ventilazione"
int t = dht.readTemperature(); //rileva la temperatura tramite il sensore dht11
int h = dht.readHumidity(); //rileva l'umidità tramite il sensore dht11
if (t > 30) { //se la temperatura è sopra 30°
digitalWrite(emissione_Pin, HIGH); //accendi estrattore
digitalWrite(immissione_Pin,HIGH); //accendi immettitore
}
else if (t < 30) { //invece se la temperatura è minore di 30°
digitalWrite(emissione_Pin, LOW); //spegni estrattore
digitalWrite(immissione_Pin, LOW); //spegni immettitore
}
}