Salut tout le monde ,
je suis prof dans un collège public , alors on problème avec la personne chargé de la sonnette pour l'entée et la sortie des élevés et des profs ,moi je suis debutant dans le domaine de programmation avec arduino.
Alors mon but est de créer un système avec arduino uno et un horloge real time (RTC) de faire déclencher la sonnette automatiquement en des instants précis (exemple 7:45 , 7:58 , 8:57, 9:02 , 9:55, 10:05 ...)
je demande de mes chers collègues de m'aider dans ce projet , et merci d'avance.
salutations ,
ELMASSISAID
french:
La traduction est assez drôle, mais s'il vous plaît supportez avec moi. Première chose, ce n'est pas en anglais, mais vérifiez-le (p.s. J'ai utilisé google translate) Arduino Playground - DS1302 traduisez-le à votre gré. Dis-moi si tu as des problèmes.
BR.
squidsirymchenry
english:
The translation is quite funny, but please bear with me. First thing, it's not in English, but check this out (p.s. I used google translate) Arduino Playground - DS1302 translate it at your will. Tell me if you have any problems.
BR.
squidsirymchenry
oui , j'ai pas encore compris le programme de ce sonnette
Merci pour ton aide ,
mais je veux un programme qui n'affiche pas le temps par lcd mais qui fait actionner un relais .
exemple : si l'heure est 7:45 la sonnette doit sonner
si 8:00 sonne
si 8:57 sonne
si 9:02 sonne
si 9:55 sonne
si 10:05 sonne
si 10:57 sonne
si 11:02 sonne
si 12:00 sonne
le soir meme chose
le samedi soir et le dimanche ne sonne pas
Un soucis récurrent que l’on a ici c’est qu’on a des élèves tire-au-flanc qui se font passer pour des profs, des handicapés, etc pour jouer sur la générosité des bénévoles ici pour obtenir du forum qu’on fasse leur devoir à leur place... bien sûr éthiquement ce n’est pas acceptable.
Comme c’est difficile de savoir qui est qui...Une règle implicite ici c’est qu’on ne fournit généralement pas de code tout fait. Le demandeur propose du code et on l’aide à debugger / progresser
Avez vous envie d'apprendre à pgrogrammer ? Avez vous essayé quelque chose ?
Alors mon but est de créer un système avec arduino uno et un horloge real time (RTC) de faire déclencher la sonnette automatiquement en des instants précis (exemple 7:45 , 7:58 , 8:57, 9:02 , 9:55, 10:05 ...)
mais je veux un programme qui n'affiche pas le temps par lcd mais qui fait actionner un relais .
il y a comme un non sens dans la demande.
créer et je veux un programme
+100 avec pepe
Bon, comme j'ai déjà posté un truc équivalent dans le forum US - voici un bout de code simpliste qui allume la LED intégrée quand l'heure de la journée est un des intervalles donnés dans le tableau slots[][]
.
il n'y a pas de gestion des jours (pas de prise en compte des week end) donc ça vous laisse un peu de boulot à effectuer et bien sûr il faudra adapter les time slots ainsi que le pilotage du relai s'il doit osciller
// *************************************************************
// Timing
// *************************************************************
const uint32_t hour_s = 3600ul, min_s = 60ul; // nb of seconds in 1h or 1min
// define when relay is ON through intervals, representing the number of seconds since midnight
const uint32_t slots[][2] = {
{14 * hour_s + 24 * min_s + 0 , 14 * hour_s + 24 * min_s + 30}, // [14:24:00 , 14:24:30]
{23 * hour_s + 27 * min_s + 30, 23 * hour_s + 29 * min_s}, // [23:27:30 , 23:29:00]
{23 * hour_s + 30 * min_s + 30, 23 * hour_s + 31 * min_s} // [23:30:30 , 23:31:00]
};
// *************************************************************
// RTC
// *************************************************************
#include "RTClib.h" // https://github.com/adafruit/RTClib (import adafruit RTCLib library)
RTC_DS3231 rtc;
// *************************************************************
// Relay management
// *************************************************************
void handleRelay()
{
const byte nbSlots = sizeof(slots) / sizeof(slots[0]);
static int currentActiveSlot = -1;
int slot = -1;
DateTime now = rtc.now();
uint32_t t = now.hour() * hour_s + now.minute() * min_s + now.second();
for (byte i = 0; i < nbSlots; i++) {
if ((t >= slots[i][0]) && (t <= slots[i][1])) {
slot = i;
break;
}
}
if (slot != currentActiveSlot) {
// something has changed
if (slot == -1) {
// we are not in a slot, so turn relay OFF
digitalWrite(LED_BUILTIN, LOW);
Serial.print(F("End of slot #"));
Serial.println(currentActiveSlot);
} else {
// we are entering a time slot, so turn relay ON
digitalWrite(LED_BUILTIN, HIGH);
Serial.print(F("Entering in slot #"));
Serial.println(slot);
}
currentActiveSlot = slot;
}
}
// *************************************************************
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW); // turn relay OFF (assuming LOW is OFF)
// start RTC
if (! rtc.begin()) {
Serial.print("Couldn't find RTC!");
while (1); // can't go further
}
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // only if your clock is not set up
}
// *************************************************************
void loop() {
handleRelay();
}