Upload
others
View
7
Download
0
Embed Size (px)
Citation preview
O que são vetores?
• 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 itens do vetor.
• 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.
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
int pin2 = 2;int pin3 = 3;int pin4 = 4;int pin5 = 5;int pin6 = 6;int pin7 = 7;int timer = 100;
void setup(){pinMode(pin2, OUTPUT);pinMode(pin3, OUTPUT);pinMode(pin4, OUTPUT);pinMode(pin5, OUTPUT);pinMode(pin6, OUTPUT);pinMode(pin7, OUTPUT);}
void loop() {digitalWrite(pin2, HIGH);delay(timer);digitalWrite(pin2, LOW);delay(timer);digitalWrite(pin3, HIGH);delay(timer);digitalWrite(pin3, LOW);delay(timer);digitalWrite(pin4, HIGH);delay(timer);digitalWrite(pin4, LOW);delay(timer);
digitalWrite(pin5, HIGH);delay(timer);digitalWrite(pin5, LOW);delay(timer);digitalWrite(pin6, HIGH);delay(timer);digitalWrite(pin6, LOW);delay(timer);digitalWrite(pin7, HIGH);delay(timer);digitalWrite(pin7, LOW);delay(timer);digitalWrite(pin6, HIGH);delay(timer);digitalWrite(pin6, LOW);delay(timer);
digitalWrite(pin5, HIGH);delay(timer);digitalWrite(pin5, LOW);delay(timer);digitalWrite(pin4, HIGH);delay(timer);digitalWrite(pin4, LOW);delay(timer);digitalWrite(pin3, HIGH);delay(timer);digitalWrite(pin3, 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() { Serial.println("Digite o numero:\n"); while(!Serial.available()); num = Serial.parseInt(); if(num > 127 || num < -128){ Serial.println("Numero invalido. Faixa de representação (8 bits): -128 a 127"); return; }
for(c = 7; c >= 0; c--){k = num >> c;if(k & 1)digitalWrite(pins[c], HIGH);elsedigitalWrite(pins[c], LOW);}Serial.print("\n");
}