Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation de la fonction "millis()"

    8 août 2012 à 22:36:26

    Bonjour,
    étant débutant et passionné en programmation et électronique, j'ai voulu réaliser les feux de signalisation avec la fonction "millis()" à la place de "delay" :-° (ajout d'un éventuel bouton). Mais mes feux restent au rouge. Pouvez-vous m'aider? :euh:
    Voici le code :
    const int led1r = 7;
    const int led1j = 6;
    const int led1v = 5;
    const int led2r = 4;
    const int led2j = 3;
    const int led2v = 2;

    unsigned long temps = 0; //variable qui stocke le temps

    void setup()
    {
    pinMode(led1r, OUTPUT);
    pinMode(led1j, OUTPUT);
    pinMode(led1v, OUTPUT);
    pinMode(led2r, OUTPUT);
    pinMode(led2j, OUTPUT);
    pinMode(led2v, OUTPUT);

    //configuration des sortie pour la carte MEGA2560
    digitalWrite(led1j, HIGH);
    digitalWrite(led1v, HIGH);
    digitalWrite(led2j, HIGH);
    digitalWrite(led2v, HIGH);

    }

    void loop()
    {
    temps = millis();

    while((millis() - temps) < 6000)
    {
    digitalWrite(led1r, LOW);
    digitalWrite(led2r, LOW);
    temps += 6000;
    }

    while((millis() - temps) < 500)
    {
    digitalWrite(led1j, LOW);
    temps += 500;
    }

    while((millis() - temps) < 8000)
    {
    digitalWrite(led1r, HIGH);
    digitalWrite(led1j, HIGH);
    digitalWrite(led1v, LOW);
    temps += 8000;
    }

    while((millis() - temps) < 500)
    {
    digitalWrite(led1v, HIGH);
    digitalWrite(led1j, LOW);
    temps = temps+500;
    }

    while((millis() - temps) < 6000)
    {
    digitalWrite(led1j, HIGH);
    digitalWrite(led1r, LOW);
    temps = temps+6000;
    }

    while((millis() - temps) < 500)
    {
    digitalWrite(led2j, LOW);
    temps = temps+500;
    }

    while((millis() - temps) < 8000)
    {
    digitalWrite(led2r, HIGH);
    digitalWrite(led2j, HIGH);
    digitalWrite(led2v, LOW);
    temps = temps+8000;
    }

    while((millis() - temps) < 500)
    {
    digitalWrite(led2v, HIGH);
    digitalWrite(led2j, LOW);
    temps = millis();
    }

    while((millis() - temps) < 500)
    {
    digitalWrite(led2j, HIGH);
    digitalWrite(led2r, LOW);
    temps = millis();
    }
    }


    Merci :soleil:
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      9 août 2012 à 0:15:31

      Bonjour,

      Quand tu met du code utilise la balise </> =)

      Afin d'avoir des noms de sujets plus clair, il est recommandé de mettre [Arduino] devant le nom de ton sujet.

      Afin de debuger ton problème, je te conseil d'initialiser le port Serie.
      Et d'afficher a l'écran les différents variables que tu utilise.
      Comme, par exemple:
      .	
      				.
      				.
      				.
      while((millis() - temps) < 6000)
      {
      
      	Serial.print(millis());
      	Serial.print("\t"); //tabulation pour avoir un espace stable
      	Serial.print(temps);
      	Serial.print("\t"); 
      	Serial.print(millis() - temps); // On a une machine qui sais calculer autant en profiter 
      	Serial.print("\t"); //tabulation pour avoir un espace stable
      	Serial.print(((millis() - temps) < 6000)); // Et on affiche directement la condition parce que l'on est flemmard 
      
      	digitalWrite(led1r, LOW);
      	digitalWrite(led2r, LOW);
      	temps += 6000;
      }
      				.
      				.
      				.
      
      • Partager sur Facebook
      • Partager sur Twitter
        9 août 2012 à 13:52:34

        @frédéric : je viens de te proposer une réponse dans les commentaires du tuto arduino (en réponse au commentaire que tu as posté)
        • Partager sur Facebook
        • Partager sur Twitter

        Utilisation de la fonction "millis()"

        × 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