2013-10-10 30 views
2

我試圖使用struct與Arduino,我是一個初學者,我不知道如何在結構中聲明一個數組並使用它(int pin[5]int vecinos[6])。 謝謝! LucíaStruct和arduino

typedef struct 
{ 
    int id; 
    int pin[5]; 
    int tiempoCero; 
    int tiempoApagado; 
    int estado; 
    int vecinos[6]; 
} zonas; 

zonas zona[5]; 

回答

-1

您聲明的方式沒問題。爲了訪問引腳陣列(和類似的vecinos):

for (int i = 0; i < 5; i++) { 
    zona[0].pin[i] = i; 
} 
7

您的聲明是好的。但是,您需要了解Arduino IDE會自動爲您生成函數原型。不幸的是,IDE做得不好。它將生成的原型排序到聲明之前。因此你不能在任何函數定義中使用它們。除非您阻止IDE自動生成原型。

我找到了三種方法來實現這一目標:

  1. 把你的功能集成到一個命名空間,你會得到完全控制,即使在INO文件。
  2. 將您的函數移動到包含文件中
  3. 將您的函數包裝到一個宏中,以使IDE不再將其識別爲函數。例如。像TRICK17 macro

對於小文件,我的首選解決方案是#1。然後,您的草圖是

​​

對於廣泛例如look here.

+2

我覺得Arduino'_IDE_'值得10年代最糟糕的'廣泛使用'IDE評選。 – Sebi

3

我建議直接避免了編碼在.ino文件,除非它真的是一個幾行。 對於其他任何東西,只需創建單獨的.h和.c/.cpp文件。 這也允許通過在PC上編譯和運行來測試全部/部分代碼。

通常我有一個簡單的project.cpp文件,我創建了一個project.ino符號鏈接。 然後,在單獨的.cpp/.h文件對中,我編寫了所有代碼,包括從setup()和loop()調用的入口點。