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,6 +101,7 @@ void couleur(int R, int G, int B)
101 } 101 }
102 102
103 /* 103 /*
  104 +// fait avec application
104 void choix_couleur() 105 void choix_couleur()
105 { 106 {
106 int R,G,B; 107 int R,G,B;
@@ -213,6 +214,7 @@ void mouvement() @@ -213,6 +214,7 @@ void mouvement()
213 takeLowTime = true; 214 takeLowTime = true;
214 } 215 }
215 216
  217 +
216 //DETECTION'S END 218 //DETECTION'S END
217 if(digitalRead(pirPin) == LOW) 219 if(digitalRead(pirPin) == LOW)
218 { 220 {
@@ -232,60 +234,130 @@ void mouvement() @@ -232,60 +234,130 @@ void mouvement()
232 //Serial.print("motion ended at "); //output 234 //Serial.print("motion ended at "); //output
233 //Serial.print((millis() - pause)/1000); 235 //Serial.print((millis() - pause)/1000);
234 //Serial.println(" sec"); 236 //Serial.println(" sec");
235 - i++;  
236 Serial.println(i); 237 Serial.println(i);
  238 + i++;
  239 +
237 //CHILD IS AWAKE 240 //CHILD IS AWAKE
238 // if(i==5 || ((millis() - pause)/1000)-(millis()/1000)> 10 241 // if(i==5 || ((millis() - pause)/1000)-(millis()/1000)> 10
239 if(i==5){ 242 if(i==5){
240 Serial.println("Sommeil agite !!!"); 243 Serial.println("Sommeil agite !!!");
241 MESSAGE = 1; //servira pour la progra html (peut-être) 244 MESSAGE = 1; //servira pour la progra html (peut-être)
242 - Serial.println(MESSAGE); 245 + Serial.println("MESSAGE");
243 i=0; 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 void automatique() 262 void automatique()
253 { 263 {
254 //On récupère la valeur du seuil 264 //On récupère la valeur du seuil
255 luminosite = analogRead(CAPTEUR); 265 luminosite = analogRead(CAPTEUR);
256 - int mouv =1; 266 + int i=0;
257 267
258 //Monitoring 268 //Monitoring
259 Serial.print("Luminosite = "); 269 Serial.print("Luminosite = ");
260 Serial.print(luminosite); 270 Serial.print(luminosite);
261 Serial.print(" / Seuil = "); 271 Serial.print(" / Seuil = ");
262 Serial.print(seuil); 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 //Allumage de la led si la luminosité est inférieur au seuil (on l'allume dans la couleur blanche la base) 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 //Monitoring 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 //fonction du programme principal (à copier plus tard dans la LOOP() 361 //fonction du programme principal (à copier plus tard dans la LOOP()
290 void mainVeilleuse() 362 void mainVeilleuse()
291 { 363 {
@@ -296,6 +368,7 @@ void mainVeilleuse() @@ -296,6 +368,7 @@ void mainVeilleuse()
296 { 368 {
297 delay(1000); 369 delay(1000);
298 370
  371 + etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
299 automatique(); 372 automatique();
300 373
301 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9 374 etatBouton = digitalRead(pinInter); //Rappel :pinInter = 9
@@ -304,6 +377,8 @@ void mainVeilleuse() @@ -304,6 +377,8 @@ void mainVeilleuse()
304 //on est eteint avec l'interrupteur manuel on peut tjrs utiliser l'application pour gerer la veilleuse 377 //on est eteint avec l'interrupteur manuel on peut tjrs utiliser l'application pour gerer la veilleuse
305 eteindre(); //la LED reste éteinte 378 eteindre(); //la LED reste éteinte
306 Serial.println("UTILISATION APPLICATION"); 379 Serial.println("UTILISATION APPLICATION");
  380 +
  381 + delay(2000);
307 382
308 383
309 } 384 }
@@ -327,7 +402,7 @@ void tests() @@ -327,7 +402,7 @@ void tests()
327 402
328 403
329 404
330 -//----------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG 405 +//-------------------------------------------------------------------------------------------------------------------------------------------LOOP == MAIN PROG
331 void loop() 406 void loop()
332 407
333 { 408 {