From 481d85f73faefcde9a9c5b68e7c11dec2e7f6dec Mon Sep 17 00:00:00 2001 From: csaad Date: Mon, 8 May 2017 16:49:47 +0200 Subject: [PATCH] correction de automatique() et finalisation automatique() --- progArduino/principal/principal.ino | 121 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 98 insertions(+), 23 deletions(-) diff --git a/progArduino/principal/principal.ino b/progArduino/principal/principal.ino index cd1ad8b..d9c6878 100644 --- a/progArduino/principal/principal.ino +++ b/progArduino/principal/principal.ino @@ -101,6 +101,7 @@ void couleur(int R, int G, int B) } /* +// fait avec application void choix_couleur() { int R,G,B; @@ -213,6 +214,7 @@ void mouvement() takeLowTime = true; } + //DETECTION'S END if(digitalRead(pirPin) == LOW) { @@ -232,60 +234,130 @@ void mouvement() //Serial.print("motion ended at "); //output //Serial.print((millis() - pause)/1000); //Serial.println(" sec"); - i++; Serial.println(i); + i++; + //CHILD IS AWAKE // if(i==5 || ((millis() - pause)/1000)-(millis()/1000)> 10 if(i==5){ Serial.println("Sommeil agite !!!"); MESSAGE = 1; //servira pour la progra html (peut-être) - Serial.println(MESSAGE); + Serial.println("MESSAGE"); i=0; } - delay(50); + delay(20); } } } } +//-------------------------------------------------------------------------------------------------------------------------------------------FONCTIONS PRINCIPALES + + +//fonction regroupant l'utilisation de la led de manière automatique et du capteur de mouvement. +//on veut l'utilisation du capteur (soit réalisation de mouvement) uniquement quand la led est allumée + +//--------------------------------------------------------------------------------------------------------------------automatique() void automatique() { //On récupère la valeur du seuil luminosite = analogRead(CAPTEUR); - int mouv =1; + int i=0; //Monitoring Serial.print("Luminosite = "); Serial.print(luminosite); Serial.print(" / Seuil = "); Serial.print(seuil); - + + // on l'éteint + if (luminosite > seuil) + { + eteindre(); + Serial.println(" / LED OFF"); + } + //Allumage de la led si la luminosité est inférieur au seuil (on l'allume dans la couleur blanche la base) - if(luminosite < seuil) { - couleur(255,255,255); + //enfant couché il doit dormir + else + { //Monitoring - Serial.println(" / LED ON"); - } - //Dans le cas contraire, on l'éteint - else { - digitalWrite(PININ, LOW); - mouv=0; - eteindre(); - Serial.println(" / LED OFF"); - } - delay(50); + couleur(255,255,255); + + + while(i<=5) + { + luminosite = analogRead(CAPTEUR); - if(mouv == 1) - { - //Serial.println("mouv"); - mouvement(); + if(luminosite < seuil) + { + couleur(255,255,255); + + //DETECTION D'UN MOUVEMENT + if(digitalRead(pirPin)==HIGH) + { + digitalWrite(ledPin,HIGH); // la led modélise la déection d'un mouvement selon l'etat du capteur + if (lockLow) + { + //être sûr d'attendre la transistion à l'état LOW du capteur pour continuer : + lockLow= false; + delay(50); + } + takeLowTime = true; + } + + //FIN DE LA DETECTION + if(digitalRead(pirPin)==LOW) + { + digitalWrite(ledPin, LOW); + if(takeLowTime) + { + lowIn= millis(); // enregistrement du temps qu'il faut pour passer de HIGH à LOW pour le capteur + takeLowTime = false; // être sûr que cela se fait uniquement au debut du passage à LOW + } + // Ainsi si le capteur est LOW plus longtemps que la pause, on suppose qu'il n'y plus de mouvement + // if > être sûr que la suite s'execute seulement après un nouveau mouvement, donc nouvelle séquence de led allumée + if(!lockLow && millis()-lowIn > pause) + { + lockLow = true; + i++; + Serial.println(i); + + //CHILD AWAKE + if(i==5) + { + Serial.println("Sommeil agite !!!"); + MESSAGE = 1; + i=0; + } + delay(20); + } + } + + delay(500); + } + else + { + eteindre(); + i=0; + } + + + } + delay(50); } + } -//---------------------------------------------------------------------------------------------------------------------------FONCTIONS PRINCIPALES + + + + +//---------------------------------------------------------------------------------------------------------------------------------mainveilleuse() + //fonction du programme principal (à copier plus tard dans la LOOP() void mainVeilleuse() { @@ -296,6 +368,7 @@ void mainVeilleuse() { delay(1000); + etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9 automatique(); etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9 @@ -304,6 +377,8 @@ void mainVeilleuse() //on est eteint avec l'interrupteur manuel on peut tjrs utiliser l'application pour gerer la veilleuse eteindre(); //la LED reste éteinte Serial.println("UTILISATION APPLICATION"); + + delay(2000); } @@ -327,7 +402,7 @@ void tests() -//----------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG +//-------------------------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG void loop() { -- libgit2 0.21.2