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 :

stepper n'est pas déclaré dans le scope


Sujet :

Arduino

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Points : 6
    Points
    6
    Par défaut stepper n'est pas déclaré dans le scope
    Bonjour à tous,
    Je suis lycéen et je dois réaliser tout au long de l'année un projet en groupe
    Personnellement je travaille sur une des parties programmation du projet
    Nous utilisons un moteur pas à pas et je dois faire un programme sur arduino
    Mais je rencontre des difficultés
    Voila une partie de mon programme

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
     
    #include <Stepper.h>
     
    int CaptCad;
    const int Pas_par_tour= 4096;
    const int number_steps= 2000;
    //moteur pas a pas
    #define IN1  8
    #define IN2  9
    #define IN3  10
    #define IN4  11
    int Steps = 0; 
    int Direction = 0;
    boolean dir = true;
     
    Stepper moteur(number_steps,IN1,IN2,IN3,IN4);
     
    void setup() { 
     
     
      moteur.setSpeed(9);
      pinMode(IN1, OUTPUT);  
      pinMode(IN2, OUTPUT);  
      pinMode(IN3, OUTPUT);  
      pinMode(IN4, OUTPUT);
    }
     
     
     
    void loop() {
        if (CaptCad<61){
          if (51<CaptCad<60){
     
     
     
          {
          stepper(number_steps);                                           (c'est ici qu'est le problème)
          delay(1000);
          for(int thisStep=0;thisStep<number_steps;thisStep++){
          stepper(1);
          }
           delay(1000);
    }
    void stepper(double nbStep){
     if(nbStep>=0){
         Direction=1;
     }else{
         Direction=0;
         nbStep=-nbStep;
     }
     for (int x=0;x<Nb_Pas*8;x++){
       switch(_step){
          case 0:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, HIGH);
          break; 
          case 1:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, HIGH);
          break; 
          case 2:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);
          break; 
          case 3:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);
          break; 
          case 4:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
          case 5:
            digitalWrite(IN1, HIGH); 
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
            case 6:
            digitalWrite(IN1, HIGH); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
          case 7:
            digitalWrite(IN1, HIGH); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, HIGH);
          break; 
          default:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
       }
     delayMicroseconds(1000);
     if(Direction==1){ _step++;}
     if(Direction==0){ _step--; }
     if(_step>7){_step=0;}
     if(_step<0){_step=7; }
    Le message d'erreur est le suivant :

    'stepper' was not declared in this scope

    Je ne comprends pas car je ne veux pas déclaré stepper car cela n'est pas le but
    Est ce que quelqu'un pourrait m'aider s'il vous plait

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Dans un autre programme
    J'ai trouvé un autre programme dans le quel tout fonctionne bien dans celui ci

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    #define IN1  11
    #define IN2  10
    #define IN3  9
    #define IN4  8
    int Steps = 0;
    int Direction = 0;
    int number_steps=512;//= 2048/4
    void setup()
    {
    Serial.begin(9600);
    pinMode(IN1, OUTPUT); 
    pinMode(IN2, OUTPUT); 
    pinMode(IN3, OUTPUT); 
    pinMode(IN4, OUTPUT); 
    // delay(1000);
    }
    void loop()
    {
     //1 rotation counter clockwise
     stepper(number_steps);
     delay(1000);
     //1 rotation clockwise
     stepper(-number_steps);
     delay(1000);
     //Keep track of step number
     for(int thisStep=0;thisStep<number_steps;thisStep++){
       stepper(1);
     }
     delay(1000);
     for(int thisStep=number_steps;thisStep>0;thisStep--){
       stepper(-1);
     }
     delay(1000);
    }
    void stepper(double nbStep){
     if(nbStep>=0){
         Direction=1;
     }else{
         Direction=0;
         nbStep=-nbStep;
     }
     for (int x=0;x<nbStep*8;x++){
       switch(Steps){
          case 0:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, HIGH);
          break; 
          case 1:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, HIGH);
          break; 
          case 2:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);
          break; 
          case 3:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);
          break; 
          case 4:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
          case 5:
            digitalWrite(IN1, HIGH); 
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
            case 6:
            digitalWrite(IN1, HIGH); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
          case 7:
            digitalWrite(IN1, HIGH); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, HIGH);
          break; 
          default:
            digitalWrite(IN1, LOW); 
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break; 
       }
     delayMicroseconds(1000);
     if(Direction==1){ Steps++;}
     if(Direction==0){ Steps--; }
     if(Steps>7){Steps=0;}
     if(Steps<0){Steps=7; }
    } 
    }

  3. #3
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Salut Mathieugalère

    Tu t'es un peu mélangé les rames

    Le programme qui fonctionne est de la gestion de moteur pas à pas (MPAP) "fait main", sans bibliothèque.

    Ton programme invoque la bibliothèque #include <Stepper.h> et tu lui accole le 2ème programme et coups de déveine et de confusion, il y a une void stepper(double nbStep).

    Pour mieux comprendre l'usage d'une bibliothèque comme Stepper.hj je te conseille de faire un ou deux exemples de cette bibliothèque, comme
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Oublie de les supprimer
    Effectivement
    Au début j'étais partit sur un programme avec bibliothèque mais mon moteur était très lent donc j'ai opté pour un programme sans
    J'ai oublié de de supprimer tout ce qui s'y rapportait
    Mais mon problème est toujours le même
    Pourquoi dans un programme ça marche et pas dans le mien ?

  5. #5
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonsoir Mathieugalère

    Si tu modifies ta ligne:

    stepper(number_steps); // (c'est ici qu'est le problème)
    stepper(number_steps); (c'est ici qu'est le problème)

    et que tu recompiles, tu auras ce
    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
    Compiling 'ARDDEV_EssaisDivers' for 'Arduino/Genuino Uno'
     
    Error compiling project sources
    Build failed for project 'ARDDEV_EssaisDivers'
    ARDDEV_EssaisDivers.ino: In function void loop()
     
    ARDDEV_EssaisDivers.ino: 44:32: error: a function-definition is not allowed here before '{' token
       void stepper(double nbStep){
     
    ARDDEV_EssaisDivers.ino: 112:28: error: expected '}' at end of input
       if(_step<0){_step=7; }
     
    ARDDEV_EssaisDivers.ino: 112:28: error: expected '}' at end of input
     
    ARDDEV_EssaisDivers.ino: 112:28: error: expected '}' at end of input
    C'est, avant tout, une question d'ouverture/fermeture d'accolades.
    Mais je ne vois toujours pas l'intérêt de tout ce code dans Loop, quand c'est le boulot de Stepper.h.

    Cordialement
    jbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    J'ai fais quelque test et je pense que l'erreur vient du fait que je mets une boucle "void stepper(double nbStep)" a l’intérieur de "void loop()"
    Lorsque j'utilise la bibliothèque <stepper.h>, le problème c'est que le moteur pas à pas tourne très lentement (environ 1 min pour faire un tour) alors que lorsque je ne l'utilise pas le moteur met 4 secondes à faire un tour

  7. #7
    Membre émérite
    Avatar de jpbbricole
    Homme Profil pro
    Retraité des réseaux informatiques
    Inscrit en
    Février 2013
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Retraité des réseaux informatiques
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2013
    Messages : 1 012
    Points : 2 341
    Points
    2 341
    Par défaut
    Bonsoir Mathieugalère
    Citation Envoyé par Mathieugalère Voir le message
    J'ai fais quelque test et je pense que l'erreur vient du fait que je mets une boucle "void stepper(double nbStep)" a l’intérieur de "void loop()"
    Lorsque j'utilise la bibliothèque <stepper.h>, le problème c'est que le moteur pas à pas tourne très lentement (environ 1 min pour faire un tour) alors que lorsque je ne l'utilise pas le moteur met 4 secondes à faire un tour
    Si ton moteur est de ce genre
    il faut modifier le programme ainsi

    avant
    Stepper moteur(number_steps,IN1,IN2,IN3,IN4);

    après
    Stepper moteur(number_steps,IN1,IN3,IN2,IN4);

    Croisement de la paire centrale.

    Cordialement
    jpbbricole
    L'expérience est la seule chose qu'il ne faut acheter que d'occasion!

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Soltion
    Lorsque l'on n'utilise pas la bibliotheque pour faire fonctionner un moteur pas a pas il faut créer une boucle stepper


    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    const int Nb_Pas= X ;
    int Steps = 0;
    int Direction = 0;
     
    #define IN1  8
    #define IN2  9
    #define IN3  10
    #define IN4  11
     
    void setup() {
      pinMode(IN1, OUTPUT); 
      pinMode(IN2, OUTPUT); 
      pinMode(IN3, OUTPUT); 
      pinMode(IN4, OUTPUT);
    }
     
    void loop() {
    stepper(Nb_Pas);
    }
     
    void stepper(double nbStep)
    {
    if(nbStep>=0){
         Direction=1;
    }else{
         Direction=0;
         nbStep=-nbStep;
    }
    for (int x=0;x<nbStep*8;x++){
       switch(Steps){
          case 0:
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, HIGH);
          break;
          case 1:
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, HIGH);
          break;
          case 2:
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);
          break;
          case 3:
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, HIGH);
            digitalWrite(IN4, LOW);
          break;
          case 4:
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break;
          case 5:
            digitalWrite(IN1, HIGH);
            digitalWrite(IN2, HIGH);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break;
            case 6:
            digitalWrite(IN1, HIGH);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break;
          case 7:
            digitalWrite(IN1, HIGH);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, HIGH);
          break;
          default:
            digitalWrite(IN1, LOW);
            digitalWrite(IN2, LOW);
            digitalWrite(IN3, LOW);
            digitalWrite(IN4, LOW);
          break;
       }
    delayMicroseconds(1000);
    if(Direction==1){ Steps++;}
    if(Direction==0){ Steps--; }
    if(Steps>7){Steps=0;}
    if(Steps<0){Steps=7; }
    }
     
    }

  9. #9
    Membre à l'essai
    Homme Profil pro
    Amateur
    Inscrit en
    Mars 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Mars 2019
    Messages : 11
    Points : 18
    Points
    18
    Par défaut réponse simple
    Quand tu déclare moteur comme un stepper, ensuite c'est "moteur" qu'il faut utiliser et non "stepper".

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur "function ' ' n'est pas définie dans l'expression"
    Par wanou_le_fou dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 02/07/2007, 16h13
  2. Réponses: 2
    Dernier message: 11/03/2007, 09h30
  3. Réponses: 2
    Dernier message: 20/09/2006, 08h58
  4. Réponses: 3
    Dernier message: 16/05/2006, 16h34
  5. pb Displaylabel n'est pas conservé dans DataSet
    Par dem dans le forum Composants VCL
    Réponses: 2
    Dernier message: 17/10/2005, 09h55

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