Zlika:
Bonjour,Le déclenchement par la RTC ne fait pas sonner la cloche.
En effet j'ai oublié cette tache, merci.
Je rajoute la sonnerie:
#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 < 5; compteur++) //permet d'exécuter 5 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 < 5; compteur++) //permet d'exécuter 5 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
}
}
}
}
Merci de vos avis,