Commit 481d85f73faefcde9a9c5b68e7c11dec2e7f6dec

Authored by csaad
1 parent dd13ea41

correction de automatique() et finalisation automatique()

Showing 1 changed file with 98 additions and 23 deletions   Show diff stats
progArduino/principal/principal.ino
... ... @@ -101,6 +101,7 @@ void couleur(int R, int G, int B)
101 101 }
102 102  
103 103 /*
  104 +// fait avec application
104 105 void choix_couleur()
105 106 {
106 107 int R,G,B;
... ... @@ -213,6 +214,7 @@ void mouvement()
213 214 takeLowTime = true;
214 215 }
215 216  
  217 +
216 218 //DETECTION'S END
217 219 if(digitalRead(pirPin) == LOW)
218 220 {
... ... @@ -232,60 +234,130 @@ void mouvement()
232 234 //Serial.print("motion ended at "); //output
233 235 //Serial.print((millis() - pause)/1000);
234 236 //Serial.println(" sec");
235   - i++;
236 237 Serial.println(i);
  238 + i++;
  239 +
237 240 //CHILD IS AWAKE
238 241 // if(i==5 || ((millis() - pause)/1000)-(millis()/1000)> 10
239 242 if(i==5){
240 243 Serial.println("Sommeil agite !!!");
241 244 MESSAGE = 1; //servira pour la progra html (peut-être)
242   - Serial.println(MESSAGE);
  245 + Serial.println("MESSAGE");
243 246 i=0;
244 247 }
245   - delay(50);
  248 + delay(20);
246 249 }
247 250 }
248 251 }
249 252 }
250 253  
251 254  
  255 +//-------------------------------------------------------------------------------------------------------------------------------------------FONCTIONS PRINCIPALES
  256 +
  257 +
  258 +//fonction regroupant l'utilisation de la led de manière automatique et du capteur de mouvement.
  259 +//on veut l'utilisation du capteur (soit réalisation de mouvement) uniquement quand la led est allumée
  260 +
  261 +//--------------------------------------------------------------------------------------------------------------------automatique()
252 262 void automatique()
253 263 {
254 264 //On récupère la valeur du seuil
255 265 luminosite = analogRead(CAPTEUR);
256   - int mouv =1;
  266 + int i=0;
257 267  
258 268 //Monitoring
259 269 Serial.print("Luminosite = ");
260 270 Serial.print(luminosite);
261 271 Serial.print(" / Seuil = ");
262 272 Serial.print(seuil);
263   -
  273 +
  274 + // on l'éteint
  275 + if (luminosite > seuil)
  276 + {
  277 + eteindre();
  278 + Serial.println(" / LED OFF");
  279 + }
  280 +
264 281 //Allumage de la led si la luminosité est inférieur au seuil (on l'allume dans la couleur blanche la base)
265   - if(luminosite < seuil) {
266   - couleur(255,255,255);
  282 + //enfant couché il doit dormir
  283 + else
  284 + {
267 285 //Monitoring
268   - Serial.println(" / LED ON");
269   - }
270   - //Dans le cas contraire, on l'éteint
271   - else {
272   - digitalWrite(PININ, LOW);
273   - mouv=0;
274   - eteindre();
275   - Serial.println(" / LED OFF");
276   - }
277   - delay(50);
  286 + couleur(255,255,255);
  287 +
  288 +
  289 + while(i<=5)
  290 + {
  291 + luminosite = analogRead(CAPTEUR);
278 292  
279   - if(mouv == 1)
280   - {
281   - //Serial.println("mouv");
282   - mouvement();
  293 + if(luminosite < seuil)
  294 + {
  295 + couleur(255,255,255);
  296 +
  297 + //DETECTION D'UN MOUVEMENT
  298 + if(digitalRead(pirPin)==HIGH)
  299 + {
  300 + digitalWrite(ledPin,HIGH); // la led modélise la déection d'un mouvement selon l'etat du capteur
  301 + if (lockLow)
  302 + {
  303 + //être sûr d'attendre la transistion à l'état LOW du capteur pour continuer :
  304 + lockLow= false;
  305 + delay(50);
  306 + }
  307 + takeLowTime = true;
  308 + }
  309 +
  310 + //FIN DE LA DETECTION
  311 + if(digitalRead(pirPin)==LOW)
  312 + {
  313 + digitalWrite(ledPin, LOW);
  314 + if(takeLowTime)
  315 + {
  316 + lowIn= millis(); // enregistrement du temps qu'il faut pour passer de HIGH à LOW pour le capteur
  317 + takeLowTime = false; // être sûr que cela se fait uniquement au debut du passage à LOW
  318 + }
  319 + // Ainsi si le capteur est LOW plus longtemps que la pause, on suppose qu'il n'y plus de mouvement
  320 + // if > être sûr que la suite s'execute seulement après un nouveau mouvement, donc nouvelle séquence de led allumée
  321 + if(!lockLow && millis()-lowIn > pause)
  322 + {
  323 + lockLow = true;
  324 + i++;
  325 + Serial.println(i);
  326 +
  327 + //CHILD AWAKE
  328 + if(i==5)
  329 + {
  330 + Serial.println("Sommeil agite !!!");
  331 + MESSAGE = 1;
  332 + i=0;
  333 + }
  334 + delay(20);
  335 + }
  336 + }
  337 +
  338 + delay(500);
  339 + }
  340 + else
  341 + {
  342 + eteindre();
  343 + i=0;
  344 + }
  345 +
  346 +
  347 + }
  348 + delay(50);
283 349 }
  350 +
284 351 }
285 352  
286   -//---------------------------------------------------------------------------------------------------------------------------FONCTIONS PRINCIPALES
  353 +
  354 +
287 355  
288 356  
  357 +
  358 +
  359 +//---------------------------------------------------------------------------------------------------------------------------------mainveilleuse()
  360 +
289 361 //fonction du programme principal (à copier plus tard dans la LOOP()
290 362 void mainVeilleuse()
291 363 {
... ... @@ -296,6 +368,7 @@ void mainVeilleuse()
296 368 {
297 369 delay(1000);
298 370  
  371 + etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
299 372 automatique();
300 373  
301 374 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
... ... @@ -304,6 +377,8 @@ void mainVeilleuse()
304 377 //on est eteint avec l'interrupteur manuel on peut tjrs utiliser l'application pour gerer la veilleuse
305 378 eteindre(); //la LED reste éteinte
306 379 Serial.println("UTILISATION APPLICATION");
  380 +
  381 + delay(2000);
307 382  
308 383  
309 384 }
... ... @@ -327,7 +402,7 @@ void tests()
327 402  
328 403  
329 404  
330   -//----------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG
  405 +//-------------------------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG
331 406 void loop()
332 407  
333 408 {
... ...