Commit 481d85f73faefcde9a9c5b68e7c11dec2e7f6dec
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 | { | ... | ... |