Bonjour la comunautée,
Voici mon projet, je veux automatisé la gestion de mes semis car je ne peux pas toujours etre chez moi et je viens de perdre 200 semi de beterave par manque de lumiere. Pour ca je veux pouvoir programer une plage horaire d'eclairage UV et une detection d'humidité avec arosage automatique en actionnant une pompe si il y à manque d'eau.
Je debute et ces mon premier projet.
J'ai donc appris des choses et bidouiller un code qui me permet de faire un controle de l'humidité de toute les deux heure et actionner ma pompe un certain temps et de garder la lumiere allumé 6h ( 3 cycle de 2h ) car je me suis rendu compte que l'on ne pouvais pas programer de tache en fond du style " lampe allumé 6h lampe etteinte 18h " et " controle de l'humidite toutes les heure" en même temps, car des que l'on met des notion delay () ces tache par tache.
Donc ca sa fonctionne. Et bien et j'actione ma lampe et pompe avec un relais 220V. Voici mon code. Si vous voyez a le simplifier je suis preneur j'aime apprendre.
int PinHumidite = 0; // redefini le nom de la borne A0 en PinHumidite
int humid; // Nom donné au relevé de valeur
void setup() {
Serial.begin(9600); // Fixe le débit de communication en nombre de caractères par seconde
pinMode(PinHumidite, INPUT); // capteur
pinMode(5, OUTPUT); // relais POMPE
pinMode(4, OUTPUT); // relais LAMPE
digitalWrite(5, HIGH); // pompe off valeur inversé car le relais est en secuityLOW
digitalWrite(4, HIGH); // lampe off valeur inversé car le relais est en secuityLOW
}
void loop(){
pompe();
lampe_A();
pompe();
lampe_A();
pompe();
lampe_A();
pompe();
lampe_E();
pompe();
lampe_E();
}
void lampe_A (){
digitalWrite (4, LOW);
delay (7200000);
}
void lampe_E (){
digitalWrite (4, HIGH);
delay (32400000);
}
void pompe (){
humid= analogRead(PinHumidite); // lecture capteur humidité
Serial.println(humid); //affichage humidité
if (humid<400) // if = si sol sec (dans l'eau : 1023, dans l'air 0)
{
digitalWrite(5, LOW); // allumage pompe
Serial.println("pompe on");
delay(2500); // arrosage 1 secondes
digitalWrite(5, HIGH); // arret pompe
Serial.println("pompe off");
}
}
Seul probleme, si il y a une coupure de courant, et bien la loop se relance et du coup la plante pourait avoir 12h d'UV se qui n'est pas bon.
J'ai donc acheté une puce avec pile DS3231 qui permetrais que si il y a une coupure de courant mon code soit lui basé sur un truc du genre " tu eclaire de 10h à 16h" comme ca meme si ca coupe bien je suis sur qu'il n'y ai pas un sur eclérage.
je les configuré elle m'affiche bien l'heure.
#include <Wire.h>
#include <ds3231.h>
struct ts temps;
void setup() {
Serial.begin (9600);
Wire.begin ();
DS3231_init (DS3231_INTCN);
}
void loop() {
DS3231_get(&temps);
Serial.print(temps.hour);
Serial.print(":");
Serial.print(temps.min);
Serial.print(".");
Serial.print(temps.sec);
Serial.print(" ");
delay(6000);
}
Mais maintenant j'aimerais savoir allumer et eteindre une led selon un plage horaire.
Puis arriver à combiner mes deux codes pour que tout soit géré en même temps.
je precise, ca fait une semaine que j'ai commencé à " coder " donc toutes les notions que j'aborde son fragile j'ai tout à pprendre.
Merci par avance ^^'