L'arbre des Rêves : Différence entre versions
Ligne 21 : | Ligne 21 : | ||
− | == | + | ==Les différentes étapes de la création== |
Ligne 27 : | Ligne 27 : | ||
''Première ébauche de notre arbre'' | ''Première ébauche de notre arbre'' | ||
− | + | ||
* création de la boîte | * création de la boîte |
Version du 21 janvier 2019 à 10:50
Sommaire
INTRODUCTION
Nous participons au hackathon 2019 lors de notre inter semestre.
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
Les différentes étapes de la création
Première ébauche de notre arbre
- création de la boîte
- création de l'arbre
- création du circuit électrique
Nous avons câblé notre arbre suivant ce modèle :
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;
}