Como criar e usar arrays no Arduino
Criando e usando arrays no Arduino
Um array é um tipo especial de variável que permite armazenar uma série de elementos de dados de mesmo tipo simultaneamente, ao contrário de uma variável comum, que só permite o armazenamento de um dado por vez em seu espaço de memória.
Em um array podemos acessar seus elementos de forma individual, por meio de uma posição numérica de índice, que geralmente é contada a partir do zero (primeira posição do array).
Os arrays podem ter múltiplas dimensões, e comumente usamos arrays de uma ou duas dimensões em nossos códigos.
Costumamos chamar os arrays de uma dimensão de “vetores“, e os arrays bidimensionais de “matrizes“.
Neste tutorial vamos mostrar como declarar arrays unidimensionais em um sketch do Arduino Na próxima lição trataremos dos arrays bidimensionais (matrizes).
Declarando um array unidimensional (vetor)
Declarar um array significa criá-lo na memória do microcontrolador. Para isso, podemos usar as sintaxes listadas a seguir:
int valores[8]; int Pinos[] = {2, 4, 6, 9, 5}; int valoresEntrada[6] = {4, 6, 13, -3, 7}; char texto[8] = "Arduino";
No primeiro exemplo, declaramos o array valores com oito posições, mas sem atribuir-lhe um valor inicial (sem inicializá-lo).
No segundo exemplo, o array de nome Pinos foi declarado sem indicação explícita de seu tamanho (número de elementos), mas já atribuindo valores a cinco posições – os valores a serem atribuídos devem ser separados por vírgulas e inseridos entre chaves {}.
No terceiro exemplo, o array valoresEntrada é inicializado com 5 valores, e declarado como possuindo 6 posições disponíveis.
No último exemplo é declarado um array de caracteres com a palavra chave char, contendo 8 posições (caracteres), e ele é inicializado com a string (cadeia de caracteres) “Arduino”.
Atribuindo valores a um array unidimensional
Para inserir dados em um vetor, proceda da mesma forma que a atribuição de dados em variáveis, porém informando a posição de índice onde a informação será inserida.
Por exemplo:
valores[0] = 230;
Neste exemplo, o valor 230 foi atribuído à posição de índice 0 do vetor valores (primeira posição).
A última posição do vetor é igual ao seu número de posições menos um, pois a contagem das posições se inicia em zero. Desta forma, para atribuir um valor á última posição do vetor valores, que foi declarado anteriormente contendo 8 posições, usamos a declaração a seguir:
valores[7] = 123;
que irá atribuir o valor 123 à posição 7 do vetor (que é sua última posição).
Acessando valores em um array unidimensional
Suponhamos que seja necessário acessar o terceiro valor armazenado no vetor Pinos. Para isso, devemos acessar a posição 2 do vetor (que corresponde ao terceiro valor armazenado). Vamos copiar esse valor para uma variável x:
x = Pinos[2];
Desta forma, a variável x conterá o valor 6, que é o terceiro elemento armazenado no array (posição 2).
Retornando todos os valores do array sequencialmente
Podemos retornar (ou acessar) todos os valores de um vetor, sequencialmente, usando um laço for para acessar cada valor individualmente. Tomemos como exemplo nosso array valoresEntrada, que possui 5 elementos. Queremos exibir seu conteúdo, ou seja, todos os elementos que o constituem, em sequência, no monitor serial. Para isso, podemos usar o código seguinte:
for (i = 0; i < 5; i++) { Serial.println(valoresEntrada[i]); }
Esse laço for será executado 5 vezes (0 a 4), e o método Serial.println exibirá no monitor serial o conteúdo de cada posição do array valoresEntrada, acessados pelo seu índice de posição, contado também de 0 a 4 (número de índice entre colchetes).
Se houver alguma dúvida com relação ao emprego de arrays em programação, recomendo conferir as lições sobre Lógica de Programação do canal da Bóson Treinamentos no YouTube.
É isso aí! Na próxima lição iremos abordar o uso de arrays bidimensionais (matrizes) em programação para Arduino.
Olá, bom dia. Poderia me ajudar com uma programação utilizando Arrays?
Sim, Geovanna. O que acontece?
Alguém me ajuda por favor, no meu código irei armazenar em array 4 valores lidos apartir de um modulo bluetooth, mas quando eu tento definir que int x = control[0]; da um erro”invalid types ‘int[int]’ for array subscript
fábio, tudo bem? como conseguiria extrair um valor máximo e mínimo de um array. Por exemplo, eu tenho um pacote de mensagens msg[4], que é responsável por mostrar o valor do eixo x de um sensor de movimento, como posso extrair o valor máximo e mínimo desse pacote de msg?