13
Vetores em Arduino

Vetores em Arduino - Univap

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Vetores em Arduino

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.

• 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

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");

}