abonnel-siteweb/data/pages/electronique/arduino/minuterie-pour-lampe-de-che...

76 lines
3.0 KiB
Plaintext
Raw Permalink Normal View History

2024-01-07 10:02:35 +01:00
====== 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 ======
<code C 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);
}
/************************************/
</code>
====== Liens ======
Je me suis honteusement inspiré de l'introduction de l'article de [[http://www.berlioux.com/electronique/minuterie-hm/minuterie-hm-fr.html|Berlioux]] pour rédiger mon introduction. Pour ma défense, je dirai que j'ai fait du recyclage et l'optimisation.