(由于大多数 Arduino 板上可用的内存有限,我有时会在使用有效的 C/C++ 代码时遇到问题,所以这个问题专门针对在 Arduino 上使用结构的任何问题。)
我已经看到在 Arduino 中使用结构的示例代码,但没有讨论内存请求。
- 结构的大小仅仅是其字段数据类型的总和吗?
- 将结构存储在 PROGMEM 中是一种选择吗?是否存在访问速度问题?
- 结构的字段是否可写(例如下面的示例
s1.LED1.state = 0;
)(当然,如果存储在 PROGMEM 中则不是)。 - 我可以将结构的字段定义为另一个(不同类型)结构吗?
for..in
是否可以使用或按索引遍历结构?
我的用例是我有 64 个由 MAX7219 芯片驱动的 LED。由于物理布线布局的要求,使用结构以更合乎逻辑的方式组织 LED 顺序会很方便,以使编程更容易/更连贯。
typedef struct {
byte row : 6;
byte col : 128;
byte state : 1;
} LED;
typedef struct {
LED LED1 : {1,1,1};
LED LED2 : {1,2,1};
LED LED3 : {1,4,1};
LED LED4 : {1,8,1};
LED LED5 : {1,16,1};
LED LED6 : {1,32,1};
LED LED7 : {1,64,1};
LED LED8 : {1,128,1};
} LED_SECTION;
LED_SECTION s1;
s1.LED1.row = 1;
s1.LED1.state = 0;