oficina de programação utilizando a plataforma arduino€¦ · arduino bianca alessandra...
Post on 04-Apr-2020
5 Views
Preview:
TRANSCRIPT
Oficina de Programacao utilizando a plataformaArduino
Bianca Alessandra Visineski Albertonbi.alberton@gmail.com
Paulo Nesello Kunzelkruger paulo@hotmail.com
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
top related