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
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
Circuito utilizado
PET - CoCE (UTFPR) Oficina de Programacao 22 de setembro de 2012 3 / 13
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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