0

我正在使用一个计时器库,该库具有一个函数,该函数将 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输出错误:“请求'设备'中的成员'pin',它是非类类型'output_control [10]',我想要的是能够从我的变量中读取在类中创建,因此我创建的 void 函数能够读取这些值以使用它们运行某些操作并将值写入类的变量,以便我可以在某些任务中使用它们。

4

1 回答 1

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


}
于 2014-02-02T03:02:09.373 回答