Aide avant achat

Bonjour,

voila pour un aquarium, je souhaite automatiser certain fonction (allumage, extinction) dans des laps de temps programmé.

Donc je pense que l'arduino peut me faire ca et je voudrais confirmation sur l'achat.

Donc les contrainte c'est que j'ai plusieurs tension pour les appareil piloté (220V, 12V et 5V).

Donc je vais acheter une barre de relais: http://www.ebay.fr/itm/151186014451?ssPageName=STRK:MEWAX:IT&_trksid=p3984.m1423.l2649

Une carte arduino nanoV3: http://www.ebay.fr/itm/Nano-V3-0-ATmega328-5V-16M-Micro-Controleur-CH340G-Board-USB-Cable-pour-Arduino-/261667909040?pt=FR_YO_MaisonJardin_Bricolage_ElectroniqueComposants&hash=item3cec9f6db0

Donc si je comprend bien, il me faut un module horloge : http://www.ebay.fr/itm/Module-tiny-RTC-DS1307-I2C-horloge-Real-Time-Clock-Arduino-DIY-/321444446504?pt=FR_YO_MaisonJardin_Bricolage_ElectroniqueComposants&hash=item4ad7950128

Merci de votre aide pour mon projet.

  • la barre de relais : j’aurais préféré en 12v, comme tu disposes de cette tension, mais ça marchera. Très bien les optocoupleurs.

  • le module arduino nano : très bon choix, cependant,

  • si tu ne veux pas le monter sur un breadboard, choisis un modèle où les barrettes ne sont pas soudées

  • le cordon usb est court et épais, ça peut être gênant. Pas nécessaire si tu disposes déjà d’un cordon mini usb

  • attention à l’inversion PB4 <-> PB3 sur les clones

  • le module rtc : pas forcément nécessaire car il y a un quartz sur l’arduino, de meilleurs spécialistes préciseront la chose, mais je pense que cet achat peut du-moins être différé

Le module horloge RTC conserve l'heure exacte même en cas de coupure de tension sur l'arduino (sinon son horloge interne repart à zéro).

Il y a aussi la solution DCF77, qui te permet de te mettre à date et heure UTC en 1 ou 2 minutes. Ca monopolise quelques ressources, mais l'avantage est qu'aucune intervention humaine n'est nécessaire... il suffit de synchroniser un compteur soft, quitte à utiliser le récepteur DCF77 une fois par jour et à chaque démarrage de l'arduino...

http://www.aurel32.net/elec/dcf77.php

Yep!

Super le DCF77 !

Mais çà dépend de la précision recherchée, un simple montage quartz + 4060 peut suffire parfois.

La dernière option consiste, si le montage est constamment relié à un pc, à utiliser la fonction ntp de l'ordinateur pour synchroniser (librairie time) la date et l'heure.

@+

Zoroastre.

Merci de vos réponses.

J'avais un bug pour me connecter mais c'est revenu a la normale.

Donc, j'ai acheter le matériel sans voir vos réponses.

Donc j'ai:

  • un arduino mega 2560 R3 avec bornier fils Dupont
  • un IIC RTC DS1307 AT24C32 (enfin sur la puce il y a de marqué : ds3231SM)
  • un bornier 8 relais (pour le 5V pas de problème, j'utilise une alim pc pour le 12V qui pourra me fournir le 5V également pour le bornier de relais)
  • du fils Dupont

Donc j'ai câblé le rtc mais pas moyen de le faire enregistrer l'heure.

J'arrive à le faire marcher, mais des que l'arduino reboot ou s'éteint, il revient sur l'heure de réglage.

Mon code:

//Arduino 1.0+ Only

//Arduino 1.0+ Only

include "Wire.h"

define DS1307_ADDRESS 0x68

byte zero = 0x00; //workaround for issue #527

void setup(){

Wire.begin();

Serial.begin(9600);

setDateTime(); //MUST CONFIGURE IN FUNCTION

}

void loop(){

printDate();

delay(1000);

}

void setDateTime(){

byte second = 00; //0-59

byte minute = 22; //0-59

byte hour = 22; //0-23

byte weekDay = 3; //1-7

byte monthDay = 17; //1-31

byte month = 12; //1-12

byte year = 14; //0-99

Wire.beginTransmission(DS1307_ADDRESS);

Wire.write(zero); //stop Oscillator

Wire.write(decToBcd(second));

Wire.write(decToBcd(minute));

Wire.write(decToBcd(hour));

Wire.write(decToBcd(weekDay));

Wire.write(decToBcd(monthDay));

Wire.write(decToBcd(month));

Wire.write(decToBcd(year));

Wire.write(zero); //start

Wire.endTransmission();

}

byte decToBcd(byte val){

// Convert normal decimal numbers to binary coded decimal

return ( (val/10*16) + (val%10) );

}

byte bcdToDec(byte val) {

// Convert binary coded decimal to normal decimal numbers

return ( (val/16*10) + (val%16) );

}

void printDate(){

// Reset the register pointer

Wire.beginTransmission(DS1307_ADDRESS);

Wire.write(zero);

Wire.endTransmission();

Wire.requestFrom(DS1307_ADDRESS, 7);

int second = bcdToDec(Wire.read());

int minute = bcdToDec(Wire.read());

int hour = bcdToDec(Wire.read() & 0b111111); //24 hour time

int weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday

int monthDay = bcdToDec(Wire.read());

int month = bcdToDec(Wire.read());

int year = bcdToDec(Wire.read());

//print the date EG 3/1/11 23:59:59

Serial.print(month);

Serial.print("/");

Serial.print(monthDay);

Serial.print("/");

Serial.print(year);

Serial.print(" ");

Serial.print(hour);

Serial.print(":");

Serial.print(minute);

Serial.print(":");

Serial.println(second);

}

jl23: ...

  • un IIC RTC DS*1307* AT24C32 (enfin sur la puce il y a de marqué : ds*3231*SM)

bonsoir je ne regarde pas maintenant , mais AMHA la gestion I²C (registres) d'un DS1307 n'est pas exactement la meme que celle d'un DS3231.

regarde vers ça au moins pour verifier lib DS3231/32

Re, C'est normal, à chaque reset tu ré-écrits la même heure dans ton RTC. Il faut commenter (//setDateTime(); ). L'opération setDateTime(); est à faire qu'une seule fois. @+

Ok donc je lance le programme une fois pour le réglage de l'heure puis après je relance en mettant //setDateTime();

C'est bien ca.

Désolé mais je suis dans le arduino depuis 3 jours. Dur a tout emmagasiner.

En faite, mon programme sera pour faire marcher un bornier relais ( 8 en tout) a des heures bien précise. C'est pour une automatisation d'un aquarium.

Je mettrais ma ligne de commande relais ce soir, pour voir déjà ou je mets les pieds :).

Merci.

Bonjour,

jl23: C'est bien ca.

Oui :)

C’est bon, le rtc garde bien l’heure maintenant :).

Donc mon but est de activer à 1 ou 0 une sortie arduino à une heure définie pour activer un relais (8 au total).

Comme je débute, et après des heures de recherche j’arrive à voir à peut près ce qu’il me faut. Enfin je crois.

Voici mon code pour le moment:

#include <RTClib.h>

const int output = 48;
boolean etat48 = 0;

void setup() {
Serial.begin(9600);
pinMode(48, OUTPUT);
}

void loop(){

if (hour() == 09 && minute() == 30)
etat48=!etat48; // inverse l’état du relais
digitalWrite(48,etat48); // met la broche de commande dans l’état voulu

if (hour() == 19 && minute() == 45)
etat48=!etat48; // inverse l’état du relais
digitalWrite(48,etat48);
}

Bien sur je sais que ca ne marche pas vu que je n’arrive pas a compiler :(.

Yep!

Quel erreur te retourne le logiciel ?

This report would have more information with "Show verbose output during compilation" enabled in File > Preferences. Arduino: 1.0.6 (Windows 7), Board: "Arduino Mega 2560 or Mega ADK" prog.ino:13:17: error: invalid digit "9" in octal constant In file included from prog.ino:1: C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:12: error: expected )' before 't' C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:13: error: expected)' before 'year' C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:17: error: expected ',' or '...' before '*' token C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:17: error: ISO C++ forbids declaration of '__FlashStringHelper' with no type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:18: error: 'uint16_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:19: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:20: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:21: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:22: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:23: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:24: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:29: error: 'uint32_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:36: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:42: error: expected )' before 'seconds' C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:43: error: expected)' before 'days' C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:45: error: 'int16_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:46: error: 'int8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:47: error: 'int8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:48: error: 'int8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:49: error: 'int32_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:55: error: 'int32_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:63: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:65: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:69: error: 'uint8_t' does not name a type C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:70: error: 'uint8_t' has not been declared C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:70: error: 'uint8_t' has not been declared C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:70: error: 'uint8_t' has not been declared C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:71: error: 'uint8_t' has not been declared C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:71: error: 'uint8_t' has not been declared C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:72: error: 'uint8_t' has not been declared C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:72: error: 'uint8_t' has not been declared C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:72: error: 'uint8_t' has not been declared prog.ino: In function 'void loop()': prog:13: error: 'hour' was not declared in this scope prog:13: error: 'minute' was not declared in this scope prog:17: error: 'hour' was not declared in this scope prog:17: error: 'minute' was not declared in this scope

A ok, il faut que je déclare les variables du temps c'est bien ca ? Pourtant j'ai telecharger sur un site la librairie du rtc (RTClib.h)

La librairie est bourrée d'erreur apparement !!!

Tu l'as récupéré où ?

EDIT : Tu as bien inclu la librairie dans ton sketch ??

Oui elle est declaré.

Bon une erreur d’ecriture apparement mais j’ai une autre erreur:

#include <RTClib.h>

const int output = 48;
boolean etat48 = 0;

void setup() {
Serial.begin(9600);
pinMode(48, OUTPUT);
}

void loop(){

if (now.hour() == 9 && now.minute() == 30 && now.second() == 00)
etat48=!etat48; // inverse l’état du relais
digitalWrite(48,etat48); // met la broche de commande dans l’état voulu

if (now.hour() == 19 && now.minute() == 0 && now.second() == 00)
etat48=!etat48; // inverse l’état du relais
digitalWrite(48,etat48);
}

Sur la ligne if (now.hour() == 9 && now.minute() == 30 && now.second() == 00)

erreur:

This report would have more information with
“Show verbose output during compilation”
enabled in File > Preferences.
Arduino: 1.0.6 (Windows 7), Board: “Arduino Mega 2560 or Mega ADK”
In file included from prog.ino:1:
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:12: error: expected )' before 't' C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:13: error: expected )’ before ‘year’
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:17: error: expected ‘,’ or ‘…’ before ‘*’ token
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:17: error: ISO C++ forbids declaration of ‘__FlashStringHelper’ with no type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:18: error: ‘uint16_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:19: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:20: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:21: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:22: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:23: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:24: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:29: error: ‘uint32_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:36: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:42: error: expected )' before 'seconds' C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:43: error: expected )’ before ‘days’
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:45: error: ‘int16_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:46: error: ‘int8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:47: error: ‘int8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:48: error: ‘int8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:49: error: ‘int32_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:55: error: ‘int32_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:63: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:65: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:69: error: ‘uint8_t’ does not name a type
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:70: error: ‘uint8_t’ has not been declared
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:70: error: ‘uint8_t’ has not been declared
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:70: error: ‘uint8_t’ has not been declared
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:71: error: ‘uint8_t’ has not been declared
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:71: error: ‘uint8_t’ has not been declared
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:72: error: ‘uint8_t’ has not been declared
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:72: error: ‘uint8_t’ has not been declared
C:\Users\Lecordier\Documents\Arduino\libraries\RTClib-master/RTClib.h:72: error: ‘uint8_t’ has not been declared
prog.ino: In function ‘void loop()’:
prog:13: error: ‘now’ was not declared in this scope
prog:17: error: ‘now’ was not declared in this scope

Attends de l'aide de quelqu'un d'autre.

Personnellement j'utilise la librairie Time : http://playground.arduino.cc/Code/Time

Dans laquelle on retrouve des fonctions (peut-être communes à toutes les librairies) hour(), minute(), now().

Bon courage.

@+

Zoroastre.

J'ai utilisé ta librairie est c'est pareil.

C'est plus compliqué que prévu :s

j’ai un peu l’impression que tu fait un mix de ton premier programme qui n’utilise pas de librairie et ton second qui est sensé en utiliser une…

je viens de m’amuser à essayer d’intégrer ton soft dans ton premier programme, il compile mais pas vérifié s’il fonctionne (pas à l’abri d’une erreur), essai voir ce bout de code :

#include "Wire.h"

#define DS1307_ADDRESS 0x68

byte zero = 0x00; //workaround for issue #527
  // déclarations faites en tête pour être globales
  int second;
  int minute;
  int hour;
  int weekDay;
  int monthDay;
  int month;
  int year;
  
  // tes déclarations
  const int output = 48;
  boolean etat48 = 0;
   
//-------------------------------------    
void setup()
{

  Wire.begin();
  Serial.begin(9600);
  //setDateTime(); //ligne a décommenter pour mise à l'heure
  pinMode(48, OUTPUT);

}
//-------------------------------------
void loop()
{
  // lancement de la lecture de l'heure
  printDate();
  
  // ton programme
  if (hour == 9 && minute == 30 && second == 00)
  etat48=!etat48; // inverse l'état du relais
   digitalWrite(48,etat48); // met la broche de commande dans l'état voulu
  
  if (hour == 19 && minute == 0 && second == 00)
  etat48=!etat48; // inverse l'état du relais
  digitalWrite(48,etat48);
   
  delay(100);
}
//-------------------------------------

void setDateTime()
{
  // modifié en supprimant les déclarations car faites en tête pour être globales
  byte second =      00; //0-59
  byte minute =      22; //0-59
  byte hour =        22; //0-23
  byte weekDay =     3; //1-7
  byte monthDay =    17; //1-31
  byte month =       12; //1-12
  byte year  =       14; //0-99
  
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero); //stop Oscillator
  Wire.write(decToBcd(second));
  Wire.write(decToBcd(minute));
  Wire.write(decToBcd(hour));
  Wire.write(decToBcd(weekDay));
  Wire.write(decToBcd(monthDay));
  Wire.write(decToBcd(month));
  Wire.write(decToBcd(year));
  Wire.write(zero); //start
  Wire.endTransmission();
}
//-------------------------------------
byte decToBcd(byte val)
{
// Convert normal decimal numbers to binary coded decimal
  return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val)  {
// Convert binary coded decimal to normal decimal numbers
  return ( (val/16*10) + (val%16) );
}
//-------------------------------------
void printDate()
{
  // Reset the register pointer
  Wire.beginTransmission(DS1307_ADDRESS);
  Wire.write(zero);
  Wire.endTransmission();
  Wire.requestFrom(DS1307_ADDRESS, 7);

  // modifié en supprimant les déclarations car faites en tête pour être globales
  second = bcdToDec(Wire.read());
  minute = bcdToDec(Wire.read());
  hour = bcdToDec(Wire.read() & 0b111111); //24 hour time
  weekDay = bcdToDec(Wire.read()); //0-6 -> sunday - Saturday
  monthDay = bcdToDec(Wire.read());
  month = bcdToDec(Wire.read());
  year = bcdToDec(Wire.read());

  //print the date EG   3/1/11 23:59:59
  Serial.print(month);
  Serial.print("/");
  Serial.print(monthDay);
  Serial.print("/");
  Serial.print(year);
  Serial.print(" ");
  Serial.print(hour);
  Serial.print(":");
  Serial.print(minute);
  Serial.print(":");
  Serial.println(second);
}

C'est bon ca compil :) merci.

Donc apres si je rajoute des sortie arduino (il m'en faut 8 je rajoute les uns sous les autres:

const int output = 49; boolean etat49 = 0; etc....

pinMode(49, OUTPUT); etc....

if (hour == 9 && minute == 30 && second == 00) etat49=!etat49; // inverse l'état du relais digitalWrite(49,etat49); // met la broche de commande dans l'état voulu

if (hour == 19 && minute == 0 && second == 00) etat49=!etat49; // inverse l'état du relais digitalWrite(49,etat49);

etc...etc...

Oui si les relais fonctionnent à la meme heure je peut faire:

if (hour == 9 && minute == 30 && second == 00) etat48=!etat48; // inverse l'état du relais etat49=!etat49; digitalWrite(48,etat48); // met la broche de commande dans l'état voulu digitalWrite(49,etat49); etc...

if (hour == 19 && minute == 0 && second == 00) etat48=!etat48; // inverse l'état du relais etat49=!etat49; digitalWrite(48,etat48); digitalWrite(49,etat49); etc....

Merci grandement de ton aide :)

tip-top si mon petit post t’as permis d’avancer ! :smiley:

ce que tu décris devrais effectivement être une solution qui fonctionne,
je me permet néanmoins (avec mon niveau de newbie) une ou deux petites remarques :

  • je ne pense pas qu’inverser les sorties avec des etat=!etat soit le plus approprié, imagine le cas suivant :
    ton test pour éteindre est à 20h00, il est 20h01, ton éclairage est donc arrêté.
    Pour une raison ou une autre (chgt d’heure par ex), tu fait une mise à l’heure manuelle en la réglant a 19h00. Arrivé à 20h00, tu vas inverser la sortie et allumer ton aquarium jusqu’au lendemain matin. En fait tu auras inversé les cycles jours/nuit…
    Il me semble donc plus intéressant de rester basique et faire etat=1 lorsqu’il faut allumer et etat=0 quand tu veux éteindre.

  • dans la même veine, je préfère faire les tests de temps sur le principe action quand time comprise entre début et fin plutôt que sur l’égalité time = début ou time=fin.
    ce qui donnerais un truc du style :
    si début > time et fin < time alors allumé sinon éteint
    la raison est que Murphy passant toujours là où on l’attends pas, il y auras toujours un cas où le test d’égalité ne seras pas exécuté.
    La contrainte avec ce raisonnement est qu’il faut créer une variable “time” qui représente les heures ET les minutes, ça pourrait être du style time= (heure100)+minute ce qui se représenterait sous la forme 0810 pour 8h10 ou sous la forme d’un compteur journalier de minute (heure60)+minute.
    Dans mon cas, j’utilise un compteur de paire de seconde (s’incrémente de 1 toutes les 2 s)

et d’expérience, tu te rendras vite compte qu’un afficheur lcd et quelques boutons seront bien pratiques pour voir l’état de ton automate / lire des températures ou autres et faire des actions telles que régler l’heure ou les durées d’allumage de ton aqua (désolé, pour le coup là en rajoutes à ton projet… :wink: )