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 100 strip.show();
101 101 }
102 102  
  103 +
103 104 /*
104 105 // fait avec application
105 106 void choix_couleur()
... ... @@ -252,8 +253,6 @@ void mouvement()
252 253 }
253 254  
254 255  
255   -//-------------------------------------------------------------------------------------------------------------------------------------------FONCTIONS PRINCIPALES
256   -
257 256  
258 257 //fonction regroupant l'utilisation de la led de manière automatique et du capteur de mouvement.
259 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 282 else
284 283 {
285 284 //Monitoring
286   - couleur(255,255,255);
287   -
  285 + couleur(255,255,255);
288 286  
  287 +
289 288 while(i<=5)
290 289 {
291 290 luminosite = analogRead(CAPTEUR);
292 291  
293 292 if(luminosite < seuil)
294 293 {
295   - couleur(255,255,255);
296   -
  294 + couleur(255,255,255);
  295 +
  296 +
297 297 //DETECTION D'UN MOUVEMENT
298 298 if(digitalRead(pirPin)==HIGH)
299 299 {
... ... @@ -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 361 //---------------------------------------------------------------------------------------------------------------------------------mainveilleuse()
360 362  
361 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 368 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
365   -
  369 +
  370 + //MODE AUTOMATIQUE
366 371 //si la veilleuse est allumé et interrupteur = LOW on utilise le mode automatique.
367 372 while (etatBouton == LOW) //test si le bouton a un niveau logique HAUT
368 373 {
369 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 475 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
375 476 }
376   -
  477 +
  478 + //MODE MANUEL (APPLICATION)
377 479 //on est eteint avec l'interrupteur manuel on peut tjrs utiliser l'application pour gerer la veilleuse
378 480 eteindre(); //la LED reste éteinte
379 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 490 //fonction permettant de faire les tests des foncions secondaires
389 491 void tests()
... ... @@ -400,14 +502,11 @@ void tests()
400 502 }
401 503  
402 504  
403   -
404   -
405   -//-------------------------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG
406 505 void loop()
407 506  
408 507 {
409 508 //tests();
410 509  
411   - mainVeilleuse();
412   - delay(200);
  510 + mainVeilleuse_auto();
  511 + delay(200);
413 512 }
... ...