distributeur de grillon par un débutant

Bonjour,
Pas beaucoup de commentaires sur mon bout de code :confused: ...

Ayant fait quelques légères modifs (4 cycles de servo au lieu de 5, déplacement de certaines accolades pour ne pas faire sonner la cloche a chaque avance du servo), je repost le code:

#include <Servo.h>
#include <Wire.h>
#include <DS3231.h>

Servo monservo;                //création de l'objet Servo
int pos = 0;                  // mettre le servo en position initiale
RTClib RTC;                    // utile pour heure ???
const int cloche = 2;          // la clochette est sur la broche 2
const int boutoncloche = 3;    // le bouton clochette est sur la broche 3
const int boutonavance = 4;     // le bouton avance est sur la broche 4
int etatboutoncloche;
int etatboutonavance;

void setup() {
  
pinMode(cloche, OUTPUT);                    // met la broche 2 en sortie
pinMode(boutoncloche, INPUT);               // met la broche 3 en entrée
pinMode(boutonavance, INPUT);               // met la broche 4 en entrée
monservo.attach(9);                         //servo relié a la broche 9
Serial.begin(57600);
Wire.begin();                              //demarrage liaison série
}


void loop() {

DateTime now = RTC.now();

if((now.hour() == 17) && (now.minute() == 30) && (now.second() == 00))   //heure minutes seconde de declenchement: 12h30m00s
  
{  
for(int compteur = 0; compteur < 4; compteur++)   //permet d'exécuter 4 fois le code ci-dessous

{
 for (pos = 0; pos <= 180; pos += 1)  // va de 0° à 180° par pas de 1
   {
    monservo.write(pos);              // dit au servo de prendre la position 'pos'
    delay(50);                        // attendre 50ms pour servo arrive position
  }
  for (pos = 180; pos >= 0; pos -= 2)  // va de 180° à 0° par pas de 2
    {
      monservo.write(pos);              // dit au servo de prendre la position 'pos'
    delay(50);                         // attendre 50ms pour servo arrive position
  }

}
  for(int compteur = 0; compteur < 5; compteur++)    //permet d'exécuter 5 fois le code ci-dessous
{
digitalWrite(cloche, HIGH);                     //declenchement de la cloche via solenoide
 delay(100);
digitalWrite(cloche, LOW);                        
 delay(100);
}
}


// utilisation manuelle de la cloche

etatboutoncloche = digitalRead(boutoncloche);       // verification de l'état du boutoncloche
if(etatboutoncloche == HIGH)                        // enclenchement du bouton cloche
for(int compteur = 0; compteur < 5; compteur++)    //permet d'exécuter 5 fois le code ci-dessous
{
digitalWrite(cloche, HIGH);                     //declenchement de la cloche via solenoide
 delay(100);
digitalWrite(cloche, LOW);                        
 delay(100);
}


// avance manuelle
etatboutonavance = digitalRead(boutonavance);       // verification de l'état du boutonavance
if(etatboutonavance == HIGH)                       // enclenchement du bouton avance
{  
for(int compteur = 0; compteur < 4; compteur++)   //permet d'exécuter 4 fois le code ci-dessous

{
 for (pos = 0; pos <= 180; pos += 1)  // va de 0° à 180° par pas de 1
   {
    monservo.write(pos);              // dit au servo de prendre la position 'pos'
    delay(50);                       // attendre 50ms pour servo arrive position
  }
  for (pos = 180; pos >= 0; pos -= 2)  // va de 180° à 0° par pas de 2
    {
      monservo.write(pos);              // dit au servo de prendre la position 'pos'
    delay(50);                       // attendre 50ms pour servo arrive position
  }
}

}
}

Je ne peux pas tester ce code complet dans tinkercad car la librairie du RTC n'est pas présente.
Par contre en enlevant la partie "horloge" cela fonctionne mais mon solénoïde semble s’initialiser à 90° au lieu de 0°... bizarre je lui dit pourtant: int pos = 0; pour mettre le servo en position initiale.

Si vous avez des pistes ... Merci