Commit 77f5e2ad3ff051f8629b81013bbec705bada28db
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 | } |