Criando e usando arrays no Arduino

Criando e usando arrays no Arduino

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.

 

Sobre Fábio dos Reis (1173 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*