Étape 8: Même plus de LEDs clignotantes
Programmation de la séquence de LED
Ouvrez l’exemple blink7.
Sur la ligne 3, vous verrez une nouvelle structure : ce que nous appelons un tableau. Un tableau est essentiellement une liste de variables, dans ce cas, c’est une liste de variables du type int. Nous utilisons des crochets pour indiquer que c’est un tableau. Pour initialiser le tableau, nous utilisons des supports incurvés, et les valeurs sont séparées par des virgules.
Lorsque nous voulons utiliser une valeur d’un tableau, nous devez spécifier quelle place dans le tableau, de que nous voulons que la valeur. Nous allons utiliser le tableau dans blink7 à titre d’exemple :
int tableau [] = {1,2,3,4,5,6,5,4,3,2} ;
Si nous voulons obtenir la première valeur du tableau, nous utilisons
Le zéro entre crochets est appelé l' indice. Les tableaux sont base zéro, cela signifie que le premier élément du tableau a l’index zéro. Cela peut être déroutant au début, par exemple, array [5] retourne 6, où vous attendez qu’il revienne 5.
Vous pouvez imaginer que cela peut causer beaucoup de problèmes... C’est pourquoi cette erreur a son propre nom : une erreur off-by-oneou hautbois , pour faire court.
Lorsque vous essayez de lire une valeur qui n’est pas à l’intérieur du tableau, tableau [10] par exemple, l’Arduino il suffit de lire le prochain endroit dans la mémoire, sans se rendre compte que la valeur il a lecture n’est plus une partie de la panoplie. Il vous donnera juste la valeur qu’il trouve à cet endroit particulier dans sa mémoire.
Mais les choses deviennent encore pire lorsque vous écrivez à un index en dehors du tableau, parce que vous pouvez être écrasant les autres données, comme des variables ou des morceaux de code qui se trouvent à cet endroit en mémoire ! Une mauvaise idée...
Si vous souhaitez déclarer un tableau sans initialisation à encore, vous pouvez utiliser
Notez que le 10 est le nombre d’éléments, tandis que le dernier élément sera tableau [9] !
Si vous l’initialisez sur la même ligne, comme dans blink7, l’IDE Arduino comptera les éléments pour vous, et vous n’avez pas à spécifier quoi que ce soit entre les crochets.
Si vous voulez connaître le nombre d’éléments dans le tableau, vous pouvez utiliser la fonction sizeof(array) . Cette fonction retourne la taille du tableau, en octets (1 octet = 8 bits). Ce n’est toutefois pas le nombre d’éléments, en blink7, sizeof(array) retournera le 20. C’est parce que chaque élément est un int et int 2 octets de longs. Ainsi le nombre total d’éléments est 20/2 = 10.
Nous utilisons ce sortir de notre boucle lorsque nous avons lu l’intégralité du tableau : tant que l’indice est inférieur au nombre d’éléments, nous pouvons lire en toute sécurité le tableau. Nous commençons avec i = 0, puisque le premier élément a l’index 0. Cette fois nous avons j’ai augmenter seulement avec 1. La notation « i ++ » est exactement le même que l’écriture ' i = i + 1', c’est juste plus courte. Une autre façon d’écrire cette serait ' i += 1'.
Depuis LED #1 est relié à la broche 2, LED #2 à la borne 4, 3 à 6, etc., nous multiplions le nombre de LED par 2 pour obtenir le nombre de broches.
Référence de l’Arduino : Array
Référence de l’Arduino : Sizeof
Référence de l’Arduino : incrément
Référence de l’Arduino : composé d’Addition
Vous pouvez modifier les valeurs dans le tableau pour faire votre propre séquence, et vous pourriez même ajouter ou supprimer des éléments, étant donné que nous avons fait notre programme indépendant de la longueur du tableau, en utilisant la fonction sizeof().
Résumé :
- Un tableau est une liste de valeurs (ou caractères ou autres tableaux) et utilise les crochets]
- Il s’agit de la déclaration d’un tableau: « int tableau [10]; »
- Il s’agit de la déclaration et l’initialisation d’un tableau: ' int tableau [] = {1,2,3,4,5,6,5,4,3,2} ;
- Les indices de tableau sont de base zéro, c'est-à-dire que le premier élément a indice 0
- sizeof(Array) retourne la taille en octets du tableau
- sizeof(Data Type) retourne la taille en octets du type de données
- sizeof (tableau) / de sizeof (type de données du tableau) vous donne le nombre d’éléments dans le tableau
Extra : tableaux à 2 Dimensions (Matrices)
Dans un tableau, les éléments peuvent non seulement être des types de données, comme les entiers (ints), mais aussi d’autres tableaux. Cela vous permet d’avoir soi-disant tableaux à 2 dimensions, qui peuvent être comparées aux matrices.
Elle est utilisée dans l’exemple blink8 : maintenant vous pouvez définir le nombre de led et le retard dans le tableau.
Notez qu’il faut préciser toutes les dimensions, sauf la première entre les crochets, lorsque vous déclarez un tableau multidimensionnel.
La syntaxe pour obtenir une valeur hors de la matrice est
Ouvrez l’exemple matrix_sum. Cet exemple ne fera rien si vous le télécharger, il n’a pas les sorties, c’est juste pour des fins d’apprentissage.
Il crée 4 matrices (tableaux 2D), dont deux ont des valeurs. Puis il calcule simplement la somme de deux matrices et la matrice transposée pour la première.
Ceci est fait en utilisant des boucles for imbriquées. Vous pouvez suivre cette explication sur l’image ci-dessus.
Les nombres sont l’ordre de que la boucle for iront sur eux. i est utilisée pour les lignes, j pour les colonnes. Ils commencent à la première colonne et la première rangée (1,1) en notation matricielle, [0] [0] pour la notation de tableau, puis la colonne est incrémenté (1,2) ou [1] [0], la colonne est incrémentée à nouveau (1,3) ou [2] [0] quand j est incrémentée à nouveau, la j-boucle s’arrête, car j n’est plus inférieur à trois. J’ai est incrémenté, j remet à zéro: (2,1) ou [0] [1], j est incrémentée: (2,2) ou [1] [1], puis (2,3) ou [2] [1]. J’ai est incrémenté, j remet à zéro: (3,1) ou [2] [0], puis sur (3, 2) ou [2] [1] et enfin (3,3) ou [2,2]. Maintenant j quitte, puis je quitte aussi bien.
Le calcul de la matrice transposée est similaire, il permute simplement les colonnes et les lignes :
transposeMatrix [i] [j] = matrixA [j] [i] ;
À l’intérieur de ces tableaux, vous pouvez utiliser davantage de baies, essentiellement de créer des espaces multidimensionnels. En théorie, le nombre de dimensions est illimité, mais une fois que vous utilisez plus de trois dimensions, les choses se compliquent vraiment, donc les autres méthodes sont préférables.