预处理器以重复语句



我刚刚开始使用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); 
}

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::D igitalRead中设置输入引脚,例如)j。一旦事情顺利进行,就可以将///////行之间的内容移动到库中。

最新更新