L'arbre des Rêves

De Les Fabriques du Ponant
Révision datée du 21 janvier 2019 à 12:33 par Pschyt (discussion | contributions) (création de la boîte)
Aller à : navigation, rechercher

INTRODUCTION

Nous participons au hackathon 2019 lors de notre inter semestre.

FlyerENIB2019.jpg

C'est dans ce contexte que nous avons eu l'idée de notre arbre attrape rêve.

Celui-ci sert à pour unique but d'être une veilleuse pour les enfants ou les personnes qui ne veulent pas dormir dans le noir. Il a une forme, comme son nom l'indique, d'arbre et est lumineux grâce aux leds qui sont commandées par une carte arduino.


Le matériel nécessaire

  • une carte arduino
  • du fil électrique
  • des leds
  • une pince à dénuder
  • de quoi faire une boîte
  • un bouton poussoir
  • une plaque labdec


création de l'arbre

ArbreTest.jpg

Première ébauche de notre arbre

Pour cette étape, nous avons besoins de fils et de temps (beaucoup de temps).

première étape

Prendre un fil assez épais et solide et faire un cercle du diamètre voulu.

deuxième étape

Prendre un autre câble, le découper en plein de bout de même longueur. Une fois le découpage terminer, dénuder ou non les fils selon vos goût.

Puis enrouler tous les câbles sur un côté de l'arc de cercle, enrouler ensuite vos fils de manière a faire un tronc, puis séparé les au fur et à mesure pour faire des branches de moins en moins épaisses et enroulé de nouveaux les câbles sur l'arc de cercle.

Dernière étape

prendre un câble très long. Dénuder le ou non selon vos goût, puis torsader le autour du cercle.



Voici le résultat :

Arbre final.jpg

Arbre final


création de la boîte

Prenez l'arbre, du bois, et de quoi le fixer (clous, vis à bois ...)

Dimensionner la planche supérieur de votre boîte en fonction du diamètre de votre arbre, il doit être poser dessus sans problème. Puis faite un entourage pour pouvoir mettre la carte arduino et le câblage dans votre boîte. Une fois couper fixez les côtés de votre boîte.

Boite interieur2.jpg


Posez votre arbre sur le dessus de votre boîte et marqué les endroits où vous voulez mettre vos leds. Puis percez les trous aux endroits marqué.

création du circuit électrique

Nous avons câblé notre arbre suivant ce modèle :

SchémaArbreRêve.PNG

schéma de câblage de notre arbre


assemblage de l'ensemble

Code utilisé pour le prototype

//============= Arbre Veilleuse ==============
//Coordonner 4 groupes de 5 leds pour réaliser différentes fonctions (clignoter ensemble/séparément,
//rester allumées/éteintes, clignotement alterné,etc) à partir d'un appui sur le bouton poussoir.
//Définition des variables de broche
const int bp = 1;
const int grpLed_1 = 2;
const int grpLed_2 = 3;
const int grpLed_3 = 4;
const int grpLed_4 = 5;

//Définition des variables d'état int StateBp = digitalRead(bp); bool StateLed[4]={LOW, LOW, LOW, LOW}; int mode = 0; //Mode par défaut int etape =0; //Etape clignotement unsigned long previousMillis = 0; // Dernier instant où l'état de la led a été modifié const long interval = 500; // intervalle de clignotement (millisecondes) void setup() {

 //Initialisation de la communication série à 9600 bits par seconde
 Serial.begin(9600);
 //Indication des entrées
 pinMode(bp, INPUT);
 pinMode(grpLed_1, OUTPUT);
 pinMode(grpLed_2, OUTPUT);
 pinMode(grpLed_3, OUTPUT);
 pinMode(grpLed_4, OUTPUT);

} void loop() {

 unsigned long currentMillis = millis();
 //Rafraichissement des lectures du bouton poussoir
 StateBp = digitalRead(bp);
 //Un changement de mode ?
 if (StateBp == HIGH)
 {  Serial.print("Hey !! mode = ");Serial.println(mode);
   mode+=1; 
   ExtinctionAll(StateLed);//reset
 }
 //Modifie les états des Leds selon le mode
 switch (mode) {
   case 1 : //Allumage de l'ensemble des led
     AllumerAll(StateLed);
     break;
   case 2 : //Clignotement de toutes les leds simultanément
   if (currentMillis - previousMillis >= interval) 
    {
     StateLed[0]=ClignoterGrp(StateLed[0]);
     StateLed[1]=ClignoterGrp(StateLed[1]);
     StateLed[2]=ClignoterGrp(StateLed[2]);
     StateLed[3]=ClignoterGrp(StateLed[3]);
    }
     break;
   case 3 : //Alumage des leds les unes après les autres
     if (currentMillis - previousMillis >= interval)
     {
       etape+=1; //Passage à l'étape suivante
       switch (etape) { // Allumer un groupe ou plusieurs en fonction de la séquence définie
         case 1 : 
           StateLed[3] = LOW;
           StateLed[0] = HIGH;
           break;
         case 2 : 
           StateLed[0] = LOW;
           StateLed[1] = HIGH;
           break;
         case 3 : 
           StateLed[1] = LOW;
           StateLed[2] = HIGH;
           break;
         case 4 : 
           StateLed[2] = LOW;
           StateLed[3] = HIGH;
           etape=0;
           break;
         default :
           etape=0;
           break;
       }
     }
     break;
   default :
     //Si le mode n'est pas l'un de ceux au dessus, on éteint les leds et on fait passer le mode à 0
     mode = 0;
     ExtinctionAll(StateLed);
     break;
 }
 //Retour vers les sorties
 digitalWrite(grpLed_1, StateLed[0]);
 digitalWrite(grpLed_2, StateLed[1]);
 digitalWrite(grpLed_3, StateLed[2]);
 digitalWrite(grpLed_4, StateLed[3]);
 //Affichage console pour vérification
 Serial.print("Rouge = "); Serial.print(StateLed[0]); Serial.print('\n');
 Serial.print("Bleu = "); Serial.print(StateLed[1]); Serial.print('\n');
 Serial.print("Vert = "); Serial.print(StateLed[2]); Serial.print('\n');
 Serial.print("Jaune = "); Serial.print(StateLed[3]); Serial.print('\n');
 Serial.print('\n');

}//loop //Fonction pour éteindre toutes les leds void ExtinctionAll(bool StateLed[4]) {

 StateLed[0] = LOW;
 StateLed[1] = LOW;
 StateLed[2] = LOW;
 StateLed[3] = LOW;

}

//Fonction pour éteindre toutes les leds void AllumerAll(bool StateLed[4]) {

 StateLed[0] = HIGH;
 StateLed[1] = HIGH;
 StateLed[2] = HIGH;
 StateLed[3] = HIGH;

}

//Fonction pour faire clignoter un des groupes de leds bool ClignoterGrp(bool StateLedi) {

 if (StateLedi == HIGH)
 {StateLedi=LOW;}
 else
 {StateLedi=HIGH;}
 return StateLedi;

}