Arduino Forum

International => Français => Topic started by: Gator on Aug 22, 2017, 10:27 pm

Title: Problème pour sortir d'une boucle
Post by: Gator on Aug 22, 2017, 10:27 pm
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
Title: Re: Problème pour sortir d'une boucle
Post by: J-M-L on Aug 22, 2017, 10:36 pm
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)

Title: Re: Problème pour sortir d'une boucle
Post by: Gator on Aug 22, 2017, 11:07 pm
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 ?
Title: Re: Problème pour sortir d'une boucle
Post by: J-M-L on Aug 22, 2017, 11:09 pm
et sortir de la boucle pour aller où?
Title: Re: Problème pour sortir d'une boucle
Post by: Gator on Aug 22, 2017, 11:14 pm
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 ..
Title: Re: Problème pour sortir d'une boucle
Post by: J-M-L on Aug 22, 2017, 11:15 pm
et vous ne voulez pas l'arrêter quand la pluie s'arrête?
Title: Re: Problème pour sortir d'une boucle
Post by: Gator on Aug 22, 2017, 11:22 pm
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 ?
Title: Re: Problème pour sortir d'une boucle
Post by: J-M-L on Aug 23, 2017, 01:41 am
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)
Title: Re: Problème pour sortir d'une boucle
Post by: infobarquee on Aug 23, 2017, 09:44 am
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
Title: Re: Problème pour sortir d'une boucle
Post by: J-M-L on Aug 23, 2017, 10:04 am
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
Title: Re: Problème pour sortir d'une boucle
Post by: infobarquee on Aug 23, 2017, 10:16 am
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.
Title: Re: Problème pour sortir d'une boucle
Post by: J-M-L on Aug 23, 2017, 11:22 am
Quote
tu fais quoi? tu ouvre la boite, donc un bouton externe est le bienvenue ;)
j'enlève la prise et je la remets :)
Title: Re: Problème pour sortir d'une boucle
Post by: infobarquee on Aug 23, 2017, 11:25 am
ou alors, tu coupe de disjoncteur de la maison.
franchement, c'est couper les cheveux en 4 tes histoires ;)
Title: Re: Problème pour sortir d'une boucle
Post by: J-M-L on Aug 23, 2017, 11:36 am
bonne idée :)