Distributeur aliments chevres naines servo et ds3231

Bonjour , j’ai assemblé ce petit programme , mon petit niveau de programmation ne me permet pas d’avancer seul , pouvez vous me dire pourquoi l’appui sur le bp ne fonctionne pas alors que je le vois en serial , et m’aider à implémenter le code pour faire une distribution tous les jours à 17h00.
Merci de votre aide.

Je publierai mon projet fini avec photos quand tous sera fini , la partie mécanique est au point , réalisée avec du tube PVC gros diamètre (100mm) .

salutations :wink:

// FOOD TIME CHEVRES
// projet distribution croquette pour chevres naines avec servo
// une distribution à 17h00 tous les jours

#include <Servo.h>
#include <DS3232RTC.h>    //http://github.com/JChristensen/DS3232RTC
#include <Time.h>         //http://www.arduino.cc/playground/Code/Time  
#include <Wire.h>         //http://arduino.cc/en/Reference/Wire (included with Arduino IDE)
Servo myservo;
int bp = 2; // un bouton poussoir sur la borne (2) 
// schema : (-) -------[R 10 Kohm]--------O   O------------ (+)
//          (2)--------------------------/
                           
int pos = 0;                    // variable pour la position 0 du servo

void setup(){
    Serial.begin(9600);
    setSyncProvider(RTC.get);   // lecture de l heure du RTC
    if(timeStatus() != timeSet) 
        Serial.println("pas le syncro avec le RTC");
    else
        Serial.println("RTC HEURE enregistee");      
}



void digitalClockDisplay(){
    // affichage de l heure et date sur liaison serie
    Serial.print(hour());
    printDigits(minute());
    printDigits(second());
    Serial.print(' ');
    Serial.print(day());
    Serial.print(' ');
    Serial.print(month());
    Serial.print(' ');
    Serial.print(year()); 
    Serial.println(); 
    Serial.print (digitalRead(bp));// indique la valeur bouton poussoir sur la borne (2) 5v = 1 
    Serial.println(' '); 
    }

void printDigits(int digits){
    // mise en forme du texte dans interface serie
    Serial.print(':');
    if(digits < 10)
        Serial.print('0');
    Serial.print(digits);
}
void servo(){
  
  myservo.attach(9);    // entree servo sur borne (9)
  myservo.write(pos);   // positionne le servo à zéro
  pinMode(bp, INPUT);   // broche (2) en entrée pour le bouton poussoir
}


//distribution programmée
 // a cet endroit je dois faire mes declenchement horaire tous les jours a 17h00
 // 
 //
 //
 //
 





 void loop(){       
         digitalClockDisplay();  
    delay(1000);
     //distribution manuelle
  boolean b = digitalRead(bp); // lecture de l'état du bouton poussoir
  if ( b )                     //b=true implique que le BP apporte du 5V sur l'entrée
    
  {                            //si appui sur le bp on lance la distribution
    delay(500);                //il y a eu appui sur BP, on laisse les rebonds passer
    distribution ();            //on s'interdit de relire l'entrée BP 500ms
  }                           //puis on va distribuer                                           
  }
  
  void distribution(){
   for(int i = 0; i <= 1; i++)  // le chiffre 1 pour 2 cycles
    for(pos = 0; pos <= 220; pos += 8) // va de 0 degrees a 190 degrees
      {                                  // avec des pas de 1 degre
        myservo.write(pos);              // dit au servo d aller en position en fonction de la variable 'pos'
        delay(15);                       // pause  30ms 
      }
    for(pos = 220; pos>=-10; pos-=8)     // va de  190 degres a  0 degrees
      {                                  // avec des pas de 4 degrees donc retour rapide
        myservo.write(pos);              // dit au servo d aller en position en fonction de la variable 'pos'
        delay(15);                       // pause  30ms
}  
}

Bonsoir , personne pour m’aider ??

ARTNOW:
Bonjour , j’ai assemblé ce petit programme , mon petit niveau de programmation ne me permet pas d’avancer seul , pouvez vous me dire pourquoi l’appui sur le bp ne fonctionne pas alors que je le vois en serial , et m’aider à implémenter le code pour faire une distribution tous les jours à 17h00.
Merci de votre aide.

Je publierai mon projet fini avec photos quand tous sera fini , la partie mécanique est au point , réalisée avec du tube PVC gros diamètre (100mm) .

salutations :wink:

// FOOD TIME CHEVRES

// projet distribution croquette pour chevres naines avec servo
// une distribution à 17h00 tous les jours

#include <Servo.h>
#include <DS3232RTC.h>    //http://github.com/JChristensen/DS3232RTC
#include <Time.h>        //http://www.arduino.cc/playground/Code/Time 
#include <Wire.h>        //http://arduino.cc/en/Reference/Wire (included with Arduino IDE)
Servo myservo;
int bp = 2; // un bouton poussoir sur la borne (2)
// schema : (-) -------[R 10 Kohm]--------O  O------------ (+)
//          (2)--------------------------/
                         
int pos = 0;                    // variable pour la position 0 du servo

void setup(){
    Serial.begin(9600);
    setSyncProvider(RTC.get);  // lecture de l heure du RTC
    if(timeStatus() != timeSet)
        Serial.println(“pas le syncro avec le RTC”);
    else
        Serial.println(“RTC HEURE enregistee”);     
}

void digitalClockDisplay(){
    // affichage de l heure et date sur liaison serie
    Serial.print(hour());
    printDigits(minute());
    printDigits(second());
    Serial.print(’ ‘);
    Serial.print(day());
    Serial.print(’ ‘);
    Serial.print(month());
    Serial.print(’ ‘);
    Serial.print(year());
    Serial.println();
    Serial.print (digitalRead(bp));// indique la valeur bouton poussoir sur la borne (2) 5v = 1
    Serial.println(’ ');
    }

void printDigits(int digits){
    // mise en forme du texte dans interface serie
    Serial.print(’:’);
    if(digits < 10)
        Serial.print(‘0’);
    Serial.print(digits);
}
void servo(){
 
  myservo.attach(9);    // entree servo sur borne (9)
  myservo.write(pos);  // positionne le servo à zéro
  pinMode(bp, INPUT);  // broche (2) en entrée pour le bouton poussoir
}

//distribution programmée
// a cet endroit je dois faire mes declenchement horaire tous les jours a 17h00
//
//
//
//

void loop(){     
        digitalClockDisplay(); 
    delay(1000);
    //distribution manuelle
  boolean b = digitalRead(bp); // lecture de l’état du bouton poussoir
  if ( b )                    //b=true implique que le BP apporte du 5V sur l’entrée
   
  {                            //si appui sur le bp on lance la distribution
    delay(500);                //il y a eu appui sur BP, on laisse les rebonds passer
    distribution ();            //on s’interdit de relire l’entrée BP 500ms
  }                          //puis on va distribuer                                         
  }
 
  void distribution(){
  for(int i = 0; i <= 1; i++)  // le chiffre 1 pour 2 cycles
    for(pos = 0; pos <= 220; pos += 8) // va de 0 degrees a 190 degrees
      {                                  // avec des pas de 1 degre
        myservo.write(pos);              // dit au servo d aller en position en fonction de la variable ‘pos’
        delay(15);                      // pause  30ms
      }
    for(pos = 220; pos>=-10; pos-=8)    // va de  190 degres a  0 degrees
      {                                  // avec des pas de 4 degrees donc retour rapide
        myservo.write(pos);              // dit au servo d aller en position en fonction de la variable ‘pos’
        delay(15);                      // pause  30ms

}

Salut, dans ta condition j'aurai mis :
if ( d == true)

Ensuite je n'aurai pas déclaré ton bouton en entrée dans ta void servo, mais uniquement dans ton setup.
Et pour finir , tu n'as pas besoin d'un booléen pour enregistrer l'état de ton bouton . Tu peux faire int b avant ton setup et surtout inverser son état lorsque tu appuis sinon l'état de ton bouton sera tj à 1 . Et dans ce cas, ta condition d'appuis sera : if ( d == 1) {
distribution ;
d = !d; }
Après il y a peut être d'autres erreurs, mais j'ai pas trop eu le temps de regarder

bonjour,
comme indiqué, le boolean ne sert a rien et se met au départ dans ce cas.

il y a des exemples dans l'ide avec le BP.
un simple

if ( digitalRead(bp) == HIGH){
delay(500);               
    distribution ();          
}

suffit

merci pour votre aide , je vais essayer cela. avez vous des idées pour la distribution à 17h00 avec mon rtc 3231 ?

j'ai regarder les exemples et différents tutos , mais je me perd un peu ......