Ciao a tutti, per studio e curiosità mi sono messo a giocare un po' con gli array.
Praticamente ho scritto un programma stupido, dove nel setup scrivo all'interno di due array bidimensionali, numeri progressivi, per poi leggerli nel loop e metterli in un array di char.
La finalità è quella di avere un array char composto da un header seguito poi dai numeri che sono all'interno degli array bidimensionali.
Ho scritto questo:
int rele1[3][5];
int rele2[2][7];
byte A = 0;
byte indice = 0;
char buffer_rele[90];
boolean one_time = false;
void setup() {
Serial.begin (115000);
for (byte i = 0; i < 3; i++) {
for (byte x = 0; x < 5; x++) {
rele1[i][x] = A;
A++;
Serial.println(rele1[i][x]);
}
}
Serial.print("A"); Serial.println(A);
for (byte i = 0; i < 2; i++) {
for (byte x = 0; x < 7; x++) {
rele2[i][x] = A;
A++;
Serial.println(rele2[i][x]);
}
}
A = 1;
buffer_rele[0] = 'T';
Serial.print("rele1"); Serial.println(rele1[2][4]);
Serial.print("rele2"); Serial.println(rele2[1][6]);
delay(2000);
}
void loop() {
if (one_time == false) {
for (byte i=0;i<3;i++){for(byte x=0;x<5;x++){forma(rele1[i][x]);indice=indice+2;}
}
indice=indice+1;
Serial.print("rele2"); Serial.println(rele2[1][3]);
for (byte a = 0; a < 2; a++) {
for (byte b = 0; b < 7; b++) {
forma(rele2[a][b]);
indice = indice + 2;
}
}
buffer_rele[indice + 1] = "\0";
Serial.print("indice"); Serial.println(indice);
indice = 0;
Serial.print("array "); Serial.println(buffer_rele);
one_time = true;
}
}
void forma(int X) { //per convertire int in char
#define N 2
char a[N];
Serial.print("X"); Serial.println(X);
itoa(X, a, 10); //converto il numero int X in char
byte l1 = strlen (a);
memmove (a + (N - l1), a, l1);
memset (a, '0', N - l1); //riempio di 0 i vuoti
for (byte i = 0; i < N; i++) {
buffer_rele[indice + i + 1] = a[i];
}
Serial.println("esco");
}
La funzione forma() serve per convertire int in char e metterlo in fila nel buffer.
Beh, si blocca...e non capisco perchè...
Se nel loop faccio eseguire solo rele1 o solo rele2 funziona bene, ma se li metto insieme si impalla.
Dove sbaglio??
Mi sembra di no fare cose sbagliate.