Wordclock

Bonjour à tous!

Je suis tout nouveau dans le monde d’arduino et je viens vous demander votre aide si vous êtes daccord.

Je fabrique actuellement une wordclock en suivant quelques tuto en j’en suis au codage de mon arduino.
Après vérification de mon programme j’ai pleins d’erreurs (je m’y attendais car je me suis aider de différents tuto) seulement je ne comprends pas certaine erreurs

Pour faire simple mon horloge aura simplement deux boutons:
-le premier pour régler les minutes en faisant plus 5 à chaque pression
-le deuxième pour régler les heures en faisant plus 1 à chaque pression

Je suis en possession d’un arduino Mega qui fera allumer chaque mot avec une sortie
J’ai acheter un module RTC DS3231 (et c’est surtout la que sa coince)

J’espère que mes explications sont assez claire pour que vous puissiez m’aider.

Je vous remercier d’avance pour votre aide et vos remarques

#include <config.h>
#include <ds3231.h>

struct ts t;

int rtc[7];
int Bouton1=1; //+1 heure
int Bouton2=2; //+5 minutes
int Minuit=3;
int Heure1=4;
int Heure2=5;
int Heure3=6;
int Heure4=7;
int Heure5=8;
int Heure6=9;
int Heure7=10;
int Heure8=11;
int Heure9=12;
int Heure10=13;
int Heure11=14;
int Midi=15;
int Minute5=16;
int Minute10=17;
int Quart=18;
int Minute20=19;
int Demi=20;
int Et=21;
int Moins=22;




void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  Wire.begin();
  DS3231_init(DS3231_INTCN);
 
  t.hour=14; // données pour mettre à l'heure l'horloge
  t.min=55;
  t.sec=0;
  t.mday=20;
  t.mon=5;
  t.year=2018;
 
  DS3231_set(t); // mise à l'heure de l'horloge
 pinMode(Bouton1,INPUT);// déclaration des entrées
 pinMode(Bouton2,INPUT);
 pinMode(Minuit,OUTPUT);
 pinMode(Heure1,OUTPUT);
 pinMode(Heure2,OUTPUT);
 pinMode(Heure3,OUTPUT);
 pinMode(Heure4,OUTPUT);
 pinMode(Heure5,OUTPUT);
 pinMode(Heure6,OUTPUT);
 pinMode(Heure7,OUTPUT);
 pinMode(Heure8,OUTPUT);
 pinMode(Heure9,OUTPUT);
 pinMode(Heure10,OUTPUT);
 pinMode(Heure11,OUTPUT);
 pinMode(Midi,OUTPUT);
 pinMode(Minute5,OUTPUT);
 pinMode(Minute10,OUTPUT);
 pinMode(Quart,OUTPUT);
 pinMode(Minute20,OUTPUT);
 pinMode(Demi,OUTPUT);
 pinMode(Et,OUTPUT);
 pinMode(Moins,OUTPUT);

 digitalWrite(Bouton1, HIGH);
 digitalWrite(Bouton2, HIGH);
}

void loop() {
  // put your main code here, to run repeatedly:
Var1=1-digitalRead(Bouton1);
Var2=1-digitalRead(Bouton2);

  if (Var1==0) Ancvar1=0;
  if (Var2==0) Ancvar2=0;
  
   if (Var1!=Ancvar1) // Front Montant du bouton 1
   {
     Inc=rtc[1]+5;
     if (Inc>59) Inc=0;
    
    
     RTC.stop();     
     RTC.set(DS3231_MIN,Inc);
     RTC.start();
    
     Temp1=1000;
     affichage();
     Ancvar1=1;
    
    
  
   } 

  if (Var2!=Ancvar2) // Front Montant du bouton 2
   {
    
     Inc=rtc[2]+1;
      if (Inc>23) Inc=0;
    
     RTC.stop();
     RTC.set(DS3231_HR,Inc);
     RTC.start();
    
     Temp1=1000;
     affichage();
      Ancvar2=1;
   } 
//*****************************HEURES***********************************************
 DateTime now = RTC.now();
 if ((now.hour() == 0 && now.minute() <= 34)||(now.hour() == 23 && now.minute() >= 35))
 {
 digitalWrite(Minuit,HIGH);
 digitalWrite(Heure11,LOW);
 }
 else if ((now.hour() == 1 && now.minute() <= 34)||(now.hour() == 0 && now.minute() >= 35))
{
 digitalWrite(Heure1,HIGH);
 digitalWrite(Minuit,LOW);
 }
 else if ((now.hour() == 2 && now.minute() <= 34)||(now.hour() == 1 && now.minute() >= 35))
{
 digitalWrite(Heure2,HIGH);
 digitalWrite(Heure1,LOW);
 }
 else if ((now.hour() == 3 && now.minute() <= 34)||(now.hour() == 2 && now.minute() >= 35))
{
 digitalWrite(Heure3,HIGH);
 digitalWrite(Heure2,LOW);
 }
 else if ((now.hour() == 4 && now.minute() <= 34)||(now.hour() == 3 && now.minute() >= 35))
{
 digitalWrite(Heure4,HIGH);
 digitalWrite(Heure3,LOW);
 }
 else if ((now.hour() == 5 && now.minute() <= 34)||(now.hour() == 4 && now.minute() >= 35))
{
 digitalWrite(Heure5,HIGH);
 digitalWrite(Heure4,LOW);
 } 
 else if ((now.hour() == 6 && now.minute() <= 34)||(now.hour() == 5 && now.minute() >= 35))
{
 digitalWrite(Heure6,HIGH);
 digitalWrite(Heure5,LOW);
 }
 else if ((now.hour() == 7 && now.minute() <= 34)||(now.hour() == 6 && now.minute() >= 35))
{
 digitalWrite(Heure7,HIGH);
 digitalWrite(Heure6,LOW);
 } 
 else if ((now.hour() == 8 && now.minute() <= 34)||(now.hour() == 7 && now.minute() >= 35))
{
 digitalWrite(Heure8,HIGH);
 digitalWrite(Heure7,LOW);
 } 
 else if ((now.hour() == 9 && now.minute() <= 34)||(now.hour() == 8 && now.minute() >= 35))
{
 digitalWrite(Heure9,HIGH);
 digitalWrite(Heure8,LOW);
 } 
 else if ((now.hour() == 10 && now.minute() <= 34)||(now.hour() == 9 && now.minute() >= 35))
{
 digitalWrite(Heure10,HIGH);
 digitalWrite(Heure9,LOW);
 }
 else if ((now.hour() == 11 && now.minute() <= 34)||(now.hour() == 10 && now.minute() >= 35))
{
 digitalWrite(Heure11,HIGH);
 digitalWrite(Heure10,LOW);
 } 
 else if ((now.hour() == 12 && now.minute() <= 34)||(now.hour() == 11 && now.minute() >= 35))
{
 digitalWrite(Midi,HIGH);
 digitalWrite(Heure11,LOW);
 }
 else if ((now.hour() == 13 && now.minute() <= 34)||(now.hour() == 12 && now.minute() >= 35))
{
 digitalWrite(Heure1,HIGH);
 digitalWrite(Midi,LOW);
 }
 else if ((now.hour() == 14 && now.minute() <= 34)||(now.hour() == 13 && now.minute() >= 35))
{
 digitalWrite(Heure2,HIGH);
 digitalWrite(Heure1,LOW);
 }
 else if ((now.hour() == 15 && now.minute() <= 34)||(now.hour() == 14 && now.minute() >= 35))
{
 digitalWrite(Heure3,HIGH);
 digitalWrite(Heure2,LOW);
 }
 else if ((now.hour() == 16 && now.minute() <= 34)||(now.hour() == 15 && now.minute() >= 35))
{
 digitalWrite(Heure4,HIGH);
 digitalWrite(Heure3,LOW);
 }
 else if ((now.hour() == 17 && now.minute() <= 34)||(now.hour() == 16 && now.minute() >= 35))
{
 digitalWrite(Heure5,HIGH);
 digitalWrite(Heure4,LOW);
 } 
 else if ((now.hour() == 18 && now.minute() <= 34)||(now.hour() == 17 && now.minute() >= 35))
{
 digitalWrite(Heure6,HIGH);
 digitalWrite(Heure5,LOW);
 }
 else if ((now.hour() == 19 && now.minute() <= 34)||(now.hour() == 18 && now.minute() >= 35))
{
 digitalWrite(Heure7,HIGH);
 digitalWrite(Heure6,LOW);
 } 
 else if ((now.hour() == 20 && now.minute() <= 34)||(now.hour() == 19 && now.minute() >= 35))
{
 digitalWrite(Heure8,HIGH);
 digitalWrite(Heure7,LOW);
 } 
 else if ((now.hour() == 21 && now.minute() <= 34)||(now.hour() == 20 && now.minute() >= 35))
{
 digitalWrite(Heure9,HIGH);
 digitalWrite(Heure8,LOW);
 } 
 else if ((now.hour() == 22 && now.minute() <= 34)||(now.hour() == 21 && now.minute() >= 35))
{
 digitalWrite(Heure10,HIGH);
 digitalWrite(Heure9,LOW);
 }
 else if ((now.hour() == 23 && now.minute() <= 34)||(now.hour() == 22 && now.minute() >= 35))
{
 digitalWrite(Heure11,HIGH);
 digitalWrite(Heure10,LOW);
 } 
//***************************MINUTES*****************************
if ((now.minute() == 0)&&(now.minute() >= 5))
 {
 digitalWrite(Minute5,LOW);
 digitalWrite(Minute10,LOW);
 digitalWrite(Quart,LOW);
 digitalWrite(Minute20,LOW);
 digitalWrite(Demi,LOW);
 digitalWrite(Et,LOW);
 digitalWrite(Moins,LOW);
 }
 else if ((now.minute() == 5)&&(now.minute() >= 9))
{
digitalWrite(Minute5,HIGH);
digitalWrite(Et,HIGH);
}
else if ((now.minute() == 10)&&(now.minute() >= 14))
{
 digitalWrite(Minute5,LOW);
 digitalWrite(Minute10,HIGH);
}
else if ((now.minute() == 15)&&(now.minute() >= 19))
{
 digitalWrite(Quart,HIGH);
 digitalWrite(Minute10,LOW);
}
else if ((now.minute() == 20)&&(now.minute() >= 24))
{
 digitalWrite(Quart,LOW);
 digitalWrite(Minute20,HIGH);
}
else if ((now.minute() == 25)&&(now.minute() >= 29))
{
 digitalWrite(Minute5,HIGH);
 digitalWrite(Minute20,HIGH);
}
else if ((now.minute() == 30)&&(now.minute() >= 34))
{
 digitalWrite(Minute5,LOW);
 digitalWrite(Minute20,LOW);
 digitalWrite(Demi,HIGH);
}
else if ((now.minute() == 35)&&(now.minute() >= 39))
{
 digitalWrite(Demi,LOW);
 digitalWrite(Minute20,HIGH);
 digitalWrite(Minute5,HIGH);
 digitalWrite(Moins,HIGH);
 digitalWrite(Et,LOW);
}
else if ((now.minute() == 40)&&(now.minute() >= 44))
{
 digitalWrite(Minute20,HIGH);
 digitalWrite(Minute5,LOW);
}
else if ((now.minute() == 45)&&(now.minute() >= 49))
{
 digitalWrite(Minute20,LOW);
 digitalWrite(Quart,HIGH);
}
else if ((now.minute() == 50)&&(now.minute() >= 54))
{
 digitalWrite(Minute10,HIGH);
 digitalWrite(Quart,LOW);
}
else if ((now.minute() == 55)&&(now.minute() >= 59))
{
 digitalWrite(Minute10,LOW);
 digitalWrite(Minete5,HIGH);
}
}

Expliquez quelles sont les erreurs que vous constatez…
Précisez à quelle librairie vous faites référence avec votre #include <ds3231.h>
Expliquez comment sont câblés les boutons et les LEDs (résistances? )

PS → pour les N° de pins c’est mieux si vous les déclarez en const byte plutôt que int

MAXARDUINO1:
#include <ds3231.h>

Tu es sûr de ça? Je ne connais pas ce module ni la bibli, mais j’ai vu ailleurs <Ds3231.h>

tous d’abord merci pour vos réponses rapides.

pour ce qui est des boutons je les ai commander mais ils ne sont pas encore arrivés mais je veux les câblés de façon a se que l’input est toujours à un en temps normal est que le signal se coupe une fois que l’ont appuie dessus (d’après se que j’ai lu c’est mieux ainsi).

pour se qui est des bibliothèque je ne suis sur de rien je devais télécharger des fichier pour ajouter la bibliothèque ds3231 mais je ne sais pas si sa marche mon histoire.

voici le lien où j’ai télécharger la bibliothèque:
http://gilles.thebault.free.fr/spip.php?article53

MAXARDUINO1:
pour ce qui est des boutons

Dans les tutoriels, il y a une bibliothèque créée par Bricoleau, elle facilite l'utilisation des boutons.

MAXARDUINO1:
bibliothèque ds3231 mais je ne sais pas si sa marche mon histoire.

voici le lien où j'ai télécharger la bibliothèque:
Arduino & Horloge DS3231 (RTC = Real Time Clock) - /dev/tbo

Mon plus gros souci à cette heure c'est le nombre de glaçons à l'apéro, toi seul peux installer la bibliothèque. Fais une recherche, je pense qu'il y a un doublon.

Les boutons c'est plus simple de les câbler en INPUT_PULLUP puisque vous pouvez vous passer d'une résistance. Pour les LEDs à vous de voir combien il peut y en avoir d'allumées en même temps et combien elles consomment pour voir si vous pouvez directement les alimenter depuis l'arduino suivant leur type (avec un résistance de limitation de courant)

Au lieu de bricoler avec le code des autres, faites le vôtre c'est pas très compliqué. Vous pouvez prendre la librairie Adafruit par exemple pour votre DS3231 et en fonction de l'évolution de l'heure vous allumez ou éteignez les bons mots

le 90% du code est fait par moi, mais comme je début je ne connais pas bien les RTC et les façon de les utilisé c'est pour cela que je vous demande de l'aide.

je me suis renseigné comme j'ai pu sur d'autre forum mais je n'ai pas vraiment trouvé les bonnes façon de faire.

c'est pour cela que je vous demande votre avis

après si vous avez connaissance de bon tuto pour savoir:
-comment utilisé une rtc
-comment changer l'heure et les minutes
-et comment interroger la rtc avec mes "IF" pour allumer mes leds je suis preneur

mais mes recherches ne mon pas apporté beaucoup pour le moment c'est pour cela que je vous solicite et je vous en remercie encore une fois pour toute vos réponse

MAXARDUINO1:
après si vous avez connaissance de bon tuto pour savoir:
-comment utilisé une rtc
-comment changer l'heure et les minutes
-et comment interroger la rtc avec mes "IF" pour allumer mes leds je suis preneur

allez voir le lien du post #5 pour la librairie Adafruit pour votre DS3231, il y a des exemples de code et leur tuto est ici