Você está na página 1de 13

Vetores em

Arduino
• O vetor é uma estrutura de dados indexada, que pode
armazenar uma determinada quantidade de valores do
mesmo tipo.

• Os dados armazenados em um vetor são chamados de


O que são itens do vetor.

vetores? • Para localizar a posição de um item em um vetor usamos


um número inteiro denominado índice do vetor.

• Facilidade de manipular um grande conjunto de dados do


mesmo tipo declarando-se apenas uma varíavel
Declarando Vetor no Arduino

• Todos os métodos abaixo são formas validades de criar – declarar- um vetor

int meusInts[6];

int meusPinos[]={2,4,8,3,6};

int meusValSens[6]={2,4,-8,3,2};

char mensagem[6]=“hello”;
Acessando um vetor
• Vetores são indexados a partir de 0, isto é, referindo-se a inicialização
dos vetores acima, o primeiro elemento do vetor está no índice 0,
então

• meusValSens[0]==2, meusValSens[1] == 4, e assim por diante.

• Isso também significa que em um vetor com dez elementos, o índice


nove é o último elemento.
• int meuVetor[10] = {9,3,2,4,3,1,7,8,9,11};

• meuVetor[9] contém 11

• meuVetor[10] é invalido
Para atribuir e ler um valor a um elemento do
vetor
• meusValSens[0] =10;

• X = meuValSens[4];
Vetores e loops For
• Vetores são frequentemente manipulados dentro de loops for, onde o
contador do loop é usado como o índice para cada elemento. Por
exemplo, para imprimir os elementos de um vetor através da porta
serial, você pode fazer algo do tipo:

for (byte i = 0; i < 5; i = i + 1) {


Serial.println(meusPinos[i]);
}
Exemplo – Knight Rider
• Este exercício é baseado no programa de TV dos anos 80
chamado Knight Rider onde o famoso ator David Hasselhoff
tinha um inteligência artificial dirigindo seu Pontiac. O carro
é corberto de leds piscando em sequência.
Versão 1 – Sem vetor
void loop() { digitalWrite(pin5, HIGH); digitalWrite(pin5, HIGH);
int pin2 = 2;
digitalWrite(pin2, HIGH); delay(timer); delay(timer);
int pin3 = 3;
delay(timer); digitalWrite(pin5, LOW); digitalWrite(pin5, LOW);
int pin4 = 4;
digitalWrite(pin2, LOW); delay(timer); delay(timer);
int pin5 = 5;
delay(timer); digitalWrite(pin6, HIGH); digitalWrite(pin4, HIGH);
int pin6 = 6;
digitalWrite(pin3, HIGH); delay(timer); delay(timer);
int pin7 = 7;
delay(timer); digitalWrite(pin6, LOW); digitalWrite(pin4, LOW);
int timer = 100;
digitalWrite(pin3, LOW); delay(timer); delay(timer);
void setup(){ delay(timer); digitalWrite(pin7, HIGH); digitalWrite(pin3, HIGH);
pinMode(pin2, OUTPUT); digitalWrite(pin4, HIGH); delay(timer); delay(timer);
pinMode(pin3, OUTPUT); delay(timer); digitalWrite(pin7, LOW); digitalWrite(pin3, LOW);
pinMode(pin4, OUTPUT); digitalWrite(pin4, LOW); delay(timer); delay(timer);
pinMode(pin5, OUTPUT); delay(timer); digitalWrite(pin6, HIGH); }
pinMode(pin6, OUTPUT); delay(timer);
pinMode(pin7, OUTPUT); digitalWrite(pin6, LOW);
} delay(timer);
Exercício
Para se familiarizar com o simulador e com o Arduino, implementar o
projeto abaixo que recebe um caractere via comunicação serial e exibe,
por meio de LEDs, o seu correspondente código ASCII . Lembrete:
utilizar o TinkerCad para montagem e simulação do circuito.
int num, c, k; byte pins[] = {6, 7, 8, 9, 10, 11, 12, 13};
void setup() {

for(int i = 0; i < 8; i++) {

pinMode(pins[i], OUTPUT);

}
Serial.begin(9600);
}

void loop() {
for(c = 7; c >= 0; c--){
Serial.println("Digite o numero:\n");
k = num >> c;
while(!Serial.available());
if(k & 1)
num = Serial.parseInt();
digitalWrite(pins[c], HIGH);
if(num > 127 || num < -128){
else
Serial.println("Numero invalido. Faixa de representação (8 bits): -128 a 127");
digitalWrite(pins[c], LOW);
return;
}
}
Serial.print("\n");

Você também pode gostar