Aide avant achat

Powac powac , un aspirine garçon.

Je suis perdu la :frowning:

En tout cas merci de votre aide :slight_smile:

Re,
Où se situe ton problème ?

Mon problème c'est que je vois ce que je veux faire, j'arrive a voir la façon de faire, mais je n'arrive pas à le faire (le programmer quoi).

Je n'arrive pas a mettre tous les bouts ensembles.

Re,
Juste une petite précision lorsque tu écris :

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

Il n'y a que la ligne qui suit ton if qui est exécutée lorsque la condition est vrai.
Pour que les deux lignes soient exécutées il faut :

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
}

Les parenthèses sont obligatoires.
@+

Donc voici un essai:

#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 = 30;
  boolean etat30 = 0;  
    const int output = 31;
  boolean etat31 = 0;  
    const int output = 32;
  boolean etat32 = 0;  
    const int output = 33;
  boolean etat33 = 0;  
    const int output = 34;
  boolean etat34 = 0;  
    const int output = 35;
  boolean etat35 = 0;  
    const int output = 36;
  boolean etat36 = 0;  
    const int output = 37;
  boolean etat37 = 0;
  
   
//-------------------------------------    
void setup()
{

  Wire.begin();
  Serial.begin(9600);
  //setDateTime(); //ligne a décommenter pour mise à l'heure
  pinMode(30, OUTPUT); //diffusion co2
  pinMode(31, OUTPUT); //led 6500K
  pinMode(32, OUTPUT); //led 4300K
  pinMode(33, OUTPUT); //led bleu
  pinMode(34, OUTPUT); //ventilateur 1
  pinMode(35, OUTPUT); //ventilateur 2
  pinMode(36, OUTPUT);
  pinMode(37, OUTPUT);

}
//-------------------------------------
void loop()
{
  // lancement de la lecture de l'heure
  printDate();
  
  // ton programme
  
  // diffusion co2
   if (hour == 9 && minute == 00 && second == 00)
  etat30=1; 
   digitalWrite(30,etat30); 
  
  if (hour == 18 && minute == 0 && second == 00)
  etat30=0; 
  digitalWrite(30,etat30);
  
  //led 6500K
   if (hour == 9 && minute == 45 && second == 00)
  etat31=1; 
   digitalWrite(31,etat31); 
  
  if (hour == 19 && minute == 0 && second == 00)
  etat31=0; 
  digitalWrite(31,etat31);
  
  //led 4300K
  if (hour == 8 && minute == 30 && second == 00)
  etat32=1; 
   digitalWrite(32,etat32); 
  
  if (hour == 20 && minute == 30 && second == 00)
  etat32=0; 
  digitalWrite(32,etat32);
  
  //led bleu
  if (hour == 7 && minute == 30 && second == 00)
  etat33=1; 
   digitalWrite(33,etat33); 
  
  if (hour == 22 && minute == 30 && second == 00)
  etat33=0; 
  digitalWrite(33,etat33);
  
  //ventilateur 1  
  if (hour == 8 && minute == 30 && second == 00)
  etat34=1; 
   digitalWrite(34,etat34); 
  
  if (hour == 21 && minute == 0 && second == 00)
  etat34=0; 
  digitalWrite(34,etat34);
  
  //ventilateur 2
  if (hour == 7 && minute == 00 && second == 00)
  etat35=1; 
   digitalWrite(35,etat35); 
  
  if (hour == 23 && minute == 0 && second == 00)
  etat35=0; 
  digitalWrite(35,etat35);
   
  
  
}
//-------------------------------------

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);
}

Donc, je n'arrive pas à compiler. Une erreur sur les constante

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 (ATmega1280)"
test1:18: error: expected unqualified-id before '{' token
test1.ino: In function 'void loop()':
test1:65: error: 'etat30' was not declared in this scope
test1:66: error: 'etat30' was not declared in this scope
test1:74: error: 'etat31' was not declared in this scope
test1:75: error: 'etat31' was not declared in this scope
test1:83: error: 'etat32' was not declared in this scope
test1:84: error: 'etat32' was not declared in this scope
test1:92: error: 'etat33' was not declared in this scope
test1:93: error: 'etat33' was not declared in this scope
test1:101: error: 'etat34' was not declared in this scope
test1:102: error: 'etat34' was not declared in this scope
test1:110: error: 'etat35' was not declared in this scope
test1:111: error: 'etat35' was not declared in this scope
test1.ino: At global scope:
test1:123: error: expected unqualified-id before '{' token

Je verrais par la suite l'exemple avec :

const int heure_debut = 9;
const int minute_debut = 30;

const int heure_fin = 21;
const int minute_fin = 15;

const int horaire_debut = heure_debut * 60 + minute_debut;
const int horaire_fin = heure_fin * 60 + minute_fin;

...

int etat_led = 0;

...

loop()
{
...
int horaire = heure_ds1307 * 60 + minute_ds1307;

if ((horaire_debut <= horaire) && (horaire <= horaire_fin)
{
if (etat_led == 0)
{
AllumerLed();
etat_led = 1;
}
}
else
{
if (etat_led != 0)
{
EteindreLed();
etat_led = 0;
}
}

Car la je comprend pas comment faire avec plusieurs heures de réglages différentes.

Re,
Dans ton soft tu ne peux pas déclarer 8 fois la même constante, elles ont forcément des noms différents.

const int output = 30;
  boolean etat30 = 0; 
    const int output = 31;
  boolean etat31 = 0; 
    const int output = 32;
  boolean etat32 = 0; 
    const int output = 33;
  boolean etat33 = 0; 
    const int output = 34;
  boolean etat34 = 0; 
    const int output = 35;
  boolean etat35 = 0; 
    const int output = 36;
  boolean etat36 = 0; 
    const int output = 37;
  boolean etat37 = 0

En plus cette syntaxe n'est pas admise :

void //setDateTime()

Pour que cela soit plus clair et simple pour tout le monde, il faut mettre le soft entre balises code (voir icône feuille texte avec le signe plus).
@+

Ok c'est bon.

const int output1 = 30;
boolean etat30 = 0;
const int output2 = 31;
boolean etat31 = 0;
const int output3 = 32;
boolean etat32 = 0;
const int output4 = 33;
boolean etat33 = 0;
const int output5 = 34;
boolean etat34 = 0;
const int output6 = 35;
boolean etat35 = 0;
const int output7 = 36;
boolean etat36 = 0;
const int output8 = 37;
boolean etat37 = 0;

J'ai supprimé les // et ca compile.

Je testerai pour voir déjà. :slight_smile:

Merci.

désolé, moi qui t'ai induit d'erreur pour le coup de la constante output....

tu peux virer toutes les lignes

" const int output = "

elles sont de plus inutiles...

@+

PS : sympa ton bac ! :wink:

Bah si je les enlèves, la ca compile plus:

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 (ATmega1280)"
test2ok.ino: In function 'void loop()':
test2ok:43: error: 'etat30' was not declared in this scope
test2ok:44: error: 'etat30' was not declared in this scope
test2ok:52: error: 'etat31' was not declared in this scope
test2ok:53: error: 'etat31' was not declared in this scope
test2ok:61: error: 'etat32' was not declared in this scope
test2ok:62: error: 'etat32' was not declared in this scope
test2ok:70: error: 'etat33' was not declared in this scope
test2ok:71: error: 'etat33' was not declared in this scope
test2ok:79: error: 'etat34' was not declared in this scope
test2ok:80: error: 'etat34' was not declared in this scope
test2ok:88: error: 'etat35' was not declared in this scope
test2ok:89: error: 'etat35' was not declared in this scope

Merci du compliment pour mon bac :slight_smile:

Tu n'aurais pas fait un "nettoyage" un peu trop expéditif par hasard ?

je parlais de remplacer ces lignes

  const int output1 = 30;
boolean etat30 = 0;  
  const int output2 = 31;
boolean etat31 = 0;  
  const int output3 = 32;
boolean etat32 = 0;  
  const int output4 = 33;
boolean etat33 = 0;  
  const int output5 = 34;
boolean etat34 = 0;  
  const int output6 = 35;
boolean etat35 = 0;  
  const int output7 = 36;
boolean etat36 = 0;  
  const int output8 = 37;
boolean etat37 = 0;

par celles-ci

  boolean etat30 = 0; 
  boolean etat31 = 0; 
  boolean etat32 = 0; 
  boolean etat33 = 0; 
  boolean etat34 = 0; 
  boolean etat35 = 0; 
  boolean etat36 = 0; 
  boolean etat37 = 0;

C'est bon :wink:

Bon, je fais un test donc, une fois dans le arduino, quand je fais le motoring, il y a un rafraichissement rapide de l'heure (ca rafraichi tous les 1/4 de seconde environ), je pense que sait du au 9600 baud.

Bonjour,

plutôt rassurant que tu observes un rafraichissement rapide de l'heure, juste la preuve que ton programme ne se bloque pas, ne vas pas se perdre dans une boucle sans fin ou pire ne passe pas son temps à attendre la fin d'un delay :slight_smile:

la vitesse de com n'y est donc pour rien, il faut juste garder en tête que ton programme est exécuté en permanence, j'entends par là que ton "arduino" exécute par conception ton programme de la façon suivante :

  • exécution du code contenu dans void setup() une seule et unique fois à la mise sous tension (ou plutôt à la mise en service)
  • exécution du code contenu dans void loop() du début à la fin, une fois arrivé à la fin il recommence au début et ainsi de suite et cela sans fin, la durée de cette boucle est juste l'image du temps nécessaire à exécuter ton code....

donc dans ton cas, il déroule ton "loop()" durant lequel il affiche l'heure, passe un certain temps à exécuter ton prg puis ré-affiche l'heure rapidement puisque ton programme ne met pas beaucoup de temps à s’exécuter...

Si tu veut limiter ce rafraichissement sans ralentir ton programme, tu pourrais essayer de n'afficher l'heure qu'au changement de seconde (et donc qu'une fois par seconde), une solution pour le faire serait de :

  • initialiser dans le setup une variable mem_ second a zero

puis dans le loop :

  • lire l'heure dans ton module DS1307
  • comparer les secondes lues dans le DS1307 avec mem_second
  • si second est différent de mem_second, ça veut dire que les secondes ont changées alors :
  • sauver dans mem_second la valeur courante de second
  • afficher l'heure

Fait attention si tu veux te lancer dans cette modif, je te conseille avant toute chose de bien comprendre ce que fait la routine printDate() et bien séparer les deux rôles qu'elle joue (lecture du DS1307 et affichage de l'heure)...

à toi si ça te dit ! :wink:

Re :smiling_imp:

Donc j'essais avec l'autre solution donné:

#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;
   
  
//heure co2  
const int heure_debut1 = 9;
const int minute_debut1 = 00;

const int heure_fin1 = 18;
const int minute_fin1 = 00;

const int horaire_debut1 = heure_debut1 * 60 + minute_debut1;
const int horaire_fin1 = heure_fin1 * 60 + minute_fin1;

//heure led1 6500K
const int heure_debut2 = 9;
const int minute_debut2 = 45;

const int heure_fin2 = 19;
const int minute_fin2 = 00;

const int horaire_debut2 = heure_debut2 * 60 + minute_debut2;
const int horaire_fin2 = heure_fin2 * 60 + minute_fin2;

//heure led2 4300K
const int heure_debut3 = 8;
const int minute_debut3 = 30;

const int heure_fin3 = 20;
const int minute_fin3 = 30;

const int horaire_debut3 = heure_debut3 * 60 + minute_debut3;
const int horaire_fin3 = heure_fin3 * 60 + minute_fin3;

//heure led3 bleu
const int heure_debut4 = 7;
const int minute_debut4 = 30;

const int heure_fin4 = 22;
const int minute_fin4 = 30;

const int horaire_debut4 = heure_debut4 * 60 + minute_debut4;
const int horaire_fin4 = heure_fin4 * 60 + minute_fin4;

//heure ventilateur V1
const int heure_debut5 = 8;
const int minute_debut5 = 30;

const int heure_fin5 = 21;
const int minute_fin5 = 00;

const int horaire_debut5 = heure_debut5 * 60 + minute_debut5;
const int horaire_fin5 = heure_fin5 * 60 + minute_fin5;

//heure ventilateur V2
const int heure_debut6 = 7;
const int minute_debut6 = 00;

const int heure_fin6 = 23;
const int minute_fin6 = 00;

const int horaire_debut6 = heure_debut6 * 60 + minute_debut6;
const int horaire_fin6 = heure_fin6 * 60 + minute_fin6;
  
  // etat des sorties
  int horaire = hour * 60 + minute;
  int etat_30 = 0;
  int etat_31 = 0;
  int etat_32 = 0;
  int etat_33 = 0;
  int etat_34 = 0;
  int etat_35 = 0;
  int etat_36 = 0;
  int etat_37 = 0;
         
 

//-------------------------------------    
void setup()
{

  Wire.begin();
  Serial.begin(9600);
  //setDateTime(); //ligne a décommenter pour mise à l'heure
  pinMode(30, OUTPUT); //diffusion co2
  pinMode(31, OUTPUT); //led 6500K
  pinMode(32, OUTPUT); //led 4300K
  pinMode(33, OUTPUT); //led bleu
  pinMode(34, OUTPUT); //ventilateur 1
  pinMode(35, OUTPUT); //ventilateur 2
  pinMode(36, OUTPUT);
  pinMode(37, OUTPUT);
    
}
//-------------------------------------
void loop()
{
  // lancement de la lecture de l'heure
  printDate();

    
  // diffusion co2

  if ((horaire_debut1 <= horaire) && (horaire < horaire_fin1))
{
    if (etat_30 == 0)
    {  
       //Allumer30();
       etat_30 = 1;
    }
  }
  else
  {
    if (etat_30 != 0)
    {
       //Eteindre30();
       etat_30 = 0;
    }
  
  //led 6500K
 if ((horaire_debut2 <= horaire) && (horaire < horaire_fin2))
  {
    if (etat_31 == 0)
    {
       //Allumer31();
       etat_31 = 1;
    }
  }
  else
  {
    if (etat_31 != 0)
    {
       //Eteindre31();
       etat_31 = 0;
    }
  
  //led 4300K
 if ((horaire_debut3 <= horaire) && (horaire < horaire_fin3))
  {
    if (etat_32 == 0)
    {
       //Allumer32();
       etat_32 = 1;
    }
  }
  else
  {
    if (etat_32 != 0)
    {
       //Eteindre32();
       etat_32 = 0;
    }
  
  //led bleu
 if ((horaire_debut4 <= horaire) && (horaire < horaire_fin4))
  {
    if (etat_33 == 0)
    {
       //Allumer33();
       etat_33 = 1;
    }
  }
  else
  {
    if (etat_33 != 0)
    {
       //Eteindre33();
       etat_33 = 0;
    }
  
  //ventilateur 1  
 if ((horaire_debut5 <= horaire) && (horaire < horaire_fin5))
  {
    if (etat_34 == 0)
    {
       //Allumer34();
       etat_34 = 1;
    }
  }
  else
  {
    if (etat_34 != 0)
    {
       //Eteindre34();
       etat_34 = 0;
    }
  
  //ventilateur 2
 if ((horaire_debut6 <= horaire) && (horaire < horaire_fin6))
  {
    if (etat_35 == 0)
    {
       //Allumer35();
       etat_35 = 1;
    }
  }
  else
  {
    if (etat_35 != 0)
    {
       //Eteindre35();
       etat_35 = 0;
    }
}



//-------------------------------------

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);
}

Ca ne compil pas :

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 (ATmega1280)"
final2.ino: In function 'void loop()':
final2:223: error: a function-definition is not allowed here before '{' token
final2:247: error: a function-definition is not allowed here before '{' token
final2:252: error: a function-definition is not allowed here before '{' token
final2:258: error: a function-definition is not allowed here before '{' token
final2:286: error: expected }' at end of input final2:286: error: expected }' at end of input
final2:286: error: expected }' at end of input final2:286: error: expected }' at end of input
final2:286: error: expected }' at end of input final2:286: error: expected }' at end of input

Ca me dit erreur sur la ligne:
void setDateTime()
{

De plus je l'ai pas modifié :s

Yep!

L'erreur est dans le loop(). Il te manque plein de parenthèses... Tu ouvres des if sans les fermer correctement. Il en manque pas mal !

@+

Zoroastre.

Merci, en effet j'avais oublié une } sous chaque if.

Et comme j'ai fais du copié, collé, elles manquaient à toutes. :slight_smile:

Maintenant ca compil :):):slight_smile:

#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;
  int horaire = hour * 60 + minute;
  
  
//heure co2  
const int heure_debut1 = 9;
const int minute_debut1 = 00;

const int heure_fin1 = 18;
const int minute_fin1 = 00;

const int horaire_debut1 = heure_debut1 * 60 + minute_debut1;
const int horaire_fin1 = heure_fin1 * 60 + minute_fin1;

//heure led1 6500K
const int heure_debut2 = 9;
const int minute_debut2 = 45;

const int heure_fin2 = 19;
const int minute_fin2 = 00;

const int horaire_debut2 = heure_debut2 * 60 + minute_debut2;
const int horaire_fin2 = heure_fin2 * 60 + minute_fin2;

//heure led2 4300K
const int heure_debut3 = 8;
const int minute_debut3 = 30;

const int heure_fin3 = 20;
const int minute_fin3 = 30;

const int horaire_debut3 = heure_debut3 * 60 + minute_debut3;
const int horaire_fin3 = heure_fin3 * 60 + minute_fin3;

//heure led3 bleu
const int heure_debut4 = 7;
const int minute_debut4 = 30;

const int heure_fin4 = 22;
const int minute_fin4 = 30;

const int horaire_debut4 = heure_debut4 * 60 + minute_debut4;
const int horaire_fin4 = heure_fin4 * 60 + minute_fin4;

//heure ventilateur V1
const int heure_debut5 = 8;
const int minute_debut5 = 30;

const int heure_fin5 = 21;
const int minute_fin5 = 00;

const int horaire_debut5 = heure_debut5 * 60 + minute_debut5;
const int horaire_fin5 = heure_fin5 * 60 + minute_fin5;

//heure ventilateur V2
const int heure_debut6 = 7;
const int minute_debut6 = 00;

const int heure_fin6 = 23;
const int minute_fin6 = 00;

const int horaire_debut6 = heure_debut6 * 60 + minute_debut6;
const int horaire_fin6 = heure_fin6 * 60 + minute_fin6;
  
  // etat des sorties
  
  int etat_30 = 0;
  int etat_31 = 0;
  int etat_32 = 0;
  int etat_33 = 0;
  int etat_34 = 0;
  int etat_35 = 0;
  int etat_36 = 0;
  int etat_37 = 0;
         
 

//-------------------------------------    
void setup()
{

  Wire.begin();
  Serial.begin(9600);
  //setDateTime(); //ligne a décommenter pour mise à l'heure
  pinMode(30, OUTPUT); //diffusion co2
  pinMode(31, OUTPUT); //led 6500K
  pinMode(32, OUTPUT); //led 4300K
  pinMode(33, OUTPUT); //led bleu
  pinMode(34, OUTPUT); //ventilateur 1
  pinMode(35, OUTPUT); //ventilateur 2
  pinMode(36, OUTPUT);
  pinMode(37, OUTPUT);
    
}
//-------------------------------------
void loop()
{
  // lancement de la lecture de l'heure
  printDate();

    
  // diffusion co2

  if ((horaire_debut1 <= horaire) && (horaire < horaire_fin1))
{
    if (etat_30 == 0)
    {  
       //Allumer30();
       etat_30 = 1;
    }
  }
  else
  {
    if (etat_30 != 0)
    {
       //Eteindre30();
       etat_30 = 0;
    }
  }
  //led 6500K
 if ((horaire_debut2 <= horaire) && (horaire < horaire_fin2))
  {
    if (etat_31 == 0)
    {
       //Allumer31();
       etat_31 = 1;
    }
  }
  else
  {
    if (etat_31 != 0)
    {
       //Eteindre31();
       etat_31 = 0;
    }
  }
  //led 4300K
 if ((horaire_debut3 <= horaire) && (horaire < horaire_fin3))
  {
    if (etat_32 == 0)
    {
       //Allumer32();
       etat_32 = 1;
    }
  }
  else
  {
    if (etat_32 != 0)
    {
       //Eteindre32();
       etat_32 = 0;
    }
  }
  //led bleu
 if ((horaire_debut4 <= horaire) && (horaire < horaire_fin4))
  {
    if (etat_33 == 0)
    {
       //Allumer33();
       etat_33 = 1;
    }
  }
  else
  {
    if (etat_33 != 0)
    {
       //Eteindre33();
       etat_33 = 0;
    }
  }
  //ventilateur 1  
 if ((horaire_debut5 <= horaire) && (horaire < horaire_fin5))
  {
    if (etat_34 == 0)
    {
       //Allumer34();
       etat_34 = 1;
    }
  }
  else
  {
    if (etat_34 != 0)
    {
       //Eteindre34();
       etat_34 = 0;
    }
  }
  //ventilateur 2
 if ((horaire_debut6 <= horaire) && (horaire < horaire_fin6))
  {
    if (etat_35 == 0)
    {
       //Allumer35();
       etat_35 = 1;
    }
  }
  else
  {
    if (etat_35 != 0)
    {
       //Eteindre35();
       etat_35 = 0;
    }
  }
}



//-------------------------------------

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);
}

Donc, des news :smiley:

J'ai cablé le tout, et roullement de tambour:::::::::::: ca ne marche pas :cry:

#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;
  int horaire = hour * 60 + minute;
  
  
//heure co2  
const int heure_debut1 = 9;
const int minute_debut1 = 00;

const int heure_fin1 = 18;
const int minute_fin1 = 00;

const int horaire_debut1 = heure_debut1 * 60 + minute_debut1;
const int horaire_fin1 = heure_fin1 * 60 + minute_fin1;

//heure led1 6500K
const int heure_debut2 = 9;
const int minute_debut2 = 45;

const int heure_fin2 = 19;
const int minute_fin2 = 00;

const int horaire_debut2 = heure_debut2 * 60 + minute_debut2;
const int horaire_fin2 = heure_fin2 * 60 + minute_fin2;

//heure led2 4300K
const int heure_debut3 = 8;
const int minute_debut3 = 30;

const int heure_fin3 = 20;
const int minute_fin3 = 30;

const int horaire_debut3 = heure_debut3 * 60 + minute_debut3;
const int horaire_fin3 = heure_fin3 * 60 + minute_fin3;

//heure led3 bleu
const int heure_debut4 = 7;
const int minute_debut4 = 30;

const int heure_fin4 = 22;
const int minute_fin4 = 30;

const int horaire_debut4 = heure_debut4 * 60 + minute_debut4;
const int horaire_fin4 = heure_fin4 * 60 + minute_fin4;

//heure ventilateur V1
const int heure_debut5 = 8;
const int minute_debut5 = 30;

const int heure_fin5 = 21;
const int minute_fin5 = 00;

const int horaire_debut5 = heure_debut5 * 60 + minute_debut5;
const int horaire_fin5 = heure_fin5 * 60 + minute_fin5;

//heure ventilateur V2
const int heure_debut6 = 7;
const int minute_debut6 = 00;

const int heure_fin6 = 23;
const int minute_fin6 = 00;

const int horaire_debut6 = heure_debut6 * 60 + minute_debut6;
const int horaire_fin6 = heure_fin6 * 60 + minute_fin6;
  
  // etat des sorties
  
  int etat_30 = 0;
  int etat_31 = 0;
  int etat_32 = 0;
  int etat_33 = 0;
  int etat_34 = 0;
  int etat_35 = 0;
  int etat_36 = 0;
  int etat_37 = 0;
         
 

//-------------------------------------    
void setup()
{

  Wire.begin();
  Serial.begin(9600);
  //setDateTime(); //ligne a décommenter pour mise à l'heure
  pinMode(30, OUTPUT); //diffusion co2
  pinMode(31, OUTPUT); //led 6500K
  pinMode(32, OUTPUT); //led 4300K
  pinMode(33, OUTPUT); //led bleu
  pinMode(34, OUTPUT); //ventilateur 1
  pinMode(35, OUTPUT); //ventilateur 2
  pinMode(36, OUTPUT);
  pinMode(37, OUTPUT);
    
}
//-------------------------------------
void loop()
{
  // lancement de la lecture de l'heure
  printDate();

    
  // diffusion co2

  if ((horaire_debut1 <= horaire) && (horaire < horaire_fin1))
{
    if (etat_30 == 0)
    {  
       //Allumer30();
       etat_30 = 1;
    }
  }
  else
  {
    if (etat_30 != 0)
    {
       //Eteindre30();
       etat_30 = 0;
    }
  }
  //led 6500K
 if ((horaire_debut2 <= horaire) && (horaire < horaire_fin2))
  {
    if (etat_31 == 0)
    {
       //Allumer31();
       etat_31 = 1;
    }
  }
  else
  {
    if (etat_31 != 0)
    {
       //Eteindre31();
       etat_31 = 0;
    }
  }
  //led 4300K
 if ((horaire_debut3 <= horaire) && (horaire < horaire_fin3))
  {
    if (etat_32 == 0)
    {
       //Allumer32();
       etat_32 = 1;
    }
  }
  else
  {
    if (etat_32 != 0)
    {
       //Eteindre32();
       etat_32 = 0;
    }
  }
  //led bleu
 if ((horaire_debut4 <= horaire) && (horaire < horaire_fin4))
  {
    if (etat_33 == 0)
    {
       //Allumer33();
       etat_33 = 1;
    }
  }
  else
  {
    if (etat_33 != 0)
    {
       //Eteindre33();
       etat_33 = 0;
    }
  }
  //ventilateur 1  
 if ((horaire_debut5 <= horaire) && (horaire < horaire_fin5))
  {
    if (etat_34 == 0)
    {
       //Allumer34();
       etat_34 = 1;
    }
  }
  else
  {
    if (etat_34 != 0)
    {
       //Eteindre34();
       etat_34 = 0;
    }
  }
  //ventilateur 2
 if ((horaire_debut6 <= horaire) && (horaire < horaire_fin6))
  {
    if (etat_35 == 0)
    {
       //Allumer35();
       etat_35 = 1;
    }
  }
  else
  {
    if (etat_35 != 0)
    {
       //Eteindre35();
       etat_35 = 0;
    }
  }
}



//-------------------------------------

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);
}

Quelle que soit l'heure, toutes les sorties de mon modules relais sont actives...

Encore besoin de vos lumières svp.

pas tout vérifié, mais manque à coup sur, un détail d'importance...

tu déclares bien tes sorties physiques en sortie
par ex : pinMode(30, OUTPUT); //diffusion co2

tu déclares bien les variables de sortie :
int etat_30 = 0;
les mets à jour :
if (etat_30 == 0)
{
//Allumer30();
etat_30 = 1;
}

mais tu ne met jamais tes sorties physiques à jour par rapport à ces variables..

il te manque donc en fin de programme (dans ton loop) la mise à jour de l'ensemble de tes sorties, par ex :

// mise à jour des sorties
digitalWrite(30,etat30);
digitalWrite(31,etat31);
..........

Je l'ai ajouté , ca compil pas:

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"
finalv2.ino: In function 'void loop()':
finalv2:223: error: 'etat30' was not declared in this scope
finalv2:224: error: 'etat31' was not declared in this scope
finalv2:225: error: 'etat32' was not declared in this scope
finalv2:226: error: 'etat33' was not declared in this scope
finalv2:227: error: 'etat34' was not declared in this scope
finalv2:228: error: 'etat35' was not declared in this scope