2017-09-30 1 views
-1

J'ai cherché un mois pour la réponse à la question ci-dessous, mais je n'ai pas trouvé, alors voici mon problème: J'ai écrit une bibliothèque pour Arduino, Ci-dessous est mon code, le compilateur montre toujourserreur: 'iniziaScheda1' n'a pas été déclaré dans cette portée

error: 'iniziaScheda1' was not declared in this scope 

et la même erreur pour l'autre fonction, que puis-je faire?

CNC.h

#ifndef CNC 
#define CNC 

#include <Arduino.h> 


class CNCa 
{ 
    private: 
     int latchPin1; 
     int clockPin1; 
     int dataPin1; 
     int latchPin2; 
     int clockPin2; 
     int dataPin2; 
     byte scheda[7]; 
     int count; 

    public: 
    void iniziaScheda1(int latch,int clock,int data); 
     void iniziaScheda2 (int latch,int clock,int data); 

     void motoreZ(int nStep); 
     void motoreX(int nStep); 
     void motoreY(int nStep); 
     void motore4(int nStep); 
     int velocita; 
     void registro(int nScheda, byte motore); 
    }; 
#endif 

CNC.cpp

#include <CNC.h> 
#include <Arduino.h> 


void CNCa:: iniziaScheda1(int latch,int clock,int data){ 
    latchPin1=latch; 
    clockPin1=clock; 
    dataPin1=data; 
    pinMode(latchPin1, OUTPUT); 
    pinMode(clockPin1, OUTPUT); 
    pinMode(dataPin1, OUTPUT); 
    scheda= { B01100000, // = 0 
           B01010000, // = 1 
           B00011000, // = 2 
           B00101000, // = 3 
           B10000100, // = 4 
           B00000110, // = 5 
           B00000011, // = 6 
           B10000001, // = 7 
           }; 

} 

void CNCa::iniziaScheda2(int latch,int clock,int data){ 
    latchPin2=latch; 
    clockPin2=clock; 
    dataPin2=data; 
    pinMode(latchPin2, OUTPUT); 
    pinMode(clockPin2, OUTPUT); 
    pinMode(dataPin2, OUTPUT); 

} 
//n Scheda indica la scheda che stiamo usando 
void CNCa::registro(int nScheda, byte motore){ 
    if(nScheda=1){ 
     digitalWrite(latchPin1, LOW);  

    shiftOut(dataPin1, clockPin1, LSBFIRST,scheda[motore]); 

    digitalWrite(latchPin1, HIGH); 

    }else{(digitalWrite(latchPin2, LOW);  

    shiftOut(dataPin2, clockPin2, LSBFIRST,scheda[motore]); 

    digitalWrite(latchPin2, HIGH); 
}} 

//i motori sono nominati come Z(scheda1 motore1) x(scheda1 motore2) y(scheda2 motore1) 4(scheda2 motore2) 

void CNCa:: motoreZ (int nStep){if(nStep>0){ count=0; for(int i=0;i<nStep;i++){delay(velocita); 
    switch(count){ 
    case 0 : registro(1,3);count++;break; 
    case 1 : registro(1,2);count++;break; 
    case 2 : registro(1,1);count++;break; 
    case 3 : registro(1,0);count=0;break; 
    } ; 
    } 
    }else if(nStep<0){count=0;for(int i=0;i>nStep;--i){delay(velocita); 
    switch(count){ 
    case 0 : registro(1,0);count++;break; 
    case 1 : registro(1,1);count++;break; 
    case 2 : registro(1,2);count++;break; 
    case 3 : registro(1,3);count=0;break; 
    } ; 
    } 
    } 
    } 

    void CNCa:: motoreX(int nStep){if(nStep>0){ count=0; for(int i=0;i<nStep;i++){delay(velocita); 
    switch(count){ 
    case 0 : registro(1,7);count++;break; 
    case 1 : registro(1,6);count++;break; 
    case 2 : registro(1,5);count++;break; 
    case 3 : registro(1,4);count=0;break; 
    } ; 
    } 
    }else if(nStep<0){count=0;for(int i=0;i>nStep;--i){delay(velocita); 
    switch(count){ 
    case 0 : registro(1,4);count++;break; 
    case 1 : registro(1,5);count++;break; 
    case 2 : registro(1,6);count++;break; 
    case 3 : registro(1,7);count=0;break; 
    } ; 
    } } 
    } 
    void CNCa:: motoreY(int nStep){if(nStep>0){ count=0; for(int i=0;i<nStep;i++){delay(velocita); 
    switch(count){ 
    case 0 : registro(1,3);count++;break; 
    case 1 : registro(1,2);count++;break; 
    case 2 : registro(1,1);count++;break; 
    case 3 : registro(1,0);count=0;break; 
    } ; 
    } 
    }else if(nStep<0){count=0;for(int i=0;i>nStep;--i){delay(velocita); 
    switch(count){ 
    case 0 : registro(2,0);count++;break; 
    case 1 : registro(2,1);count++;break; 
    case 2 : registro(2,2);count++;break; 
    case 3 : registro(2,3);count=0;break; 
    } ; 
    } 
    } 
    } 

    void CNCa:: motore4(int nStep){if(nStep>0){ count=0; for(int i=0;i<nStep;i++){delay(velocita); 
    switch(count){ 
    case 0 : registro(2,7);count++;break; 
    case 1 : registro(2,6);count++;break; 
    case 2 : registro(2,5);count++;break; 
    case 3 : registro(2,4);count=0;break; 
    } ; 
    } 
    }else if(nStep<0){count=0;for(int i=0;i>nStep;--i){delay(velocita); 
    switch(count){ 
    case 0 : registro(2,4);count++;break; 
    case 1 : registro(2,5);count++;break; 
    case 2 : registro(2,6);count++;break; 
    case 3 : registro(2,7);count=0;break; 
    } ; 
    } } 
    } 

fichier arduino

#include <CNC.h> 


void setup() { 
iniziaScheda1(1,2,3);// put your setup code here, to run once: 
velocita=20; 
} 

void loop() { 
    motoreZ(50); 
    delay(1000); 
    motoreZ(-50); 
    delay(1000);// put your main code here, to run repeatedly: 

} 
+0

Comme c'est votre code ne peut pas compiler. Dans CNC.cpp, la ligne '} else {(digitalWrite (latchPin2, LOW);' a trop de parens à gauche.Apprenez à utiliser ctrl-T pour indenter correctement votre code (et savoir où vous avez foiré). – dda

Répondre

0

Vos fonctions sont membres de la classe, vous devez donc créer une instance de classe, puis appeler les membres sur c'est-à-dire:

CNCa tmp; 
tmp.iniziaScheda1(1,2,3); 

Pour préserver les valeurs des variables de membre de classe, votre instance de classe doit avoir une portée globale.