oficina de programação utilizando a plataforma arduino · adapte o programa desta aula para que...

22
Oficina de Programa¸ ao utilizando a plataforma Arduino Bianca Alessandra Visineski Alberton [email protected] Paulo Nesello K¨ unzel kruger [email protected] Programa de Educa¸c˜ ao Tutorial Computando Culturas em Equidade Departamento Acadˆ emico de Inform´ atica UTFPR 22 de setembro de 2012 PET - CoCE (UTFPR) Oficina de Programa¸ ao 22 de setembro de 2012 1 / 13

Upload: others

Post on 07-Jun-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Oficina de Programacao utilizando a plataformaArduino

Bianca Alessandra Visineski [email protected]

Paulo Nesello Kunzelkruger [email protected]

Programa de Educacao TutorialComputando Culturas em Equidade

Departamento Academico de InformaticaUTFPR

22 de setembro de 2012

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 1 / 13

Page 2: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Projeto 5: Efeito Iluminacao Sequencial

O que precisaremos?

10 LEDs vermelhos

Resistor de 220Ω ou valor aproximado

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 2 / 13

Page 3: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Circuito utilizado

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 3 / 13

Page 4: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Variaveis

byte ledPin[] - Declaracao de um array do tipo byte

ledPin[] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13; - Armazenar dados emum array

x = ledPin[5]; - Acesso ao conteudo do Array

Operacoes

currentLED += direction ;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 4 / 13

Page 5: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Variaveis

byte ledPin[] - Declaracao de um array do tipo byte

ledPin[] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13; - Armazenar dados emum array

x = ledPin[5]; - Acesso ao conteudo do Array

Operacoes

currentLED += direction ;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 4 / 13

Page 6: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Variaveis

byte ledPin[] - Declaracao de um array do tipo byte

ledPin[] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13; - Armazenar dados emum array

x = ledPin[5]; - Acesso ao conteudo do Array

Operacoes

currentLED += direction ;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 4 / 13

Page 7: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Variaveis

byte ledPin[] - Declaracao de um array do tipo byte

ledPin[] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13; - Armazenar dados emum array

x = ledPin[5]; - Acesso ao conteudo do Array

Operacoes

currentLED += direction ;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 4 / 13

Page 8: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Variaveis

byte ledPin[] - Declaracao de um array do tipo byte

ledPin[] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13; - Armazenar dados emum array

x = ledPin[5]; - Acesso ao conteudo do Array

Operacoes

currentLED += direction ;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 4 / 13

Page 9: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Variaveis

byte ledPin[] - Declaracao de um array do tipo byte

ledPin[] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13; - Armazenar dados emum array

x = ledPin[5]; - Acesso ao conteudo do Array

Operacoes

currentLED += direction ;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 4 / 13

Page 10: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Variaveis

byte ledPin[] - Declaracao de um array do tipo byte

ledPin[] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13; - Armazenar dados emum array

x = ledPin[5]; - Acesso ao conteudo do Array

Operacoes

currentLED += direction ;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 4 / 13

Page 11: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Codigo I

// Projeto 5 - Iluminacao Sequencial

// cria o array para os terminais em que os LEDs estao

conectados

byte ledPin [] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13;

int ledDelay (65); // intervalo entre as mudancas

int direction = 1;

int currentLED = 0;

unsigned long changeTime;

void setup ()

// define todos os terminais como OUTPUT

for (int x=0; x<10; x++)

pinMode(ledPin[x], OUTPUT);

changeTime = millis ();

void loop()

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 5 / 13

Page 12: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Codigo II

// se ja passou ledDelay milissegundos desde a

ultima mudanca

if (( millis () - changeTime) > ledDelay)

changeLED ();

changeTime = millis ();

void changeLED ()

// desliga todos os LEDs

for (int x=0; x<10; x++)

digitalWrite(ledPin[x], LOW);

// liga o LED atual

digitalWrite(ledPin[currentLED], HIGH);

// incremento pelo valor de direction

currentLED += direction;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 6 / 13

Page 13: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Codigo III

// muda a direcao ao chegar nas extremidades

if (currentLED == 9) direction = -1;

if (currentLED == 0) direction = 1;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 7 / 13

Page 14: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Projeto 5.2: Efeito Iluminacao Sequencial -Interacao!

O que precisaremos?

Os mesmos componentes do projeto anterior mais um potenciometro

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 8 / 13

Page 15: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Funcoes da biblioteca Arduino

ledDelay = analogRead(potPin); - Leitura de dados analogicos entre0 e 1023

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 9 / 13

Page 16: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Funcoes da biblioteca Arduino

ledDelay = analogRead(potPin); - Leitura de dados analogicos entre0 e 1023

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 9 / 13

Page 17: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Funcoes da biblioteca Arduino

ledDelay = analogRead(potPin); - Leitura de dados analogicos entre0 e 1023

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 9 / 13

Page 18: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

O codigo esta na apostila!

O que ha de novo?

Funcoes da biblioteca Arduino

ledDelay = analogRead(potPin); - Leitura de dados analogicos entre0 e 1023

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 9 / 13

Page 19: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Codigo I

// Cria o array dos terminais dos LEDs

byte ledPin [] = 4, 5, 6, 7, 8, 9, 10, 11, 12, 13;

int ledDelay; // intervalo entre as mudancas

int direction = 1;

int currentLED = 0;

unsigned long changeTime;

int potPin = 2; // seleciona o terminal de entrada de

dados pelo potenciometro

void setup ()

// define todos os terminais como OUTPUT

for (int x=0; x<10; x++)

pinMode(ledPin[x], OUTPUT);

changeTime = millis ();

void loop()

// le o valor do potenciometro e atribui a ledDelay

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 10 / 13

Page 20: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Codigo II

ledDelay = analogRead(potPin);

// se ja passou ledDelay milissegundos desde a

ultima mudanca

if (( millis () - changeTime) > ledDelay)

changeLED ();

changeTime = millis ();

void changeLED ()

// desliga todos os LEDs

for (int x=0; x<10; x++)

digitalWrite(ledPin[x], LOW);

// liga o LED atual

digitalWrite(ledPin[currentLED],HIGH);

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 11 / 13

Page 21: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Codigo III

// incremento pelo valor de direction

currentLED += direction;

// muda a direcao ao chegar nas extremidades

if (currentLED == 9) direction = -1;

if (currentLED == 0) direction = 1;

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 12 / 13

Page 22: Oficina de Programação utilizando a plataforma Arduino · Adapte o programa desta aula para que os os LED’s sejam acessos dois a dois, come˘cando do centro, indo at e as extremidades

Exercıcio

Adapte o programa desta aula para que os os LED’s sejam acessos dois adois, comecando do centro, indo ate as extremidades e voltando para ocentro. Veja a figura abaixo.OBS: Utilizar o potenciometro e opcional.

PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 13 / 13