[conseil] Gestion aquarium pour projet perso

Bonjour a tous.

Récemment inspiré par un amis qui pratique la domotique avec des arduinos , je me lance dans l'aventure.
J'ai chez moi un aquarium de 600L et je me suis dit pourquoi ne pas automatisé tout ça!!!
Pour le moment je souhaite juste géré de l’éclairage ainsi que des pompes de brassage.
Par la suite je pense aussi géré les pompes de filtration et la qualité de l'eau.

Je suis donc novice et j'ai commencé par lire l’intégrale de eskimon qui est par ailleurs superbement réalisé.

Je me suis donc lancé et j'ai écrit le code ci_dessous en m'aidant d'infos trouvée par ci par la sur le net.

Il y a juste un endroit ou je bloque c'est sur les rampe de LED.

J'arrive a les faire s'allumé progressivement sur 59 minutes a partir d'une certaine heure (heure pile sans minute)
et a partir du moment ou je veut faire démarré de la demi heure(par exemple) j'ai une rampe sur 29 minutes et pas sur 1 heure complète.( par exemple de 8h30 a 9h30).

Auriez vous quelques conseils ou solutions a m'apportées?

Le code joint est le code est celui fonctionnant. Il n'est peut être pas très propre a lire pour des experts.

D'avance merci.

Bonne journée.

Aquaduino_V1_3.ino (10.4 KB)

bonjour,
tu peux utiliser le && pour intégrer les minutes

if (now.hour() == LSH && now.minute() == 30 && now.second() == 0) 
{

lisez le sujet AQUABOUN'S /// GESTION D'AQUARIUM RECIFAL ci dessous

l'auteur pointe vers un site web où il a partagé pas mal de choses

bonsoir.

merci pour les infos.

J'ai tenter en ajoutant les minutes mais dès que je passe l'heure de depart ca passe en full ou a 0.

Bonsoir a tous.

En lisant le post a djbouns j'ai realiser mon erreur. :fearful: :fearful:
J'ai donc transformé mon heure en entier. :smiley: :smiley:

H = now.hour();
  H = (H*3600);
  M = (now.minute()*60);
  S = now.second();
  time = (H+M+S);

Ensuite il ne me restait plus qu'a créer des variables.

  long LSH_rouge = 15;
  int LSM_rouge = 0;
  int LSS_rouge = 0;
  long LEVER_rouge;
  long DUREE_LEVER_rouge = 7200;//H*3600+M*60+S
  long FIN_LEVER_rouge;

Et les exploités.

LEVER_rouge = (LSH_rouge*3600 + LSM_rouge*60 + LSS_rouge);
  COUCHER_rouge = (CSH_rouge*3600 + CSM_rouge*60 + CSS_rouge);
  FIN_LEVER_rouge = (LEVER_rouge + DUREE_LEVER_rouge);
  FIN_COUCHER_rouge = (COUCHER_rouge + DUREE_COUCHER_rouge);

Et

allumage_rouge = (map( time, LEVER_rouge, FIN_LEVER_rouge, 0, 255));
  extinction_rouge = (map( time, COUCHER_rouge, FIN_COUCHER_rouge, 255, 0));
  pourcentage_allumage_rouge = (map(allumage_rouge, 0, 255, 0, 100));
  pourcentage_extinction_rouge = (map(extinction_rouge, 255, 0, 100, 0));
  
if ((time >= LEVER_rouge) && (time < FIN_LEVER_rouge))
  {
    analogWrite (rampe_led_rouge, allumage_rouge);
    lcd.setCursor(0, 1);
    lcd.print("R:");
      if(pourcentage_allumage_rouge<100) lcd.print(" ");
      if(pourcentage_allumage_rouge<10) lcd.print(" ");
    lcd.print(pourcentage_allumage_rouge);
    lcd.print("%");
  }

  else if ((time >= COUCHER_rouge) && (time < FIN_COUCHER_rouge))
  {
    analogWrite (rampe_led_rouge, extinction_rouge);
    lcd.setCursor(0, 1);
    lcd.print("R:");
      if(pourcentage_extinction_rouge<100) lcd.print(" ");
      if(pourcentage_extinction_rouge<10) lcd.print(" ");
    lcd.print(pourcentage_extinction_rouge);
    lcd.print("%");
  }

  else if ((time > FIN_LEVER_rouge) && (time < COUCHER_rouge))
  {
    analogWrite (rampe_led_rouge, 0);
    lcd.setCursor(0, 1);
    lcd.print("jour   ");
  }
  
  else
  {
    analogWrite (rampe_led_rouge, 0);
    lcd.setCursor(0, 1);
    lcd.print("nuit   ");
  }

Et la impec tout fonctionne. 8)
Le code n'est peut etre pas tres beau a lire. :zipper_mouth_face: Comme dit precedemment je m'auto-forme.

Sinon Est il possible de sauvegarder mes valeur modifiée pour les heures minutes etc dans la carte (en cas de coupure) ou doit on passer par l'adjonction d'une sd?

Regardez la partie discussion sur EEPROM dans l’autre post de djbouns

Merci JML j'y vais de ce pas.
Tres instructifs les topic a djbouns.

Regardez mon bout de code du post 117