Par contre je voudrais avoir la possibilité d'éteindre ou d'allumer en manuel avec un bouton poussoir, dans le cas ou les Leds sont éteintes par exemple (en dehors de la plage horaire ci-dessous)
J'ai utilisé le code
Mais je n'arrive pas à le placer correctement dans mon code. Je pense que je m'embrouille avec les conditions.
Merci d'avance pour vos "éclaircissement"
Premièrement ton test de l'heure est faux et la led ne sera allumée que pendant la 52eme minute entre 10h et 21h. Si tu ne veux pas te faire des noeuds au cerveau pour les comparaisons de temps convertit tout en minutes.
Deuxièmement pour faire ce que tu veux il te faut deux flags
un flag pour l'état allumé suivant l'heure
un flag pour l'état allumé effectif qui changera d'état lors du changement d'état lors du changement d'état suivant l'heure et lorsqu'on appuie sur le bouton (il faut tester l'appui sur le bouton et non son changement d'état).
Ehsuite tu allumes/éteins la led suivant l'état du 2eme flag.
J'ai bien compris la logique mais j'ai encore du mal à organiser les choses.
Si tu as un peu de temps je veux bien un exemple pour bien comprendre le cheminement et l'organisation des conditions.
En tout cas c'est super sympa de m'aider, je suis vraiment pas du domaine c'est pas simple
Voila une façon de faire. Il y en a d'autres.
Contrairement à ce que j'avais préconisé je n'ai pas converti l'heure en minutes, mais multiplié l'heure par 100 et ajouté les minutes. C'est plus pratique pour écrire les heures limites 10:00 -> 1000 et 21:52 -> 2152
// traitement de l'heure
static bool etatLedHeure = false;
static bool etatLed = false;
int tempsMn = now.hour() * 100 + now.minute();
if (tempsMn > 1000 && tempsMn <= 2152)
{
if (!etatLedHeure)
etatLed = etatLedHeure = true; // on a changé détat, on met à jour l'état de la led
}
else
{
if (etatLedHeure)
etatLed = etatLedHeure = false; // on a changé détat, on met à jour l'état de la led
}
// traitement du bouton
static bool etatPrecedentBouton = false;
bool etatBouton = digitalRead(pinBouton);
if (etatBouton!=etatPrecedentBouton)
{
if (etatBouton)
etatLed = !etatLed; // inverse l'état de la led à l'appui du bouton
etatPrecedentBouton = etatBouton;
delay(20); // anti rebond
}
// traitement de la led
digitalWrite(pinLed1, etatLed);
Super l'idée de multiplier par 100 et additionner les minutes, je n'y aurai pas pensé.
Par contre quand tu disais que c'étais assez simple, c'est pas évident quand même, il me manque quelques notions
J'ai essayé ça marche parfaitement pour le bouton poussoir, par contre l'heure s'éteint bien à 21h52 par exemple mais s'allume apparemment avant 10h (la nuit je ne sais pas quand). Je vais regarder ça de près.