Partage
  • Partager sur Facebook
  • Partager sur Twitter

Clap clap

    11 novembre 2014 à 18:32:13

    Bonsoir, j'aimerais vous faire part du problème que je rencontre

    Mon programme devrai faire en sorte que : Quand je tape une fois dans mes mains, une led s'allume, et quand je tape deux fois encore, la LED s'éteint. Seulement, je programme sur une carte Arduino, et étant donné que le forum des français est INACTIF contrairement au forum anglais qui bouge beaucoup +, je viens ici vous poser la question, je vais donc essayer d'adapter le langage en C de Codeblocks.

    Voilà (+ ou -)le programme.

    int LED=0;

    int CapteurSon=0;

    int Compteur=0;

    if(CapteurSon=1)

    {

       Compteur++;

    }

    if (Compteur ==1 || Compteur==2)

    {

      LED=1;

    }

    if(Compteur ==3)

    {

      LED=0;

     Compteur=0;

    }

     Donc là imaginons que ce soit en binaire pour la LED et le Capteur son, seulement 0 ou 1.

    Si la led est égale à 1, elle s'allume, sinon elle reste éteinte.

    Si le Capteur son est égal à 1, c'est qu'il a détecté un son, s'il ne détecte rien, il est égal à 0.

    Donc selon le programme, si je tape dans mes mains, le capteur détecte un son et est donc égal à 1, il incrémente alors la variable Compteur de 1.

    Du coup, ça allume la LED vu que selon le if, Compteur est égal à 1

    Ensuite si je retape dans mes mains, Compteur est égal à 2 et donc ça reste allumé, étant donné qu'il faut encore 1 claquement dans les mains pour l'éteindre.

    Ensuite, si je claque 1 fois dans les mains, la LED s'éteint et Compteur se remet à 0 pour repartir de zéro.

    Le problème est que pour que l'incrémentation du Compteur se fasse, il faut que je tape dans les mains au moment où l'instruction du if s'exécute pour que l'incrémentation se fasse, et ça ne fonctionne pas :(

    Je tiens à signaler que sous Arduino, le programme se répète en continu, donc je n'ai besoin d'aucune boucle pour le faire fonctionner.

    Voilà, j'espère que vous pourriez m'aider concernant mon problème.

    Bonne journée ou bonne soirée à vous :)

    Cordialement, Hugo.

    • Partager sur Facebook
    • Partager sur Twitter
      13 novembre 2014 à 17:29:02

      UP (avec ce compte là) Svp
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        14 novembre 2014 à 10:26:13

        Salut,

        Pense à indenter ton code.

        ne ne connais pas Arduino mais je vais te répondre avec ce que tu expliques.

        Si ta fonction est répétée continuellement, ton compteur sera donc remis à 0 à chaque fois puisque tu as : 

        int Compteur=0;
        

        au début de ta fonction.

        Mets donc ton compteur en global et ça devrait marcher.

        En gros quelque chose comme ça :

        int COMPTEUR;
        
        void lafonction()
        {
            int LED=0;
            int CapteurSon=0;
        
            if(CapteurSon=1)
            {
                COMPTEUR++;
            }
        
            if (COMPTEUR ==1 || COMPTEUR==2)
            {
                LED=1;
            }
        
            if(COMPTEUR == 3)
            {
                LED=0;
                COMPTEUR=0;
            }
        }






        -
        Edité par Anonyme 14 novembre 2014 à 10:29:56

        • Partager sur Facebook
        • Partager sur Twitter
          7 décembre 2014 à 11:48:06

          Ah oui, c'est juste pour ça ... Honte à moi désolé, et merci de m'avoir aidé !
          • Partager sur Facebook
          • Partager sur Twitter

          Clap clap

          × 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