Partage
  • Partager sur Facebook
  • Partager sur Twitter

Arduino : Sortir d'une boucle avec une requête

language Arduino, utilisation esp8266 pour créer mon serveur(PA)

    11 novembre 2017 à 14:22:34

    Bonjour, je veux créer un programme (Arduino) permettant au client (ici l'utilisateur) de pouvoir envoyer une requête au serveur (ici un ESP8266) pour choisir un 'programme' de clignotement de LED, autrement dit je cherche à sortir d'une boucle sans devoir recréer un serveur à chaque fois, car mon serveur est créer dans ma fonction loop() et le problème est que si je créer une boucle pour faire clignoter ma LED, alors les requêtes que j'enverrais sur mon serveur ne seront pas traités puisque le programme sera bloqué à l'intérieur de cette boucle, j'ai alors ici plusieurs questions qui me viennent à l'esprit : 

    Est-il possible de créer mon serveur une bonne fois pour toute dans le void setup() ?? 

    Comment puis-je sortir d'une boucle en envoyant une requête ?? 

    Quel type de boucle utilisé ?? 

    sachant que les instructions à l'intérieur seront les suivant : 

    {

    digitalWrite(LED,1);

    delay(500);

    digitalWrite(LED,0);

    delay(500;

    }

    je suis ouvert à toutes vos réponses et toutes vos propositions ,

    MERCI !! 

    • Partager sur Facebook
    • Partager sur Twitter
      12 novembre 2017 à 6:55:28

      Salut,

      Je n'ai qu'un seul conseil à te donner: essaye de respecter le SRP!

      Ton problème est que tu veux faire deux choses:

      • faire clignoter tes led d'une part
      • récupérer les requête de l'utilisateur d'autre part

      Hé bien, crées toi deux fonctions: une qui s'occupera de faire clignoter les led, et une autre qui s'occupera de "décoder" les instructions que l'utilisateur pourrait donner.

      Une fois que ces deux fonctions travailleront correctement de manière séparée, tu pourras les utiliser toutes les deux dans ta boucle principale, et le tour sera joué ;)

      • Partager sur Facebook
      • Partager sur Twitter
      Ce qui se conçoit bien s'énonce clairement. Et les mots pour le dire viennent aisément.Mon nouveau livre : Coder efficacement - Bonnes pratiques et erreurs  à éviter (en C++)Avant de faire ce que tu ne pourras défaire, penses à tout ce que tu ne pourras plus faire une fois que tu l'auras fait
        13 novembre 2017 à 12:17:45

        Mauvais forum, je déplace dans la section électronique ;)

        Sinon, pour en revenir au problème, koala01 a raison : il te faut séparer la gestion de chaque tache.

        Il te faut aussi faire en sorte que la gestion ne soit pas bloquante !

        Par "bloquante", je veux dire que l'exécution d'une tache ne doit pas monopoliser le CPU pendant trop longtemps pour ne pas perturber les autres taches.

        Dans ton cas, le clignotement est réalisé par un delay qui bloque le programme pendant un certain temps avant de changer l'état de la LED, ce n'est pas bon car tu ne peut pas gérer le client pendant le clignotement.

        Je t'invite donc à remplacer delay par millis, ce sera beaucoup mieux.

        Tutoriel: https://www.arduino.cc/en/Tutorial/BlinkWithoutDelay

        • Partager sur Facebook
        • Partager sur Twitter

        Arduino : Sortir d'une boucle avec une requête

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown