Lumière automatique Arduino

Projet rapide pour ajouter un peu de lumière a un meuble de l’entrée de l’appartement. La lumière s’allumera automatiquement pendant 10s quand quelqu’un passe à proximité.

Pour le moment j’utilise une simple LED mais je la remplacerai par un ruban de LED bientôt. Le détecteur de présence a déjà été utilisé avant dans ce projet.

La seule nouveauté est l’utilisation d’une nouvelle librairie Arduino pour gérer les tempos et la présence d’une gestion d’interruption. La librairie de gestion du timer “MsTimer2” est détaillé sur la page officiel et est également téléchargeable sur le playground.

L’utilisation est assez simple… Il suffit d’inclure le fichier d’entete :

#include <MsTimer2.h>

ensuite on initialise la durée de la tempo et la fonction qui sera appelée à la fin de la temporisation (dans le setup)

MsTimer2::set(10000, InterruptTimer2);

et de définir notre fonction :

void InterruptTimer2() 
{
  digitalWrite(_OutPinRelay, LOW);
}

Voilà le programme final :

#include <MsTimer2.h>

const int _InPinButton = 6;
const int _InPinIrDetector = 7;
const int _OutPinLed = 11;
const int _OutPinRelay = 10;
int aLightState = 0;

void InterruptTimer2() 
{
  digitalWrite(_OutPinRelay, LOW);
}

void setup()
{
  //defined IO
  pinMode(_InPinButton,INPUT);
  pinMode(_InPinIrDetector,INPUT);
  pinMode(_OutPinLed, OUTPUT);
  pinMode(_OutPinRelay, OUTPUT);
  MsTimer2::set(10000, InterruptTimer2);
}

void flashPin(int pin, int times, int wait) 
{
  for (int i = 0; i < times; i++) {
    digitalWrite(pin, HIGH);
    delay(wait);
    digitalWrite(pin, LOW);

    if (i + 1 < times) {
      delay(wait);
    }
  }
}

void loop()
{
  //Read button status
  int aInputDigitalValue = digitalRead(_InPinIrDetector);

  if (aInputDigitalValue == HIGH)
  {
    //IR detector see something
    digitalWrite(_OutPinRelay, HIGH);
    MsTimer2::start(); // active Timer 2 
  }
}

Le résultat final avec la barrette de LED et le montage cache sous le meuble :

20130217_131435