Commit 77f5e2ad3ff051f8629b81013bbec705bada28db

Authored by csaad
1 parent 481d85f7

Modification de mainVeilleuse_auto() la fonction finale réalisant tout

Showing 1 changed file with 119 additions and 20 deletions   Show diff stats
progArduino/principal/principal.ino
@@ -100,6 +100,7 @@ void couleur(int R, int G, int B) @@ -100,6 +100,7 @@ void couleur(int R, int G, int B)
100 strip.show(); 100 strip.show();
101 } 101 }
102 102
  103 +
103 /* 104 /*
104 // fait avec application 105 // fait avec application
105 void choix_couleur() 106 void choix_couleur()
@@ -252,8 +253,6 @@ void mouvement() @@ -252,8 +253,6 @@ void mouvement()
252 } 253 }
253 254
254 255
255 -//-------------------------------------------------------------------------------------------------------------------------------------------FONCTIONS PRINCIPALES  
256 -  
257 256
258 //fonction regroupant l'utilisation de la led de manière automatique et du capteur de mouvement. 257 //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 258 //on veut l'utilisation du capteur (soit réalisation de mouvement) uniquement quand la led est allumée
@@ -283,17 +282,18 @@ void automatique() @@ -283,17 +282,18 @@ void automatique()
283 else 282 else
284 { 283 {
285 //Monitoring 284 //Monitoring
286 - couleur(255,255,255);  
287 - 285 + couleur(255,255,255);
288 286
  287 +
289 while(i<=5) 288 while(i<=5)
290 { 289 {
291 luminosite = analogRead(CAPTEUR); 290 luminosite = analogRead(CAPTEUR);
292 291
293 if(luminosite < seuil) 292 if(luminosite < seuil)
294 { 293 {
295 - couleur(255,255,255);  
296 - 294 + couleur(255,255,255);
  295 +
  296 +
297 //DETECTION D'UN MOUVEMENT 297 //DETECTION D'UN MOUVEMENT
298 if(digitalRead(pirPin)==HIGH) 298 if(digitalRead(pirPin)==HIGH)
299 { 299 {
@@ -350,8 +350,10 @@ void automatique() @@ -350,8 +350,10 @@ void automatique()
350 350
351 } 351 }
352 352
353 -  
354 - 353 +
  354 +
  355 +
  356 +//-------------------------------------------------------------------------------------------------------------------------------------------FONCTIONS PRINCIPALES
355 357
356 358
357 359
@@ -359,31 +361,131 @@ void automatique() @@ -359,31 +361,131 @@ void automatique()
359 //---------------------------------------------------------------------------------------------------------------------------------mainveilleuse() 361 //---------------------------------------------------------------------------------------------------------------------------------mainveilleuse()
360 362
361 //fonction du programme principal (à copier plus tard dans la LOOP() 363 //fonction du programme principal (à copier plus tard dans la LOOP()
362 -void mainVeilleuse() 364 +//elle permet l'utilisation de la veilleuse de manière automatique selon la position de l'interrupteur, sinon c'est l'application qui gere le contrôle
  365 +//Elle est constituée de la fusion des fonctions secondaires: lumiere_auto(), mouvement() et automatique()
  366 +void mainVeilleuse_auto()
363 { 367 {
364 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9 368 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
365 - 369 +
  370 + //MODE AUTOMATIQUE
366 //si la veilleuse est allumé et interrupteur = LOW on utilise le mode automatique. 371 //si la veilleuse est allumé et interrupteur = LOW on utilise le mode automatique.
367 while (etatBouton == LOW) //test si le bouton a un niveau logique HAUT 372 while (etatBouton == LOW) //test si le bouton a un niveau logique HAUT
368 { 373 {
369 delay(1000); 374 delay(1000);
370 375
371 - etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9  
372 - automatique(); 376 + etatBouton = digitalRead(pinInter);
  377 +
  378 + if(etatBouton==LOW)
  379 + {
  380 + //On récupère la valeur du seuil
  381 + luminosite = analogRead(CAPTEUR);
  382 + int i=0;
  383 +
  384 + //Monitoring
  385 + Serial.print("Luminosite = ");
  386 + Serial.print(luminosite);
  387 + Serial.print(" / Seuil = ");
  388 + Serial.print(seuil);
  389 +
  390 + // on l'éteint
  391 + if (luminosite > seuil)
  392 + {
  393 + eteindre();
  394 + Serial.println(" / LED OFF");
  395 + }
  396 +
  397 + //Allumage de la led si la luminosité est inférieur au seuil (on l'allume dans la couleur blanche la base)
  398 + //enfant couché il doit dormir
  399 + else
  400 + {
  401 + //Monitoring
  402 + couleur(255,255,255);
  403 +
  404 +
  405 + while(i<=5 && etatBouton==LOW)
  406 + {
  407 + luminosite = analogRead(CAPTEUR);
  408 +
  409 + if(luminosite < seuil)
  410 + {
  411 + couleur(255,255,255);
  412 +
  413 + //DETECTION D'UN MOUVEMENT
  414 + if(digitalRead(pirPin)==HIGH)
  415 + {
  416 + digitalWrite(ledPin,HIGH); // la led modélise la déection d'un mouvement selon l'etat du capteur
  417 + if (lockLow)
  418 + {
  419 + //être sûr d'attendre la transistion à l'état LOW du capteur pour continuer :
  420 + lockLow= false;
  421 + delay(50);
  422 + }
  423 + takeLowTime = true;
  424 + }
  425 +
  426 + //FIN DE LA DETECTION
  427 + if(digitalRead(pirPin)==LOW)
  428 + {
  429 + digitalWrite(ledPin, LOW);
  430 + if(takeLowTime)
  431 + {
  432 + lowIn= millis(); // enregistrement du temps qu'il faut pour passer de HIGH à LOW pour le capteur
  433 + takeLowTime = false; // être sûr que cela se fait uniquement au debut du passage à LOW
  434 + }
  435 + // Ainsi si le capteur est LOW plus longtemps que la pause, on suppose qu'il n'y plus de mouvement
  436 + // if > être sûr que la suite s'execute seulement après un nouveau mouvement, donc nouvelle séquence de led allumée
  437 + if(!lockLow && millis()-lowIn > pause)
  438 + {
  439 + lockLow = true;
  440 + i++;
  441 + Serial.println(i);
  442 +
  443 + //CHILD AWAKE
  444 + if(i==5)
  445 + {
  446 + Serial.println("Sommeil agite !!!");
  447 + MESSAGE = 1;
  448 + i=0;
  449 + }
  450 + delay(20);
  451 + }
  452 + }
  453 +
  454 + delay(500);
  455 + }
  456 +
  457 + else
  458 + {
  459 + eteindre();
  460 + i=0;
  461 + }
  462 +
  463 + etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
  464 +
  465 + }
  466 + delay(50);
  467 + }
  468 + }
  469 + else
  470 + {
  471 + eteindre();
  472 + Serial.println("UTILISATION APPLICATION");
  473 + }
373 474
374 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9 475 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
375 } 476 }
376 - 477 +
  478 + //MODE MANUEL (APPLICATION)
377 //on est eteint avec l'interrupteur manuel on peut tjrs utiliser l'application pour gerer la veilleuse 479 //on est eteint avec l'interrupteur manuel on peut tjrs utiliser l'application pour gerer la veilleuse
378 eteindre(); //la LED reste éteinte 480 eteindre(); //la LED reste éteinte
379 Serial.println("UTILISATION APPLICATION"); 481 Serial.println("UTILISATION APPLICATION");
380 482
381 - delay(2000); 483 + delay(1000);
382 484
383 485
384 } 486 }
385 487
386 - 488 +//-------------------------------------------------------------------------------------------------------------------------------------------TESTS & LOOP == MAIN PROG
387 489
388 //fonction permettant de faire les tests des foncions secondaires 490 //fonction permettant de faire les tests des foncions secondaires
389 void tests() 491 void tests()
@@ -400,14 +502,11 @@ void tests() @@ -400,14 +502,11 @@ void tests()
400 } 502 }
401 503
402 504
403 -  
404 -  
405 -//-------------------------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG  
406 void loop() 505 void loop()
407 506
408 { 507 {
409 //tests(); 508 //tests();
410 509
411 - mainVeilleuse();  
412 - delay(200); 510 + mainVeilleuse_auto();
  511 + delay(200);
413 } 512 }