我正在使用一个定时器库,它具有一个函数,该函数将void函数作为参数在一段时间后执行它。我想使用一个函数,根据我在变量中初始化的设备,在数字PIN上写入一个值。
我以为我可以使用一个类来存储一个特定的引脚,并从类中读取引脚并使用从类中读取引脚的函数,而不是将参数传递给函数,因为定时器库不接受带参数的void函数。
class output_control{
int pin;
void output_on();
};
void output_control::output_on(){
digitalWrite(pin,HIGH); //Just an example
}
我遇到的问题是使用此类声明一个包含10个“设备”的数组,然后为我在类中创建的整数变量“pin”赋值。
output_control device[10];
device.pin[1]=6;
device.pin[2]=5;
我认为我误解了类,IDE输出错误:“在'device'中请求成员'pin',这是非类型'output_control [10]',我想要的是能够读取从我在类中创建的变量开始,因此我创建的void函数能够读取这些值以使用它们运行某些操作并在类的变量上写入值,以便我可以在某些任务中使用它们。
答案 0 :(得分:0)
使用Arduino / Wiring的类可能会变得棘手,因为为了简化我们的事情,在编译时会有一些不明显的东西(并不像使用直接的C ++)。
对于你的任务,写一个功能来设置引脚应该工作(和良好的实践 - 整个封装的事情)。下面的代码编译(虽然我没有运行它)。
关注Arduino上的课程 - 没有太多的内存可以玩,所以有时,更干净,更明显的方法将无法工作,人们需要求助于将数据存储在数组中并使用大量变量。
class output_control{
public:
void output_on(){
digitalWrite(_pin,HIGH); //Just an example
}
void setPin(int p){
_pin = p;
}
private:
int _pin;
};
output_control device[10]; // declare the array of objects
void setup(){
//init the variables
device[0].setPin(6);
device[1].setPin(7);
}
void loop(){
// do some stuff
}