(A causa della memoria limitata disponibile sulla maggior parte delle schede Arduino, a volte ho riscontrato problemi utilizzando codice C/C++ valido, quindi questa domanda riguarda specificamente eventuali problemi sull'uso struct su Arduino.)Chiarificazione dell'uso delle strutture con Arduino e memorizzazione delle strutture in PROGMEM
ho visto example code of using structs in Arduino ma nessuna discussione di reqs memoria.
- è la dimensione di una struttura semplicemente la somma dei tipi di dati dei suoi campi?
- È possibile memorizzare le strutture in PROGMEM? Ci sono problemi di velocità di accesso?
- I campi di una struct scrivibile (ad esempio sotto
s1.LED1.state = 0;
) (sebbene non siano memorizzati in PROGMEM, ovviamente). - Posso definire un campo di una struttura come un'altra struttura (di tipo diverso)?
- E 'possibile scorrere una struct usando
for..in
o per indice?
Il mio caso di utilizzo è che ho 64 LED pilotati da un chip MAX7219. A causa dei requisiti del layout del cablaggio fisico, sarebbe opportuno organizzare l'ordine dei LED in modo più logico utilizzando le strutture per rendere la programmazione più semplice/più coerente.
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;
Interessante, mai visto che la notazione 'width' per le strutture :) caso 'byte' non essere' LED' nel 'LED_SECTION' struct? – leppie
Inoltre, un 'byte' con 128 bit? Cos'è questa follia? – leppie
@leppie - sì. copia/incolla errore grazie per indicarlo –