2012-06-20 41 views
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); 
} 
+0

#在你自己的頭文件中定義一個宏? –

回答

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。一旦工作將///////行之間的內容移動到庫中。