IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Arduino Discussion :

Fusion de deux programmes


Sujet :

Arduino

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    association culturelle
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : association culturelle

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Par défaut Fusion de deux programmes
    Bonjour à tous,
    Je me suis lancé dans un projet de montage leds représentant notre logo associatif (Chorale Cantabile) et après de longues recherches sur Internet la carte Arduino Nano s'imposa à moi afin des gérer diverses variantes de fonctionnement. Malgré les différents tutos visionnés, étant novice, je bloque encore sur la fusion de deux programmes. Ceux-ci,chenillard et enseigne, comportent la fonction "Delay" qui je sais me bloquent le programme. Pour les fusionner j'ai bien pris en compte un "void setup1", "void setup2", ainsi que "void loop1" et "void loop2" avec la fonction "millis"mais les messages d'erreurs que je ne comprends pas encore m'empéchent de continuer. Je ne vais pas pour autant abandonner ma formation d'Arduino, mais à cet instant serait'il possible que quelqu'un me vienne en aide. Merci d'avance. P.S. Après les soudures terminées je posterais la photo du projet.

    Voiçi donc les deux codes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    //Fonction chenillard pour le projet Cantabile
    //Représentant les notes
    // Initialisation des lignes 4 à 7 en sortie
    void setup () {
      pinMode (4, OUTPUT) ;
      pinMode (5, OUTPUT) ;
      pinMode (6, OUTPUT) ;
      pinMode (7, OUTPUT) ;
    }
     
    // Fonction loop
    void loop () {
      // Extinction de toutes les DEL au départ du programme
      for (byte i = 4 ; i <= 7 ; i++) {
        digitalWrite (i, LOW) ; // éteint la DEL reliée à la broche i
      }
     
      // Boucle pour faire flasher les DEL
      for (byte i = 4 ; i <= 7 ; i++) {
        digitalWrite (i, HIGH) ; // allume la DEL sur broche i
        delay (500) ; // durée du flash 500 millisecondes
        digitalWrite (i, LOW) ; // éteint la DEL
      }
     
      // délai de 500 millisecondes
      delay (500) ;
     
      // Recommence la séquence
    }

    Le deuxième:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    //fonction enseigne pour le projet Cantabile
    //représentant le nom
    //Initialisation des lignes 9 et 10, PWM, en sorties
     
    int pin1 = 9; //PWM pin
    int pin2 = 10; //PWM pin
     
    void setup() {
     pinMode(pin1, OUTPUT);
     pinMode(pin2, OUTPUT);
    }
     
    byte number = 0;
    bool goingUp = true; //This sets the direction
     
    void loop() {
     
      if(goingUp) //this will be true the first time we run and true until we set it false
      {
          analogWrite(pin1, number);
          analogWrite(pin2, 230 - number); //write the opposite
          number++; //increase number
          if(number == 230)
          {
              goingUp = false; //switch direction, we reached the top 
          }  
      }
      else //we are going down here
      {
           analogWrite(pin1, number);
           analogWrite(pin2, 230 - number);
     
           number = number - 5; //decrease number by a factor of 5
           //normally -1 means 1 second for 255 loops()
           //but we want 0.2 seconds, so that's a 1/5th of a second
           //so go 5 times faster than on the fadeUp
     
           if(number <= 5)
           {  
               goingUp = true; //switch direction again, going up
               number = 5; //just in case it went in the negative, reset to 0
           }
      }
     
      delayMicroseconds(8000); //IMPORTANT. for 3.9 milliseconds, we do nothing
      //This means roughly, every 255 cycles that equals 1 second
    }

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    13 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 13 197
    Billets dans le blog
    47
    Par défaut
    Bonsoir,

    Citation Envoyé par Cantabil Voir le message
    Pour les fusionner j'ai bien pris en compte un "void setup1", "void setup2", ainsi que "void loop1" et "void loop2"
    Il ne peut y avoir qu'un seul setup() et une seule loop() dans un programme Arduino.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    association culturelle
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : association culturelle

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Par défaut
    Bonsoir , un grand merci pour ces premières pistes.
    Donc je pense commencer ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void setup(){
      ma_fonction_a_moi_n1();
      la_fonction_que_j'ai_copié();
    }
    idem dans loop().

    }

  4. #4
    Futur Membre du Club
    Homme Profil pro
    association culturelle
    Inscrit en
    Août 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : association culturelle

    Informations forums :
    Inscription : Août 2018
    Messages : 3
    Par défaut Fusion de deux programmes - modifier la fonction "Delay" par "Millis"
    Bonjour,
    J'ai pu enfin fusionner deux scketchs mais l'effet du fondu n'est plus identique à l'original. Il faudrait que j'utilise la fonction "Millis". Pouvez-vous m'apportez une suggestion pour le faire?
    Merci


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    //Projet animation d'une Partition Musicale, la portée et la clef de sol seront en leds fixes.
    //Seul l'Arduino Nano gérera une fonction chenillard pour un ensemble de quatres leds (Notes) et une fonction fondu deux leds (Nom)
    //Initialisation des lignes 4 à 7 en sorties pour Notes
    // Initialisation des lignes 9 à 10 en sorties PWM pour Nom
     
    void setup ()
    {
      pinMode (4, OUTPUT) ;
      pinMode (5, OUTPUT) ;
      pinMode (6, OUTPUT) ;
      pinMode (7, OUTPUT) ;
      pinMode (9, OUTPUT) ;
      pinMode (10, OUTPUT);
    }
    byte number = 0;
    bool goingUp = true; //Cela définit la direction
     
    // Fonction loop
    void loop () {
      // Extinction de toutes les DEL au départ du programme
      for (byte i = 4 ; i <= 7 ; i++) {
        digitalWrite (i, LOW) ; // éteint la DEL reliée à la broche i
      }
     
      // Boucle pour faire flasher les DEL
      for (byte i = 4 ; i <= 7 ; i++) {
        digitalWrite (i, HIGH) ; // allume la DEL sur broche i
        delay (500) ; // durée du flash 500 millisecondes
        digitalWrite (i, LOW) ; // éteint la DEL
      }
      {
     
        if (goingUp) //ce sera vrai la première fois que nous courrons et vrai jusqu'à ce que nous le définissions faux
        {
          analogWrite(9, number);
          analogWrite(10, 250 - number); //écris le contraire
          number++; //augmenter le nombre
          if (number == 250)
          {
            goingUp = false; //changer de direction, nous avons atteint le sommet
          }
     
     
     
          // délai de 500 millisecondes
          delay(500) ;
     
          // Recommence la séquence
        }
      }
    }

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/08/2016, 12h52
  2. problème requete sql fusion de deux count
    Par TuxP dans le forum Langage SQL
    Réponses: 6
    Dernier message: 14/12/2005, 15h15
  3. Réponses: 11
    Dernier message: 09/09/2005, 13h51
  4. Fusion de deux états
    Par nancy54 dans le forum QuickReport
    Réponses: 2
    Dernier message: 07/06/2005, 19h07
  5. [TP] Echanger des données entre deux programmes
    Par ILIAS Raphaël dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 22/03/2005, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo