0

Arduinoを使い始めたばかりです。私はよくこのようなコードを書くようです:

int input_pins[] = {6, 3, 8, 2};
int input_state[4];

void setup() {                
}

void loop() {
  for (int i = 0; i < 4; i++){
    input_state[i] = digitalRead(input_pins[i]); 
  }
}

次の効果的なコードを生成するためのプリプロセッサ (またはそのようなもの) はありますか?

int input_state[4];

void setup() {                
}

void loop() {
  input_state[0] = digitalRead(6); 
  input_state[1] = digitalRead(3); 
  input_state[2] = digitalRead(8); 
  input_state[3] = digitalRead(2); 
}
4

1 に答える 1

0

Arduino プログラミングには C++ が含まれていますが、なぜ前処理のように制限されたものを使用したいのですか?

次のコードから始める場合:

///////////////////////////////////////
class DigitalRead
{
public:
    DigitalRead(int pins[]);
    int operator[](const int index);
    int len;
    int *mypins;
};


DigitalRead::DigitalRead(int pins[])
{
   mypins = pins;
   for(len = 0; pins[len] != -1; len++) {};
}

int DigitalRead::operator[](const int index)
{
    if (index > len) return -1;
    return digitalRead(mypins[index]);
}
///////////////////////////////////////

int pins[] = {6, 3, 8, 2, -1};

DigitalRead input_state = DigitalRead(pins);

void setup()
{
}

void loop()
{
   // print the state of pin 6, change as needed
   Serial.println(input_state[0]);
}

あなたは物事を改善することができます(DigitalRead::DigitalReadで入力用のピンを設定するなど)j. 動作したら、///////行間をライブラリに移動します。

于 2012-06-21T07:39:20.063 に答える