Projet Arduino n°1 : Présentation du rendu

Projet Arduino n°1 : Présentation du rendu

Si vous avez lu le précédent article Nouveau Projet vous avez eu un avant gout du projet que j’ai mené durant ces vacances.

La problématique

Le sommeil le plus réparateur se situe dans le noir complet. Alors quand il faut se lever dans le noir ça peut devenir tendu de se déplacer sans allumer la lampe de chevet (si elle existe), car oui il ne faut pas réveiller la personne qui dort à coté.

J’avais envie de faire un système d’allumage un peu classe avec un allumage progressif et personnalisables, j’ai donc opté pour la solution Arduino.

Le Matériel

J’ai fait mes courses sur Amazon :

  • Un kit Arduino pour commencer.

  • Quelques détecteurs de mouvements.

  • Un bandeau de leds, 5 m pour couvrir 3 cotés du lit.

  • Enfin une alimentation pour ce bandeau à leds de 35W

Au final on en a pas pour cher et ça fait un bon petit projet pour commencer le développement en Arduino.

L’effet visuel

J’avais envie que le chemin se révèle à mon passage, j’ai donc mis en place deux détecteurs de mouvements, un à droite et un à gauche. Si tu viens de la droite le passage se révèle de la droite vers la gauche, et si tu viens de la gauche ... c’est l’inverse, tout simplement.

Quelques détails

  • Pour fixer les leds au sommier recouvert d’une sorte de bâche, j’ai utilisé 4,8m de baguettes en bois clouées au châssis du sommier.
  • Le bandeau led que j’ai utilisé permet de piloter les leds 3 par 3 et uniquement comme ceci.

Schéma pas technique

Projet_Lit_Led

Code pompé

Pour le code j’ai utiliser la bibliothèque NeoPixel, j’ai même directement adapté le code d’exemple. Voici donc avec quoi fonctionne le système aujourd’hui.

#include <Adafruit_NeoPixel.h>

#define PIN_LED 5
#define PIN_PIR_Droite 3
#define PIN_PIR_Gauche 2
#define TEMPS_ALLUME 15000
#define LUMINOSITE 20
#define ON 50
#define OFF 15

Adafruit_NeoPixel strip = Adafruit_NeoPixel(45, PIN_LED, NEO_BRG + NEO_KHZ800);

int PirState_Right = 0;
int PirState_Left = 0;

void setup() {
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
  strip.setBrightness(LUMINOSITE);

  pinMode(PIN_PIR_Droite, INPUT);
  pinMode(PIN_PIR_Gauche, INPUT);
}

void loop() {
  PirState_Right = digitalRead(PIN_PIR_Droite);
  PirState_Left = digitalRead(PIN_PIR_Gauche);

      if (PirState_Right == HIGH) {
        colorWipe(strip.Color(255, 255, 255), ON); // Blue
        delay(TEMPS_ALLUME);
        colorWipe(strip.Color(0, 0, 0), OFF);
      }else if (PirState_Left == HIGH) {
        colorWipe_back(strip.Color(255, 255, 255), ON); // Blue
        delay(TEMPS_ALLUME);
        colorWipe(strip.Color(0, 0, 0), OFF);
     }
}

void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

void colorWipe_back(uint32_t c, uint8_t wait) {
  for(int i=strip.numPixels(); i>=0; i--) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
    }   
}
Afficher les commentaires