oficina de programação utilizando a plataforma arduino€¦ · arduino bianca alessandra...

30
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 06 de outubro de 2012 PET - CoCE (UTFPR) Oficina de Programa¸ ao 06 de outubro de 2012 1 / 13

Upload: others

Post on 04-Apr-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

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

06 de outubro de 2012

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 1 / 13

Page 2: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Funcoes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleatorios a partirde um valor inicial definido pela entrada analogica.

random(valor maximo); - Gera um valor aleatorio dentro dos valoresde ramdomSeed(), ate um valor maximo definido por parametro.

random(inicio,fim); - Gera valores aleatorios entre os valores enviadospor parametro.

constrain(RGB2[x], 0, 255); - Garante que o valor dado seja naonegativo e esteja dentro da faixa escolhida.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 2 / 13

Page 3: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Funcoes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleatorios a partirde um valor inicial definido pela entrada analogica.

random(valor maximo); - Gera um valor aleatorio dentro dos valoresde ramdomSeed(), ate um valor maximo definido por parametro.

random(inicio,fim); - Gera valores aleatorios entre os valores enviadospor parametro.

constrain(RGB2[x], 0, 255); - Garante que o valor dado seja naonegativo e esteja dentro da faixa escolhida.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 2 / 13

Page 4: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Funcoes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleatorios a partirde um valor inicial definido pela entrada analogica.

random(valor maximo); - Gera um valor aleatorio dentro dos valoresde ramdomSeed(), ate um valor maximo definido por parametro.

random(inicio,fim); - Gera valores aleatorios entre os valores enviadospor parametro.

constrain(RGB2[x], 0, 255); - Garante que o valor dado seja naonegativo e esteja dentro da faixa escolhida.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 2 / 13

Page 5: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Funcoes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleatorios a partirde um valor inicial definido pela entrada analogica.

random(valor maximo); - Gera um valor aleatorio dentro dos valoresde ramdomSeed(), ate um valor maximo definido por parametro.

random(inicio,fim); - Gera valores aleatorios entre os valores enviadospor parametro.

constrain(RGB2[x], 0, 255); - Garante que o valor dado seja naonegativo e esteja dentro da faixa escolhida.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 2 / 13

Page 6: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Funcoes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleatorios a partirde um valor inicial definido pela entrada analogica.

random(valor maximo); - Gera um valor aleatorio dentro dos valoresde ramdomSeed(), ate um valor maximo definido por parametro.

random(inicio,fim); - Gera valores aleatorios entre os valores enviadospor parametro.

constrain(RGB2[x], 0, 255); - Garante que o valor dado seja naonegativo e esteja dentro da faixa escolhida.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 2 / 13

Page 7: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Funcoes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleatorios a partirde um valor inicial definido pela entrada analogica.

random(valor maximo); - Gera um valor aleatorio dentro dos valoresde ramdomSeed(), ate um valor maximo definido por parametro.

random(inicio,fim); - Gera valores aleatorios entre os valores enviadospor parametro.

constrain(RGB2[x], 0, 255); - Garante que o valor dado seja naonegativo e esteja dentro da faixa escolhida.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 2 / 13

Page 8: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Funcoes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleatorios a partirde um valor inicial definido pela entrada analogica.

random(valor maximo); - Gera um valor aleatorio dentro dos valoresde ramdomSeed(), ate um valor maximo definido por parametro.

random(inicio,fim); - Gera valores aleatorios entre os valores enviadospor parametro.

constrain(RGB2[x], 0, 255); - Garante que o valor dado seja naonegativo e esteja dentro da faixa escolhida.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 2 / 13

Page 9: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Primeiramente, como usar as cores vermelho, verde e azul para conseguiroutras cores?

Tabela : Cores basicas com combinacao RGB.

RED GREEN BLUE Cor255 0 0 Vermelho

0 255 0 Verde

0 0 255 Azul

255 255 0 Amarelo

0 255 255 Azul Piscina (Ciano)

255 0 255 Magenta

255 255 255 Branco

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 3 / 13

Page 10: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Codigo I

// Projeto 6 - Lidando com cores

float RGB1 [3];

float RGB2 [3];

float INC [3];

int red , green , blue;

int RedPin = 11;

int GreenPin = 10;

int BluePin = 9;

void setup () {

randomSeed(analogRead (0));

RGB1 [0] = 0;

RGB1 [1] = 0;

RGB1 [2] = 0;

RGB2 [0] = random (256);

RGB2 [1] = random (256);

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 4 / 13

Page 11: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Codigo II

RGB2 [2] = random (256);

}

void loop() {

randomSeed(analogRead (0));

for (int x=0; x<3; x++) {

INC[x] = (RGB1[x] - RGB2[x]) / 256;

}

for (int x=0; x <256; x++) {

red = int(RGB1 [0]);

green = int(RGB1 [1]);

blue = int(RGB1 [2]);

analogWrite (RedPin , red);

analogWrite (GreenPin , green);

analogWrite (BluePin , blue);

delay (100);

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 5 / 13

Page 12: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Codigo III

RGB1 [0] -= INC [0];

RGB1 [1] -= INC [1];

RGB1 [2] -= INC [2];

}

for (int x=0; x<3; x++) {

RGB2[x] = random (556) -300;

RGB2[x] = constrain(RGB2[x], 0, 255);

delay (1000);

}

}

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 6 / 13

Page 13: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Projeto 7.1 - Luminaria de humor com entrada serial

O controle agora sera feito pelo Serial monitor.

Figura : Tela inicial.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 7 / 13

Page 14: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Variaveis

char buffer[18]; - Strings ou palavras

Estruturas de programacao

while(condicao) - Loop ”parente”do for

char* parameter; - Ponteiros

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 8 / 13

Page 15: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Variaveis

char buffer[18]; - Strings ou palavras

Estruturas de programacao

while(condicao) - Loop ”parente”do for

char* parameter; - Ponteiros

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 8 / 13

Page 16: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Variaveis

char buffer[18]; - Strings ou palavras

Estruturas de programacao

while(condicao) - Loop ”parente”do for

char* parameter; - Ponteiros

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 8 / 13

Page 17: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

O que ha de novo?

Variaveis

char buffer[18]; - Strings ou palavras

Estruturas de programacao

while(condicao) - Loop ”parente”do for

char* parameter; - Ponteiros

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 8 / 13

Page 18: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 19: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 20: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 21: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 22: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 23: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 24: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 25: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Funcoes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunicacao serial com ocomputador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunicacao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sidoenviados pela comunicacao serial.

Serial.read(); - Le os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que sao exibidosno monitor

Serial.println(dados); - Idem ao Serial.print(dados);, porem pula linhaquando chega no final do texto.

strtok (data, “ ,”); - Separa uma string de acordo com termos-chave(Nesse caso e a vırgula)

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 9 / 13

Page 26: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Codigo I

// Luminaria RGB controlada por entrada serial

char buffer [18];

int red , green , blue;

int RedPin = 11;

int GreenPin = 10;

int BluePin = 9;

void setup () {

Serial.begin (9600);

Serial.flush ();

pinMode(RedPin , OUTPUT);

pinMode(GreenPin , OUTPUT);

pinMode(BluePin , OUTPUT);

}

void loop() {

if (Serial.available () > 0) {

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 10 / 13

Page 27: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Codigo II

int index =0;

delay (100);

int numChar = Serial.available ();

if (numChar >15) {

numChar =15;

}

while (numChar --) {

buffer[index ++] = Serial.read();

}

splitString(buffer);

}

}

void splitString(char* data) {

Serial.print(‘‘Data entered: ’’);

Serial.println(data);

char* parameter;

parameter = strtok (data , ‘‘ ,’’);

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 11 / 13

Page 28: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Codigo III

while (parameter != NULL) {

setLED(parameter);

parameter = strtok (NULL , ‘‘ ,’’);

}

for (int x=0; x<16; x++) { // limpa o buffer e o

texto do array buffer

buffer[x]=’\0’;

}

Serial.flush ();

}

void setLED(char* data) {

if ((data [0] == ’r’) || (data [0] == ’R’)) {

int Ans = strtol(data+1, NULL , 10);

Ans = constrain(Ans ,0 ,255);

analogWrite(RedPin , Ans);

Serial.print(‘‘Red is set to: ’’);

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 12 / 13

Page 29: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Codigo IV

Serial.println(Ans);

}

if ((data [0] == ’g’) || (data [0] == ’G’)) {

int Ans = strtol(data+1, NULL , 10);

Ans = constrain(Ans ,0 ,255);

analogWrite(GreenPin , Ans);

Serial.print(‘‘Green is set to: ’’);

Serial.println(Ans);

}

if ((data [0] == ’b’) || (data [0] == ’B’)) {

int Ans = strtol(data+1, NULL , 10);

Ans = constrain(Ans ,0 ,255);

analogWrite(BluePin , Ans);

Serial.print(‘‘Blue is set to: ’’);

Serial.println(Ans);

}

}

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 13 / 13

Page 30: Oficina de Programação utilizando a plataforma Arduino€¦ · Arduino Bianca Alessandra Visineski Alberton bi.alberton@gmail.com Paulo Nesello Kunzel kruger paulo@hotmail.com Programa

Exercıcio

Para um circuito com 2 LED’s vermelhos e e 2 LED’s verdes, faca umprograma que quando o usuario digitar ”VERDE”no Serial Monitor osLED’s verdes ascendam e quando o usuario digitar ”VERMELHO”os doisLED’s ascendam.OBS: os LED’s vermelhos e verdes nunca podem estar acesos ao mesmotempo.

PET - CoCE (UTFPR) Oficina de Programacao 06 de outubro de 2012 14 / 13