Ho fatto questo sketch di esempio:
// Esempio spazio FLASH occupato dopo compilazione:
//
//Dichiarare 110 variabili int senza nessun "Serial.begin(9600)" occupa solo 466 bytes,
//come quanti ne occupa dichiarendone 10 variabili, mettendo Solo il Serial.begin(9600)
//il conteggio sale a 1744 bytes e mettendo un solo Serial.print(var1) sale a 2248 bytes.
//mettendoci anche 30 array dichiarate e inizializzate, il conteggio rimane 2248 bytes!!
int var1;
int var2;
int var3;
int var4;
int var5;
int var6;
int var7;
int var8;
int var9;
int var10;
int var11;
int var12;
int var13;
int var14;
int var15;
int var16;
int var17;
int var18;
int var19;
int var20;
int var21;
int var22;
int var23;
int var24;
int var25;
int var26;
int var27;
int var28;
int var29;
int var30;
int var31;
int var32;
int var33;
int var34;
int var35;
int var36;
int var37;
int var38;
int var39;
int var40;
int var41;
int var42;
int var43;
int var44;
int var45;
int var46;
int var47;
int var48;
int var49;
int var50;
int var51;
int var52;
int var53;
int var54;
int var55;
int var56;
int var57;
int var58;
int var59;
int var60;
int var61;
int var62;
int var63;
int var64;
int var65;
int var66;
int var67;
int var68;
int var69;
int var70;
int var71;
int var72;
int var73;
int var74;
int var75;
int var76;
int var77;
int var78;
int var79;
int var80;
int var81;
int var82;
int var83;
int var84;
int var85;
int var86;
int var87;
int var88;
int var89;
int var90;
int var91;
int var92;
int var93;
int var94;
int var95;
int var96;
int var97;
int var98;
int var99;
int var100;
int var101;
int var102;
int var103;
int var104;
int var105;
int var106;
int var107;
int var108;
int var109;
int var110;
//se togliamo queste array mono e bidimensionali dichiarate ed inizializzate il conteggio Flash usata è sempre lo stesso!
int Array1[10] = {1,2,3,4,5,6,7,8,9};
int Array2[10] = {2,3,4,5,6,7,8,9,10};
int Array3[10] = {3,4,5,6,7,8,9,10,11};
int Array4[10] = {4,5,6,7,8,9,10,11,12};
int Array5[10] = {3,4,5,6,7,8,9,10,11};
int Array6[10] = {11,21,31,41,51,61,71,18,19};
int Array7[10] = {11,22,33,44,55,66,77,88,98};
int Array8[10] = {10,20,30,40,50,60,70,80,90};
int Array9[10] = {40,50,60,70,80,90,100,110,120};
int Array10[10] = {15,25,35,45,55,65,75,85,95};
int Array11[10] = {15,62,73,84,59,60,72,82,29};
int Array12[10] = {122,22,322,234,215,236,457,238,219};
int Array13[10] = {112,223,334,454,565,756,127,128,19};
int Array14[10] = {124,455,665,732,821,912,110,111,222};
int Array15[10] = {6,26,36,45,55,67,76,84,93};
int Array16[10] = {12,23,32,43,658,96,207,18,129};
int Array17[10] = {122,1232,223,134,6545,326,127,128,4349};
int Array18[10] = {1876,6562,453,24,255,526,2547,248,559};
int Array19[10] = {123,532,345,4,455,456,337,328,119};
int Array20[10] = {341,452,453,564,675,786,557,458,349};
byte Array22[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array23[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array24[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array25[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array26[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array27[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array28[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array29[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
byte Array30[16][8]=
{ {40,45,46,48,49,50,52,53},
{42,45,47,49,50,51,53,54},
{43,46,48,49,51,52,54,55},
{44,47,49,50,52,53,55,56},
{45,48,50,52,55,56,57,58},
{46,49,51,53,55,57,58,59},
{47,50,52,55,56,58,60,62},
{48,52,53,55,57,59,62,63},
{49,53,54,56,58,60,63,64},
{50,54,55,56,57,61,64,65},
{51,55,56,57,58,62,65,66},
{52,56,57,58,59,60,61,62},
{53,57,58,59,60,61,62,63},
{54,55,56,60,61,62,63,64},
{55,56,57,61,62,63,64,65},
{56,57,58,62,63,64,65,66} };
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print(var1);
}
Se Verificate o compilate questo codice, il conteggio Flash utilizzata vi dirà 2248 bytes se togliete le array darà lo stesso valore, se togliete "Serial.print(var1)" e "Serial.begin(9600)" il conteggio scende a 466 bytes con 110 variabili int dichiarate? la stessa quantità occupata da una sola variabile dichiarata??
Mi sembra strano e vorrei capirci qualcosa!!
Qualche idea??