Vetores
Em diversas linguagens de programação, existem o que chamamos de variáveis multidimensionais, capazes de armazenar não apenas um número ou um caractere, mas sim vários deles.
Um vetor é uma variável unidimensional. A forma mais fácil de entendê-lo é imaginando que ele possui vários "espaços" que podem ser acessados ou preenchidos com valores numéricos ou não. Cada espaço é uma componente do vetor.
A declaração de uma variável vetorial é bastante semelhante à de uma variável convencional. A diferença reside no fato de que agora precisamos informar o tamanho do vetor, ou seja, a quantidade de componentes que ele possui:
tipo-da-variavel nome-da-variavel[tamanho-do-vetor];
Exemplo 1: Variável denominada "vet", do tipo real com 9 componentes:
float vet[9];
Isso significa que podemos preencher os nove espaços com números reais do tipo `float`. A mistura de tipos no mesmo vetor (por exemplo, componentes inteiras com reais) não é permitida.
Para acessar um único componente do vetor, basta conhecer a posição correspondente. Vale ressaltar que a primeira posição é representada pelo número 0, e a última é representada por (n-1), onde (n) é o tamanho do vetor.
Diferentes maneiras de se declarar um vetor:
int vetor1[5]; // Declarando um vetor com tamanho fixo:
int vetor2[5] = {1, 2, 3, 4, 5}; // Inicializando um vetor com valores
int vetor3[5] = {0}; // Todos os elementos serão inicializados com 0
int vetor4[] = {1, 2, 3, 4, 5}; // O compilador deduzirá o tamanho do vetor
int vetor5[5] = {1, 2}; // Os elementos restantes serão inicializados com 0
Exemplo 2 Agora, vamos declarar um vetor chamado "v" com 5 componentes inteiras, atribuir valores às suas componentes e, por fim, exibir no monitor serial a soma da primeira com a última componente.
void setup() {
//Declarac¸˜ao do vetor
int v[5];
int soma;
//Atribuicao de valores aos componentes do vetor
v[0] = 3;
v[1] = 8;
v[2] = 11;
v[3] = -7;
v[4] = 60;
//Soma da primeira com o ultimo componente
soma = v[0] + v[4];
// Mostrando no monitor serial a o resultado da soma
Serial.begin(9600);
Serial.println(soma);
}
void loop() {
}
Projeto
projeto de um vetor feito com leds
Componentes
1 x Placa UNO R3;
1 x Cabo USB;
1 x Protoboard;
1 x Push-button
6 x Resistores;
5 x Leds
10 x Jumpers MxM
Projeto Simulador ThinkerCad
Código Arduíno
// Aula Sobre Vetores
const int buttonPin = 2; // Pino digital conectado ao botão
// Pinos digitais conectados aos LEDs
const int ledPins[] = { 3, 4, 5, 6, 7 }; // Note que a variavel estah definida como um vetor de caracteres
const int tamanhoDoVetor = 5; // Tamanho do vetor utilizado para representar o estado dos LEDs
int meuVetor[tamanhoDoVetor]; // Vetor que armazena o estado dos LEDs
int posicaoAtual = 0; // Variável que representa a posição atual no vetor
void setup() {
Serial.begin(9600); // Inicia a comunicação serial com uma taxa de 9600 bauds para depuração
pinMode(buttonPin, INPUT); // Configura o pino do botão como entrada
// Configura os pinos dos LEDs como saída e inicializa o vetor
for (int i = 0; i < tamanhoDoVetor; i++) {
pinMode(ledPins[i], OUTPUT);
meuVetor[i] = 0;
}
}
void loop() {
// detectar o botao pressionado
if (digitalRead(buttonPin) == HIGH) {
// liga na posicao atual
digitalWrite(ledPins[posicaoAtual], HIGH);
// Desliga o LED na posição anterior
int posicaoAnterior = (posicaoAtual + tamanhoDoVetor - 1) % tamanhoDoVetor; // o Operador % faz a operação "resto" de divisão
// pos = 0 -> 4/5 resto == 4 (indice da posicao anterior)
digitalWrite(ledPins[posicaoAnterior], LOW);
// Atualiza o vetor para indicar a posição atual do LED ligado
for (int i = 0; i < tamanhoDoVetor; i++) {
if (i == posicaoAtual) {
meuVetor[i] = 1; // Liga o LED na posição atual
} else {
meuVetor[i] = 0; // Desliga os LEDs em outras posições
}
}
// Imprime o vetor no monitor serial
Serial.print("Vetor: [");
for (int i = 0; i < tamanhoDoVetor; i++) {
Serial.print(meuVetor[i]);
if (i < tamanhoDoVetor - 1) {
Serial.print(", ");
}
}
Serial.println("]");
posicaoAtual = (posicaoAtual + 1) % tamanhoDoVetor; // incremnta a posicao com o resto
// pos == 0 -> (0 + 1) % 5 -> 1/5 resto == 1, nova pos == 1
delay(500); // Delay
}
}