• Nenhum resultado encontrado

Oficina de Programa¸c˜ao utilizando a plataforma Arduino

N/A
N/A
Protected

Academic year: 2022

Share "Oficina de Programa¸c˜ao utilizando a plataforma Arduino"

Copied!
30
0
0

Texto

(1)

Oficina de Programa¸ c˜ ao utilizando a plataforma Arduino

Bianca Alessandra Visineski Alberton [email protected]

Paulo Nesello K¨unzel kruger [email protected]

Programa de Educa¸ao Tutorial Computando Culturas em Equidade Departamento Acadˆemico de Inform´atica

UTFPR

06 de outubro de 2012

(2)

O que h´a de novo?

Fun¸c˜oes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleat´orios a partir de um valor inicial definido pela entrada anal´ogica.

random(valor maximo); - Gera um valor aleat´orio dentro dos valores deramdomSeed(), ate um valor m´aximo definido por parˆametro. random(inicio,fim); - Gera valores aleat´orios entre os valores enviados por parˆametro.

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

(3)

O que h´a de novo?

Fun¸c˜oes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleat´orios a partir de um valor inicial definido pela entrada anal´ogica.

random(valor maximo); - Gera um valor aleat´orio dentro dos valores deramdomSeed(), ate um valor m´aximo definido por parˆametro. random(inicio,fim); - Gera valores aleat´orios entre os valores enviados por parˆametro.

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

(4)

O que h´a de novo?

Fun¸c˜oes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleat´orios a partir de um valor inicial definido pela entrada anal´ogica.

random(valor maximo); - Gera um valor aleat´orio dentro dos valores deramdomSeed(), ate um valor m´aximo definido por parˆametro. random(inicio,fim); - Gera valores aleat´orios entre os valores enviados por parˆametro.

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

(5)

O que h´a de novo?

Fun¸c˜oes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleat´orios a partir de um valor inicial definido pela entrada anal´ogica.

random(valor maximo); - Gera um valor aleat´orio dentro dos valores deramdomSeed(), ate um valor m´aximo definido por parˆametro. random(inicio,fim); - Gera valores aleat´orios entre os valores enviados por parˆametro.

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

(6)

O que h´a de novo?

Fun¸c˜oes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleat´orios a partir de um valor inicial definido pela entrada anal´ogica.

random(valor maximo); - Gera um valor aleat´orio dentro dos valores deramdomSeed(), ate um valor m´aximo definido por parˆametro.

random(inicio,fim); - Gera valores aleat´orios entre os valores enviados por parˆametro.

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

(7)

O que h´a de novo?

Fun¸c˜oes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleat´orios a partir de um valor inicial definido pela entrada anal´ogica.

random(valor maximo); - Gera um valor aleat´orio dentro dos valores deramdomSeed(), ate um valor m´aximo definido por parˆametro.

random(inicio,fim); - Gera valores aleat´orios entre os valores enviados por parˆametro.

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

(8)

O que h´a de novo?

Fun¸c˜oes da Biblioteca Arduino

ramdomSeed(analogRead(0)); - Determina valores aleat´orios a partir de um valor inicial definido pela entrada anal´ogica.

random(valor maximo); - Gera um valor aleat´orio dentro dos valores deramdomSeed(), ate um valor m´aximo definido por parˆametro.

random(inicio,fim); - Gera valores aleat´orios entre os valores enviados por parˆametro.

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

(9)

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

Tabela : Cores b´asicas com combina¸c˜ao RGB.

RED GREEN BLUE Cor

255 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

(10)

C´ odigo I

// P r o j e t o 6 - L i d a n d o com c o r e s

f l o a t R G B 1 [ 3 ] ;

f l o a t R G B 2 [ 3 ] ;

f l o a t INC [ 3 ] ;

int red , green , b l u e ;

int R e d P i n = 11;

int G r e e n P i n = 10;

int B l u e P i n = 9;



 v o i d s e t u p () {

 r a n d o m S e e d ( a n a l o g R e a d (0) ) ;



 R G B 1 [0] = 0;

 R G B 1 [1] = 0;

 R G B 1 [2] = 0;



 R G B 2 [0] = r a n d o m ( 2 5 6 ) ;

 R G B 2 [1] = r a n d o m ( 2 5 6 ) ;

(11)

C´ odigo II

 R G B 2 [2] = r a n d o m ( 2 5 6 ) ;

 }



 v o i d l o o p () {

 r a n d o m S e e d ( a n a l o g R e a d (0) ) ;



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

 INC [ x ] = ( R G B 1 [ x ] - R G B 2 [ x ]) / 2 5 6 ;

 }



 for ( int x =0; x < 2 5 6 ; x ++) {

 red = int ( R G B 1 [ 0 ] ) ;

 g r e e n = int ( R G B1 [ 1 ] ) ;

 b l u e = int ( R G B 1 [ 2 ] ) ;



 a n a l o g W r i t e ( RedPin , red ) ;

 a n a l o g W r i t e ( G r e e n P i n , g r e e n ) ;

 a n a l o g W r i t e ( BluePin , b l u e ) ;

 d e l a y ( 1 0 0 ) ;

(12)

C´ odigo III



 R G B 1 [0] -= INC [ 0 ] ;

 R G B 1 [1] -= INC [ 1 ] ;

 R G B 1 [2] -= INC [ 2 ] ;

 }



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

 R G B 2 [ x ] = r a n d o m ( 5 5 6 ) -300;

 R G B 2 [ x ] = c o n s t r a i n ( R G B 2 [ x ] , 0 , 2 5 5 ) ;

 d e l a y ( 1 0 0 0 ) ;

 }

 }

(13)

Projeto 7.1 - Lumin´ aria de humor com entrada serial

O controle agora ser´a feito pelo Serial monitor.

Figura : Tela inicial.

(14)

O que h´a de novo?

Vari´aveis

char buffer[18]; - Strings ou palavras Estruturas de programa¸c˜ao

while(condicao) - Loop ”parente”do for char* parameter; - Ponteiros

(15)

O que h´a de novo?

Vari´aveis

char buffer[18]; - Strings ou palavras

Estruturas de programa¸c˜ao

while(condicao) - Loop ”parente”do for char* parameter; - Ponteiros

(16)

O que h´a de novo?

Vari´aveis

char buffer[18]; - Strings ou palavras Estruturas de programa¸c˜ao

while(condicao) - Loop ”parente”do for

char* parameter; - Ponteiros

(17)

O que h´a de novo?

Vari´aveis

char buffer[18]; - Strings ou palavras Estruturas de programa¸c˜ao

while(condicao) - Loop ”parente”do for char* parameter; - Ponteiros

(18)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(19)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(20)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial

Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(21)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(22)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(23)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(24)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(25)

Fun¸c˜oes da Biblioteca Arduino

Serial.begin(9600); - Inicia uma comunica¸c˜ao serial com o computador por meio da porta USB.

Serial.flush(); - ”Limpa”tudo o que estiver na comunica¸c˜ao serial Serial.available(); - Verifica se quaisquer caracteres tenham sido enviados pela comunica¸c˜ao serial.

Serial.read(); - Lˆe os valores da entrada serial.

Serial.print(dados); - Envia valores pela porta serial, que s˜ao exibidos no monitor

Serial.println(dados); - Idem aoSerial.print(dados);, por´em pula linha quando chega no final do texto.

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

(26)

C´ odigo I

// L u m i n a r i a RGB c o n t r o l a d a por e n t r a d a s e r i a l

c h a r b u f f e r [ 1 8 ] ;

int red , green , b l u e ;

int R e d P i n = 11;

int G r e e n P i n = 10;

int B l u e P i n = 9;

 v o i d s e t u p () {

 S e r i a l . b e g i n ( 9 6 0 0 ) ;

 S e r i a l . f l u s h () ;

 p i n M o d e ( RedPin , O U T P U T ) ;

 p i n M o d e ( G r e e n P i n , O U T P U T ) ;

 p i n M o d e ( BluePin , O U T P U T ) ;

 }



 v o i d l o o p () {

 if ( S e r i a l . a v a i l a b l e () > 0) {

(27)

C´ odigo II

 int i n d e x =0;

 d e l a y ( 1 0 0 ) ;

 int n u m C h a r = S e r i a l . a v a i l a b l e () ;



 if ( numChar > 1 5 ) {

 n u m C h a r = 1 5 ;

 }

 w h i l e ( numChar - -) {

 b u f f e r [ i n d e x ++] = S e r i a l . r e a d () ;

 }

 s p l i t S t r i n g ( b u f f e r ) ;

 }

 }



 v o i d s p l i t S t r i n g ( c h a r * d a t a ) {

 S e r i a l . p r i n t ( ‘ ‘ D a t a e n t e r e d : ’ ’ ) ;

 S e r i a l . p r i n t l n ( d a t a ) ;

 c h a r * p a r a m e t e r ;

 p a r a m e t e r = s t r t o k ( data , ‘ ‘ , ’ ’ ) ;

(28)

C´ odigo III



 w h i l e ( p a r a m e t e r != N U L L ) {

 s e t L E D ( p a r a m e t e r ) ;

 p a r a m e t e r = s t r t o k ( NULL , ‘ ‘ , ’ ’ ) ;

 }

 for ( int x =0; x < 1 6 ; x ++) { // l i m p a o b u f f e r e o t e x t o do a r r a y b u f f e r

 b u f f e r [ x ]= ’ \0 ’ ;

 }



 S e r i a l . f l u s h () ;

 }



 v o i d s e t L E D ( c h a r * d a t a ) {

 if (( d a t a [0] == ’ r ’ ) || ( d a t a [0] == ’ R ’ ) ) {

 int Ans = s t r t o l ( d a t a +1 , NULL , 10) ;

 Ans = c o n s t r a i n ( Ans ,0 ,255) ;

 a n a l o g W r i t e ( RedPin , Ans ) ;

 S e r i a l . p r i n t ( ‘ ‘ Red is set to : ’ ’ ) ;

(29)

C´ odigo IV

 S e r i a l . p r i n t l n ( Ans ) ;

 }

 if (( d a t a [0] == ’ g ’ ) || ( d a t a [0] == ’ G ’ ) ) {

 int Ans = s t r t o l ( d a t a +1 , NULL , 10) ;

 Ans = c o n s t r a i n ( Ans ,0 ,255) ;

 a n a l o g W r i t e ( G r e e n P i n , Ans ) ;

 S e r i a l . p r i n t ( ‘ ‘ G r e e n is set to : ’ ’ ) ;

 S e r i a l . p r i n t l n ( Ans ) ;

 }

 if (( d a t a [0] == ’ b ’ ) || ( d a t a [0] == ’ B ’ ) ) {

 int Ans = s t r t o l ( d a t a +1 , NULL , 10) ;

 Ans = c o n s t r a i n ( Ans ,0 ,255) ;

 a n a l o g W r i t e ( BluePin , Ans ) ;

 S e r i a l . p r i n t ( ‘ ‘ B l u e is set to : ’ ’ ) ;

 S e r i a l . p r i n t l n ( Ans ) ;

 }

 }

(30)

Exerc´ıcio

Para um circuito com 2 LED’s vermelhos e e 2 LED’s verdes, fa¸ca um programa que quando o usu´ario digitar ”VERDE”no Serial Monitor os LED’s verdes ascendam e quando o usu´ario digitar ”VERMELHO”os dois LED’s ascendam.

OBS: os LED’s vermelhos e verdes nunca podem estar acesos ao mesmo tempo.

Referências

Documentos relacionados

Estudo da variação da pressão intra-ocular de pacientes pseudofácicos após capsulotomia posterior com laser de Nd:Y AG. Dissertação de Mestrado em Oftalmologia

O Projeto social DEMBOW DANCE apresenta como uma de suas contribuições possibilitar aos jovens e adolescentes das comunidades de bairros de Queimadas o

Este estudo trata do desenho de um Sistema Estadual de Incentivo a Serviços Ambientais (SISA) que inclui um regime de REDD (Redução de Emissões por Desmatamento e

Esta dissertação tem como objetivo geral propor um modelo de avaliação da rede logística para fins de reestruturação, utilizando o método do Fluxo de Caixa Descontado (FCD) para

Única das variáveis a valor de mercado que apresentou resultados significantes para a variável Tamanho, o endividamento de longo prazo a valor de mercado (Y6) também

Logo, é possível perceber que a tarefa do humorista não é tão fácil quanto parece. O papel de suas produções possui um significado além do simples “fazer rir”, já que ele

BRUNA PATRÍCIA BARBOSA DE ALENCAR 40 No caso da análise das sombras em uma imagem Radar é importante termos a orientação de vertentes (azimute) e as declividades no

Future work will include the following points: (1) to verify if by splitting data in the evaluation phase by other features rather than weekdays will improve results; (2) to test