Problème de programme

Bonjour,
Débutant en Arduino, je cherche des solutions afin de finaliser mon programme.
Je souhaite fermer différents circuits à partir de mon Arduino sur un temps d'une journée à répéter en Boucle.
Les différents circuits que je veux fermer, donc actionner, devrons pouvoir le faire plusieurs fois dans la journée pendant des durée différentes (15min, 30min, 1heure,..) et parfois plusieurs circuits en même temps.

Auriez vous la fonction que je doit utiliser et comment l'écrire pour que mon programme puisse fonctionner ?

Merci d'avance :wink:

hello
vas voir là

Merci pour t'a réponse, malheureusement je voulais savoir si il était possible de temporiser un programme avec seulement une carte et relais, voici le programme que j'avais fait mais il ne fonctionnait pas sur 24h, je vous laisse juger:

[s]unsigned long time;

// Definition des pins
 const int Serre = 2;
 const int David = 3;
 const int Aspersion = 4;
 const int Tomates = 5;
 const int Geantes = 6;
 const int Eau = 7;
 const int Pompe = 8;

void setup() {
// Definition des pins
 pinMode(Serre, OUTPUT);
 pinMode(David, OUTPUT);
 pinMode(Aspersion, OUTPUT);
 pinMode(Tomates, OUTPUT);
 pinMode(Geantes, OUTPUT);
 pinMode(Eau, OUTPUT);
 pinMode(Pompe, OUTPUT);



}


void loop(){
digitalWrite(Serre, HIGH);
digitalWrite(David, HIGH);
digitalWrite(Aspersion, HIGH);
digitalWrite(Tomates, HIGH);
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Pompe, HIGH);

digitalWrite(Geantes, LOW); //8h00
digitalWrite(Pompe, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Pompe, HIGH);

delay(6300000); // 8h15

digitalWrite(Serre, LOW); // 10 h
digitalWrite(Pompe, LOW);
delay(900000); //15 minutes
digitalWrite(Serre, HIGH);
digitalWrite(Pompe, HIGH);
digitalWrite(Geantes, LOW); //10h15
digitalWrite(Eau, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(7200000); // 10h30

digitalWrite(Geantes, LOW); //12h30
digitalWrite(Eau, LOW);
delay(900000); //15min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(6300000); //12h45

digitalWrite(Geantes, LOW); //14h30
digitalWrite(Eau, LOW);
delay(900000); //15min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(4500000); //14h45

digitalWrite(David, LOW); //16h
digitalWrite(Eau, LOW);
delay(420000); //7 min
digitalWrite(David, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Aspersion, LOW); //16h07
digitalWrite(Eau, LOW);
delay(420000); //7 min
digitalWrite(Aspersion, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Tomates, LOW); //16h14
digitalWrite(Eau, LOW);
delay(360000); //6 min
digitalWrite(Tomates, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Geantes, LOW); //16h20
digitalWrite(Pompe, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Pompe, HIGH);

delay(3300000); //16h35

digitalWrite(Geantes, LOW); //17h30
digitalWrite(Eau, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(7200000); //17h45

digitalWrite(Geantes, LOW); //19h45
digitalWrite(Eau, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(43200000); //20h00 > 8h00


}[/s]
[code]

Edite ton message et mets le code entre les balises code comme indiqué dans les messages en tête de forum !!

vas LA

Bonsoir
Suite à la réponse de jfs, voici donc le code que j'avais fait pour essayer d'incorporer des délais dans mon programme

Voici l'ancien post : Problème de programme - Français - Arduino Forum

unsigned long time;

// Definition des pins
  const int Serre = 2;
  const int David = 3;
  const int Aspersion = 4;
  const int Tomates = 5;
  const int Geantes = 6;
  const int Eau = 7;
  const int Pompe = 8;

void setup() {
// Definition des pins
  pinMode(Serre, OUTPUT);
  pinMode(David, OUTPUT);
  pinMode(Aspersion, OUTPUT);
  pinMode(Tomates, OUTPUT);
  pinMode(Geantes, OUTPUT);
  pinMode(Eau, OUTPUT);
  pinMode(Pompe, OUTPUT);



}


void loop(){
digitalWrite(Serre, HIGH);
digitalWrite(David, HIGH);
digitalWrite(Aspersion, HIGH);
digitalWrite(Tomates, HIGH);
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Pompe, HIGH);

digitalWrite(Geantes, LOW); //8h00
digitalWrite(Pompe, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Pompe, HIGH);

delay(6300000); // 8h15

digitalWrite(Serre, LOW); // 10 h
digitalWrite(Pompe, LOW);
delay(900000); //15 minutes
digitalWrite(Serre, HIGH);
digitalWrite(Pompe, HIGH);
digitalWrite(Geantes, LOW); //10h15
digitalWrite(Eau, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(7200000); // 10h30

digitalWrite(Geantes, LOW); //12h30
digitalWrite(Eau, LOW);
delay(900000); //15min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(6300000); //12h45

digitalWrite(Geantes, LOW); //14h30
digitalWrite(Eau, LOW);
delay(900000); //15min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(4500000); //14h45

digitalWrite(David, LOW); //16h
digitalWrite(Eau, LOW);
delay(420000); //7 min
digitalWrite(David, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Aspersion, LOW); //16h07
digitalWrite(Eau, LOW);
delay(420000); //7 min
digitalWrite(Aspersion, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Tomates, LOW); //16h14
digitalWrite(Eau, LOW);
delay(360000); //6 min
digitalWrite(Tomates, HIGH);
digitalWrite(Eau, HIGH);
digitalWrite(Geantes, LOW); //16h20
digitalWrite(Pompe, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Pompe, HIGH);

delay(3300000); //16h35

digitalWrite(Geantes, LOW); //17h30
digitalWrite(Eau, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(7200000); //17h45

digitalWrite(Geantes, LOW); //19h45
digitalWrite(Eau, LOW);
delay(900000); //15 min
digitalWrite(Geantes, HIGH);
digitalWrite(Eau, HIGH);

delay(43200000); //20h00 > 8h00


}

Merci :slight_smile:

Il fallait simplement éditer ton message et mettre le code entre les balises.... tu peux toujours le faire

Un nouveau sujet était pas nécessaire...

Ça y est j'ai réussi à le ré-éditer

Désolé :slight_smile:

hello
en attendant tes modifs, je t'ai préparé ce code

/*
 * pour etre cohérent avec l'heure de la journée, il faut lancer le micro à 8h du mat
 * la 1ere fois. ensuite, il est autonome pour une quarantaine de jours.
 * il est donc préférable de resetter le micro 1 fois par mois à 8 h du matin.
 * ceci est du à l'utilisation de la fonction milli() qui n'a rien à voir 
 * avec l'heure de la journée. une horloge DS3231 aurait été la bienvenue.
 * 
 * dans chacune des lignes de la loop, on initialise les paramètres d'appels de la fonction
 * "reglages_sorties()" en fonction de ce que l'on veut faire
 */
unsigned long heure;

// Definition des pins
 const int Serre     = 2;
 const int David     = 3;
 const int Aspersion = 4;
 const int Tomates   = 5;
 const int Geantes   = 6;
 const int Eau       = 7;
 const int Pompe     = 8;

void setup() {
 Serial.begin(115200);
 for(int f =2;f<9;f++){pinMode(f,OUTPUT);digitalWrite(f,HIGH);}
 heure=millis();
}

void loop()
{  

if ((millis()-heure) >  86402000){heure=millis();}                  //8h le lendemain
//                                                       S,D,A,T,G,E,P  
      if ((millis()-heure) >  43200000){reglages_sorties(1,1,1,1,1,1,1);} // 20h 00mn
else {if ((millis()-heure) >  42300000){reglages_sorties(1,1,1,1,0,0,1);} // 19h 45mn
else {if ((millis()-heure) >  35100000){reglages_sorties(1,1,1,1,1,1,1);} // 17h 45mn
else {if ((millis()-heure) >  34200000){reglages_sorties(1,1,1,1,0,1,0);} // 17h 30mn 
else {if ((millis()-heure) >  30900000){reglages_sorties(1,1,1,0,1,0,1);} // 16h 35mn
else {if ((millis()-heure) >  30000000){reglages_sorties(1,1,1,1,0,1,0);} // 16h 20mn
else {if ((millis()-heure) >  29640000){reglages_sorties(1,1,1,0,1,0,1);} // 16h 14mn
else {if ((millis()-heure) >  29220000){reglages_sorties(1,1,1,1,1,0,1);} // 16h 07mn
else {if ((millis()-heure) >  28800000){reglages_sorties(1,0,1,1,1,0,1);} // 16h 00mn
else {if ((millis()-heure) >  24300000){reglages_sorties(1,1,1,1,1,1,1);} // 14h 45mn
else {if ((millis()-heure) >  23400000){reglages_sorties(1,1,1,1,0,0,1);} // 14h 30mn
else {if ((millis()-heure) >  17100000){reglages_sorties(1,1,1,1,1,1,1);} // 12h 45mn 
else {if ((millis()-heure) >  16200000){reglages_sorties(1,1,1,1,0,0,1);} // 12h 30mn
else {if ((millis()-heure) >   9000000){reglages_sorties(1,1,1,1,1,1,1);} // 10h 30mn  
else {if ((millis()-heure) >   8100000){reglages_sorties(1,1,1,1,0,0,1);} // 10h 15mn 
else {if ((millis()-heure) >   7200000){reglages_sorties(0,1,1,1,1,1,0);} // 10h 00mn
else {if ((millis()-heure) >    900000){reglages_sorties(1,1,1,1,1,1,1);} //  8h 15mn
else {if ((millis()-heure) >      1000){reglages_sorties(1,1,1,1,0,1,0);} //  8h 00mn
}}}}}}}}}}}}}}}}}}

void reglages_sorties(byte serre,byte david, byte aspersion,byte tomates,byte geantes,byte eau,byte pompe)
{
  affichage(serre,david,aspersion,tomates,geantes,eau,pompe);
digitalWrite(Serre,     serre);
digitalWrite(David,     david);
digitalWrite(Aspersion, aspersion);
digitalWrite(Tomates,   tomates);
digitalWrite(Geantes,   geantes);
digitalWrite(Eau,       eau);
digitalWrite(Pompe,     pompe);
}

void affichage(byte serre,byte david, byte aspersion,byte tomates,byte geantes,byte eau,byte pompe)
{
Serial.print(millis()-heure);Serial.print("...parametres = ");
Serial.print(serre);Serial.print(", ");Serial.print(david);Serial.print(", ");
Serial.print(aspersion);Serial.print(", ");Serial.print(tomates);Serial.print(", ");
Serial.print(geantes);Serial.print(", ");Serial.print(eau);Serial.print(", ");
Serial.println(pompe);
}

Super merci

Je vais faire mon programme d’ici peu.
L’incorporation d’une horloge est également possible alors, je n’en ai pas avec moi mais il serait préférable peut être d’en installer une directement ?