2010-07-19 7 views
1

Je viens de construire mon premier cube LED et je veux un peu étendre le code de test. Pour adresser chaque LED de mon cube 3x3x3 je veux utiliser un tableau tridimensionnel correspondant, mais j'ai eu des erreurs sur son initialisation.Comment initialiser un tableau tridimensionnel dans Arduino?

Voici ce que je l'ai fait:

int cube_matrix[3][3][3] = 
{ 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} } 
}, 
{ 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} } 
}, 
{ 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} } 
}; 

est ici l'erreur que je reçois:

error: expected unqualified-id before '{' token

je pourrais utiliser une boucle for pour initialiser mon tableau et faire avancer les choses, mais mon initialisation semble correcte me , et je veux savoir ce que j'ai fait de mal.

+3

Je dois dire, votre initialisation ressemble plus [3] [3] [3] [1] – spender

+1

Check out http: // chiphacker.com/ pour arduino questions connexes, plus susceptibles d'obtenir de l'aide là-bas! – theorise

Répondre

5

Si vous visez vraiment pour allouer la chose avec des zéros, vous pouvez utiliser un initialiseur simplifié:

int cube_matrix[3][3][3] = {0}; 

Si vous souhaitez plus de zéros là-bas, vous pouvez le faire aussi:

#include <stdio.h> 

int main(int argc, char* argv[]) { 

    int cube_matrix[3][3][3] = {1, 2, 3, 4, 5}; 
    int i, j, k; 

    for (i=0; i<3; i++) 
      for (j=0; j<3; j++) 
        for (k=0; k<3; k++) 
          printf("%i %i %i: %i\n", i, j, k, cube_matrix[i][j][k]); 

    return 0; 
} 

Avec la sortie qui ressemble à ceci:

$ ./a.out 
0 0 0: 1 
0 0 1: 2 
0 0 2: 3 
0 1 0: 4 
0 1 1: 5 
0 1 2: 0 
0 2 0: 0 
0 2 1: 0 
0 2 2: 0 
1 0 0: 0 
1 0 1: 0 
1 0 2: 0 
1 1 0: 0 
1 1 1: 0 
1 1 2: 0 
1 2 0: 0 
1 2 1: 0 
1 2 2: 0 
2 0 0: 0 
2 0 1: 0 
2 0 2: 0 
2 1 0: 0 
2 1 1: 0 
2 1 2: 0 
2 2 0: 0 
2 2 1: 0 
2 2 2: 0 
+0

A cet effet j'aime mieux le chemin avec de nombreuses accolades pour visualiser mon cube dans le code. Mais je n'ai jamais su à propos de l'initialisation ob multi-dim-arrays avec juste une paire d'accolades. Thx. – mantuko

9

Vous avez besoin d'un jeu supplémentaire de accolades autour de votre élément de tableau. Il vous manque l'ensemble extérieur:

int cube_matrix[3][3][3] = { 
    { 
     { {0}, {0}, {0} }, 
     { {0}, {0}, {0} }, 
     { {0}, {0}, {0} } 
    }, 
    { 
     { {0}, {0}, {0} }, 
     { {0}, {0}, {0} }, 
     { {0}, {0}, {0} } 
    }, 
    { 
     { {0}, {0}, {0} }, 
     { {0}, {0}, {0} }, 
     { {0}, {0}, {0} } 
    } 
}; 
0

Essayez quelque chose comme:

int cube_matrix[3][3][3] = { 
{ 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} } 
}, 
{ 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} } 
}, 
{ 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} }, 
    { {0}, {0}, {0} } 
} 
}; 
0

(Plus un pourboire)

Il y a semble booléen plus rapide/plus léger au lieu de ints si vous allez utilisation 0 et 1. Je travaille actuellement sur une grande matrice et la arduino

ps: On dirait que je ne peux pas répondre

0

Vous n'avez pas besoin d'utiliser tout ce qui accolades, essayez ceci:

int cube_matrix[3][3][3] = { 
    { 
    { 0, 0, 0 }, 
    { 0, 0, 0 }, 
    { 0, 0, 0 } 
    }, 
    { 
    { 0, 0, 0 }, 
    { 0, 0, 0 }, 
    { 0, 0, 0 } 
    }, 
    { 
    { 0, 0, 0 }, 
    { 0, 0, 0 }, 
    { 0, 0, 0 } 
    } 
}; 
Questions connexes