Go Down

Topic: Problème pour sortir d'une boucle (Read 589 times) previous topic - next topic

Gator

Bonsoir à tous.
Voilà je vous expose mon pb:
je cherche a fabriquer un système simple qui detecte la pluie et qui active un relais pdt une durée déterminé lorsqu'il pleut (le stysteme va permettre de fermer mon velux automatiquement).
Sauf que la, problème. J'arrive bien à faire fonctionner le systeme mais des que le capteur redetecte de la pluie il reboucle et le relais refonctionne. Je souhaiterais réussir a sortir de la boucle lorsque le relais a fonctionner.
Je met mon ptit bout de code à disposition

J-M-L

#1
Aug 22, 2017, 10:36 pm Last Edit: Aug 22, 2017, 10:37 pm by J-M-L
Bonjour et bienvenue..

idéalement on poste directement le code avec les code tags autour du code:
[code] // votre code ici [/code].

ça doit ressembler à cela:
Code: [Select]
// votre code ici
(faites aussi ctrl-T (PC) or cmd-T (Mac) dans l'IDE avant de copier le code pour qu'il soit indenté correctement)

----- voici votre code ---
Code: [Select]
const int capteur = 10; // pin connecté à la sortie digital du capteur
const int relais = 4; // pin connecté à la relais + resistance

void setup()
{
  pinMode(capteur, INPUT);
  pinMode(relais, OUTPUT);
}

void loop()
{
  if (digitalRead(capteur) == LOW)
  {
    //delay(3000);
    digitalWrite(relais, LOW); // Allumer la relais
    delay(1000); // Temps de traitement

  }
  else
  {
    digitalWrite(relais, HIGH); // Eteindre la relais
    delay(10); // Temps de traitement
  }
}



essayez d'écrire en français ce que doit faire votre automate. il lui faudra sans doute une petite mémoire pour savoir dans quel état il est (pluie détectée ou pas)

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Gator

Oui j'ai vu que après qu'on pouvais integrer le code directement.. désolé

Vous m'avez dit d'integrer une mémoire ? sortir de la boucle ne serais pas plus simple ? du style boucle while avec break ?

J-M-L

et sortir de la boucle pour aller où?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Gator

bha pour stopper le programme
j'aimerais qu'il sarrete une fois que le relais est activer 1 fois.
Sinon avec la pluie le capteur va etre continuellement activer et le relais va rester actif ..

J-M-L

et vous ne voulez pas l'arrêter quand la pluie s'arrête?
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Gator

non j'aimerais qu'il sarrete des qu'il a donner l'ordre au relais de fonction pdt la durée determiné et ensuite stop. Et pour redemarrer le programme -> reboot de la carte manuellement
vous comprenez ?

J-M-L

#7
Aug 23, 2017, 01:41 am Last Edit: Aug 23, 2017, 02:24 am by J-M-L
Oui je comprends :)

je trouve ça overkill d'utiliser un microcontroleur pour ça quand un montage électronique suffit (cherchez "latching relay") mais je comprends

Vous pouvez faire exit(0); et ça termine votre programme (ça fait une éternité que je n'ai pas testé le comportement de exit)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

infobarquee

bonjour,
c'est se compliquer la vie que de redémarrer la carte

une simple variable dans le if suffit pour stopper la condition
Code: [Select]

bool arret = false
..
..
..
 if (digitalRead(capteur) == LOW && arret = false)
  {
    //delay(3000);
    digitalWrite(relais, LOW); // Allumer la relais
    delay(1000); // Temps de traitement

arret = true;

  }


et au lieu de redémarrer la carte, un simple bouton qui remet à false arret
AUCUNE AIDE PAR MP

J-M-L

#9
Aug 23, 2017, 10:04 am Last Edit: Aug 23, 2017, 10:07 am by J-M-L
bonjour,
c'est se compliquer la vie que de redémarrer la carte
et au lieu de redémarrer la carte, un simple bouton qui remet à false arret
euh - c'est comme appuyer sur le bouton reset  :)
si c'est vraiment tout ce que fait l'arduino, faire suivre un signal pour déclencher un relais, il n'y a pas besoin d'arduino.

vous pouvez même avec le montage RC adéquat gérer une durée d'allumage
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

infobarquee

Quote
euh - c'est comme appuyer sur le bouton reset  :)
oui, mais si la carte est dans un boitier?
tu fais quoi? tu ouvre la boite, donc un bouton externe est le bienvenue ;)

mais je doute quand même que le nono gère juste le capteur et le relais, sinon, comme tu le dis, il y a des montages avec quelques composants qui économisent une nono.
AUCUNE AIDE PAR MP

J-M-L

Quote
tu fais quoi? tu ouvre la boite, donc un bouton externe est le bienvenue ;)
j'enlève la prise et je la remets :)
Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

infobarquee

ou alors, tu coupe de disjoncteur de la maison.
franchement, c'est couper les cheveux en 4 tes histoires ;)
AUCUNE AIDE PAR MP

J-M-L

Hello - Please do not PM me for help,  others will benefit as well if you post your question publicly on the forums.
Bonjour Pas de messages privés SVP, postez dans le forum directement pour que ça profite à tous

Go Up