electronique:arduino:minuterie-pour-lampe-de-chevet

Minuterie pour lampe de chevet

J'ai créé cette minuterie pour ceux qui lisent au lit et qui s'endorment avec la lumière allumée ou les enfant qui ont peur du noir et réclame qu'on leur laisse un peu de lumière, autre qu'une veilleuse. Cette minuterie obéit au même principe que du “dispositif de l'homme mort”.

Son fonctionnement est très simple : par un appui sur le bouton, la minuterie est activée et la lampe s'allume. Après la durée pour laquelle elle a été réglée, la lampe s'éteint d'elle-même. Un appui prolongé permet, à tout moment, d'éteindre la lampe, ce qui évite, si l'on s'endort sur le bouton, que la lumière reste allumée toute la nuit.
Cette minuterie permet, en plus de ne pas dormir avec la lumière allumée, ce qui de l'avis de certains n'est pas très bon pour la qualité du sommeil, de réaliser des économies d'énergie. D'une conception minimale et ingénieuse, elle s'appuie sur un micro contrôleur Arduino. Tout a été mis en œuvre pour en réduire le coût de fabrication : composants peu nombreux et faciles à trouver ou à recycler. Voilà.

Schéma

A venir

Code

button-action.ino
//Controlling Led By Button
//Turns on and off a LED ,when pressings button attach to pin12
//Website:www.abonnel.fr
//2016.11.27.17.41
/**********************************/
const int keyPin = 13; //the number of the key pin
const int ledPin = 12;//the number of the led pin
int etatRelay = LOW;
const int tempsAllumage = 6; //secondes
int tempsAllumage_cours = 0; //temps en cours
/**********************************/
void setup()
{
pinMode(keyPin,INPUT);//initialize the key pin as input
pinMode(ledPin,OUTPUT);//initialize the led pin as output.
  Serial.begin(9600); // initialize serial communications at 9600 bps
 
}
/**********************************/
void loop() {
 
int etatButton = digitalRead(keyPin);
 
 
  if(etatButton == HIGH ) {
    // Action quand on appuie sur le bouton
      etatRelay = !etatRelay; //actionner le relais
      digitalWrite(ledPin,etatRelay); //actionner la LED
      delay(1000); // attendre 1 sec
      tempsAllumage_cours = 0; // reintialiser le compteur
  }
 
  if (etatRelay == HIGH) {
    // Action si le relais est collé
    if (tempsAllumage - tempsAllumage_cours <= 0) {
      // Si le temps est écoulé
      etatRelay = LOW; // Eteindre le relais
      digitalWrite(ledPin,etatRelay);//Eteindre la LED
      delay(1000); // Attendre 1 sec
    } else {
      // Si le temps n'est pas écoulé
      tempsAllumage_cours++;
      delay(1000); // attendre 1 sec
    }
  }
 
// Afficher les status sur le port Serie
//  Serial.print(etatRelay);
//  Serial.print(" ");
//  Serial.println(tempsAllumage - tempsAllumage_cours);
 
}
/************************************/

Liens

Je me suis honteusement inspiré de l'introduction de l'article de Berlioux pour rédiger mon introduction. Pour ma défense, je dirai que j'ai fait du recyclage et l'optimisation.

  • electronique/arduino/minuterie-pour-lampe-de-chevet.txt
  • Dernière modification : 2020/08/05 22:02
  • de Cédric ABONNEL