0

特定の時間後に実行するパラメーターとして void 関数を使用する関数を持つタイマー ライブラリを使用しています。変数で初期化するデバイスに応じて、デジタル PIN に値を書き込む関数を使用したいと考えています。

クラスを使用して特定のピンを保存し、クラスからピンを読み取り、クラスからピンを読み取る関数を使用できると思いました。タイマーライブラリはvoid関数を受け入れないため、関数にパラメーターを渡すのではなくパラメーター。

class output_control{
  int pin;
  void output_on();
 };

void output_control::output_on(){
digitalWrite(pin,HIGH);  //Just an example 
}

私が問題を抱えているのは、このクラスで10個の「デバイス」を持つ配列を宣言し、クラスで作成した整数変数「ピン」に値を代入することです。

output_control device[10];
device.pin[1]=6;
device.pin[2]=5;

私はクラスを誤解していると思います.IDEはエラーを出力します:クラスで作成されたので、作成した 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 に答える