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
// 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
}
}