错误:未在此范围内声明'iniziaScheda1'
error: 'iniziaScheda1' was not declared in this scope
我寻找一个月的答案,以解决下面的问题,但我没有找到它,所以这里有我的问题:我为Arduino写了一个库,以下是我的代码,编译器总是显示
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:
}
您的功能是类成员,因此您应该创建类实例,然后在其上调用成员。:
CNCa tmp;
tmp.iniziaScheda1(1,2,3);
要保留类成员变量的值,您的类实例应该具有全局范围。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 未在作用域中声明unordered_map
- C++避免重复声明的语法是什么
- 如何确保C++函数在定义之前声明(如override关键字)
- 错误:未在此范围内声明'reverse'
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 为什么在定义函数之前先声明它
- 如何声明特征矩阵,然后通过嵌套循环初始化它
- #ifdef和未声明的标识符
- 没有显式声明的int[]中的foreach
- 在基于范围的for循环中使用结构化绑定声明
- 在将变量声明为引用时,堆在释放后使用
- C++:无法访问声明的受保护成员
- 为什么我不能在一个类的不同行中声明和定义成员变量?
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 在函数内部的声明中初始化数组,并在外部使用它
- Visual Studio中的函数声明和函数定义问题
- c++类声明时,相同的例程,不同的成员变量类型
- 错误:未在此范围内声明'iniziaScheda1'