2017-09-30 10 views
-1

私は以下の質問の回答を1ヶ月間探しましたが、見つからないので、ここに問題があります: Arduino、以下は私のコードですが、コンパイラは常に表示しますエラー: 'iniziaScheda1'はこのスコープ内で宣言されていません

error: 'iniziaScheda1' was not declared in this scope 

他の機能と同じエラーはどうすればいいですか?

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; 
    } ; 
    } } 
    } 

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

あなたのコードはコンパイルできません。 CNT.cppでは、 'else {(digitalWrite(latchPin2、LOW);}行にparensが残っています。 – dda

答えて

0

あなたはクラスのインスタンスを作成し、上のメンバーを呼び出す必要がありますので、あなたの関数は、クラスのメンバーでありますつまり:

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

クラスメンバ変数の値を保持するには、クラスインスタンスにグローバルスコープが必要です。