150
interfaces físicas para dispositivos móveis Tiago Barros | [email protected]

Interfaces fisicas para dispositivos moveis

Embed Size (px)

DESCRIPTION

Curso de interfaces fisicas para dispositivos moveis com arduino.

Citation preview

Page 1: Interfaces fisicas para dispositivos moveis

interfaces físicas para dispositivos móveis

Tiago Barros | [email protected]

Page 2: Interfaces fisicas para dispositivos moveis

2

Apresentação

Tiago Barros - @tgfb

Mestre em Ciência da Computação, UFPE / 2007B.Sc. Ciência da Computação, UFPE / 2003Tec. Eletrônica, ETFPE / 1998

Engenheiro de Sistemas Sênior do C.E.S.A.REspecialista em tecnologia, Grupo de Inovação

Professor de pós-graduação e especialização em diversos cursos: C.E.S.A.R(Recife), Cin/UFPE/Motorola(Recife), Universidade Positivo (Curitiba), Instituto FaberLudens/FISAM/UnC (Curitiba).

Page 3: Interfaces fisicas para dispositivos moveis

3

Conteúdo

• computação física• alternativas de interfaces físicas para

dispositivos móveis• plataforma Arduino• protocolo de comunicação serial • plataforma Amarino• introdução à eletricidade e eletrônica• sinais analógicos e digitais• sensores e atuadores

Page 4: Interfaces fisicas para dispositivos moveis

4

Pré-requisitos

• desenvolvimento de aplicativos Android

Page 5: Interfaces fisicas para dispositivos moveis

computação física

Page 6: Interfaces fisicas para dispositivos moveis

6

computação física

• uso de computação e eletrônica [sensores e atuadores] na prototipação de objetos físicos para interação com seres humanos

• comportamento implementado por software

• utilização de microcontroladores

Page 7: Interfaces fisicas para dispositivos moveis

7

computação física

• o objetivo é interligar o mundo físico com o mundo virtual

• usar a computação e a interação com a tecnologia para o desenvolvimento das suas atividades

• meio para comunicação e interação entre pessoas

Page 8: Interfaces fisicas para dispositivos moveis

8

computação física

como vemos oscomputadores?

Page 9: Interfaces fisicas para dispositivos moveis

9

computação física

• teclado

• mouse

• monitor

• CPU

• caixas de som

como vemos os computadores?

Page 10: Interfaces fisicas para dispositivos moveis

10

computação física

como os computadores nos veem?

Page 11: Interfaces fisicas para dispositivos moveis

11

computação física

• dedos [teclado/mouse]

• olho [monitor]

• duas orelhas [caixas de som]

reflexo das entradas e saídas do computador

como os computadores nos veem?

Page 12: Interfaces fisicas para dispositivos moveis

12

computação física

“mudar a forma que os computadores nos

veem mudará como eles interagem

conosco”Tom Igoe – Physical Computing

Page 13: Interfaces fisicas para dispositivos moveis

13

Perguntas

Page 14: Interfaces fisicas para dispositivos moveis

sistemas computacionais reativos

Page 15: Interfaces fisicas para dispositivos moveis

15

sistemas computacionais reativos

percepção do ambiente, recebendo estímulos atavés de sensores;

e reação aos estímulos, de acordo com o seu comportamento (software), através de atuadores.

Page 16: Interfaces fisicas para dispositivos moveis

16

sistemas computacionais reativos

comunicação entre redes de sensores e atuadores para formar um ambiente dinâmico e interativo

interação de sensores e atuadores com dispositivos móveis

Page 17: Interfaces fisicas para dispositivos moveis

interfaces físicas para dispositivos móveis

Page 18: Interfaces fisicas para dispositivos moveis

18

interfaces físicas para dispositivos móveis

micro-controlador

sensor

atuador

sensor

comunicação

Page 19: Interfaces fisicas para dispositivos moveis

19

interfaces físicas para dispositivos móveis

android

Page 20: Interfaces fisicas para dispositivos moveis

20

interfaces físicas para dispositivos móveis

micro-controlador

sensor

atuador

sensor

comunicação

Page 21: Interfaces fisicas para dispositivos moveis

21

interfaces físicas para dispositivos móveis

micro-controlador

sensor

atuador

sensor

arduino

Page 22: Interfaces fisicas para dispositivos moveis

22

interfaces físicas para dispositivos móveis

micro-controlador

sensor

atuador

sensor

comunicação

Page 23: Interfaces fisicas para dispositivos moveis

23

interfaces físicas para dispositivos móveis

comunicação

amarino = +

Page 24: Interfaces fisicas para dispositivos moveis

plataforma arduino

Page 25: Interfaces fisicas para dispositivos moveis

25

plataforma arduino

• microcontrolador Atmel

• programação usando Wiring (subconjunto de processing, baseado em C/C++)

• open-source: evolução da plataforma através de contribuições dos usuários

Page 26: Interfaces fisicas para dispositivos moveis

26

plataforma arduino - hardware

unomini

lilypad

boarduino

paperduino megapro

Page 27: Interfaces fisicas para dispositivos moveis

27

plataforma arduino - hardware

• portas• 14 entradas/saídas digitais • 6 entradas analógicas

• memória• RAM: 1K• Flash (programa): 16k – 2k (bootloader)

• velocidade de processamento: 16MHz

Page 28: Interfaces fisicas para dispositivos moveis

28

plataforma arduino – hardware

Page 29: Interfaces fisicas para dispositivos moveis

29

plataforma arduino - instalação

• driver windows: FTDI Serial USB linux: não precisa instalar nada :-)

• software é só descompactar e executar

Page 30: Interfaces fisicas para dispositivos moveis

30

plataforma arduino - instalação

• Selecionando a placa e a porta serial

Page 31: Interfaces fisicas para dispositivos moveis

31

plataforma arduino – ambiente

área de código

área de status

compilar (verif. programa)

parar execução

novo

abrir

salvar

enviar programa para placa

exibir serial

Page 32: Interfaces fisicas para dispositivos moveis

32

plataforma arduino – ciclo de vida

escrever

compilar

enviar para placa

verificar execução

corrigir erros

corrigir erros

Page 33: Interfaces fisicas para dispositivos moveis

atuadores

Page 34: Interfaces fisicas para dispositivos moveis

34

plataforma arduino – estrutura do sketch

Page 35: Interfaces fisicas para dispositivos moveis

35

plataforma arduino – linguagem

• linguagem baseada em C (mas bem mais fácil)

• comandos básicos

• pinMode() – define um pino com entrada ou saída

• digitalWrite() – liga ou desliga uma saída digital

• delay() – “espera” um determinado tempo

Page 36: Interfaces fisicas para dispositivos moveis

36

plataforma arduino – linguagem

• Exemplos

• pinMode(num_do_pino, OUTPUT);

• digitalWrite(num_do_pino, valor); valor é LOW ou HIGH (0 ou 1, 0V ou 5V)

• delay(milisegundos);

Page 37: Interfaces fisicas para dispositivos moveis

37

plataforma arduino – linguagem

• constantes

LOW | HIGH – indica nível baixo (0V) e alto (5V) nos pinos INPUT | OUTPUT – define se um pino vai ser pino de entrada ou

de saída

Page 38: Interfaces fisicas para dispositivos moveis

38

atividade prática!

Page 39: Interfaces fisicas para dispositivos moveis

39

prática

• fazer o programa hello arduino, que pisca um led

• use o pino 13 de saída digital, a placa já possui um led ligado a ele :-)

Page 40: Interfaces fisicas para dispositivos moveis

40

plataforma arduino – hello arduino

Page 41: Interfaces fisicas para dispositivos moveis

41

Perguntas

Page 42: Interfaces fisicas para dispositivos moveis

protocolos de comunicação

Page 43: Interfaces fisicas para dispositivos moveis

43

comunicação serial – RS232

• chip ATMEGA 328 só tem interface serial, não tem USB

• nossa placa arduino possui um chip que converte Serial para USB

• usamos o mesmo cabo USB pra enviar dados pro PC via serial

Page 44: Interfaces fisicas para dispositivos moveis

44

comunicação serial – RS232

• o arduino possui uma biblioteca que implementa comunicação serial

• Serial.begin();

• Serial.print();

• Serial.read();

Page 45: Interfaces fisicas para dispositivos moveis

45

comunicação serial – RS232

• Leds• TX: dados

enviados para o PC

• RX: dados recebidos do PC

Page 46: Interfaces fisicas para dispositivos moveis

46

atividade prática!

Page 47: Interfaces fisicas para dispositivos moveis

47

comunicação serial - prática

“Hello Arduino” via serial

Page 48: Interfaces fisicas para dispositivos moveis

48

comunicação serial - prática

Page 49: Interfaces fisicas para dispositivos moveis

49

Perguntas

Page 50: Interfaces fisicas para dispositivos moveis

bibliotecas do arduino

Page 51: Interfaces fisicas para dispositivos moveis

51

bibliotecas do arduino

• é possível estender a plataforma Arduino com adição de componentes de código, para controlar sensores e atuadores específicos.

• estes componentes são chamados de bibliotecas (libraries)

Page 52: Interfaces fisicas para dispositivos moveis

52

bibliotecas do arduino

• as bibliotecas são geralmente disponibilizadas como um zip que deve ser descompactado dentro da pasta libraries do Arduino.

Page 53: Interfaces fisicas para dispositivos moveis

53

bibliotecas do arduino

• após reiniciar a IDE do Arduino, a biblioteca estará disponível no menu Sketch->Import Library

• a maioria das bibliotecas para o Arduino pode ser encontrada em http://arduino.cc/en/Reference/Libraries

Page 54: Interfaces fisicas para dispositivos moveis

plataforma amarino

Page 55: Interfaces fisicas para dispositivos moveis

55

plataforma amarino

• toolkit constituído de uma aplicação android e uma biblioteca arduino que permite envio de mensagens entre os dois dispositivos

• utilização de serial sobre bluetooth

• MIT Media Lab

• http://www.amarino-toolkit.net/

Page 56: Interfaces fisicas para dispositivos moveis

56

plataforma amarino

• Instalação• Baixar e descompactar a biblioteca

MeetAndroid (http://code.google.com/p/amarino/downloads/detail?name=MeetAndroid_3.zip)

• Baixar a biblioteca Amarino para Android(http://code.google.com/p/amarino/downloads/detail?name=AmarinoLibrary_v0_55.jar)

Page 57: Interfaces fisicas para dispositivos moveis

57

plataforma amarino

• Instalação• Instalar a aplicação amarino e o plugin

bundle no dispositivo android, para os primeiros testes

Amarino Plugin bundle

Page 58: Interfaces fisicas para dispositivos moveis

58

mais prática!

Page 59: Interfaces fisicas para dispositivos moveis

59

eletrônica – protoboard

• antes disso: • Protoboard

Page 60: Interfaces fisicas para dispositivos moveis

60

eletrônica – jumpers

• jumpers

Page 61: Interfaces fisicas para dispositivos moveis

61

atividade prática!

Page 62: Interfaces fisicas para dispositivos moveis

62

prática

• Testando a comunicação

Page 63: Interfaces fisicas para dispositivos moveis

63

prática – código exemplo

Page 64: Interfaces fisicas para dispositivos moveis

64

prática

• aplicação Amarino 2.0

Page 65: Interfaces fisicas para dispositivos moveis

65

prática

• aplicação Amarino 2.0

Page 66: Interfaces fisicas para dispositivos moveis

66

prática

• aplicação Amarino 2.0

Page 67: Interfaces fisicas para dispositivos moveis

67

prática

• aplicação Amarino 2.0

Page 68: Interfaces fisicas para dispositivos moveis

68

prática

• aplicação Amarino 2.0

Page 69: Interfaces fisicas para dispositivos moveis

69

Perguntas

Page 70: Interfaces fisicas para dispositivos moveis

70

API MeetAndroid

MeetAndroid meetAndroid; — cria um objeto do tipo MeetAndroid

meetAndroid.registerFunction (f, c);— registra uma função f para o determinado comando c,

que pode ser um número de ‘0’ a ‘9’ ou uma letra, de ‘a’ a ‘z’ e de ‘A’ a ‘Z’.

meetAndroid.unregisterFunction (c);— desregistra a função previamente registrada para o

comando c.

Page 71: Interfaces fisicas para dispositivos moveis

71

API MeetAndroid

meetAndroid.receive();— Verifica se existem comandos a serem recebidos e

chama a função registrada caso receba algum comando.

meetAndroid.bufferLength();— Retorna o tamanho do buffer de dados recebidos.

meetAndroid.getString(char[]);— Copia a string recebida para o array de char passado

como parâmetro.

Page 72: Interfaces fisicas para dispositivos moveis

72

API MeetAndroid

meetAndroid.getInt();— Retorna o valor do buffer como inteiro.

meetAndroid.getLong();— Retorna o valor do buffer como long int.

meetAndroid.getFloat();— Retorna o valor do buffer como float.

Page 73: Interfaces fisicas para dispositivos moveis

73

API MeetAndroid

meetAndroid.getIntValues(int[]);— Retorna o valor do buffer como um array de inteiros que

foram enviados separados por ‘;’. A quantidade de valores é passada para a função registrada através da variável numOfValues (argumento 2 da função);

meetAndroid.getFloatValues(float[]);— Retorna o valor do buffer como um array de floats, da

mesma forma que a anterior.

meetAndroid.send(value);— Envia um valor (numérico ou string) para o dispositivo

android.

Page 74: Interfaces fisicas para dispositivos moveis

74

atividade prática!

Page 75: Interfaces fisicas para dispositivos moveis

75

prática

Modificar o exemplo para enviar “OK” ao dispositivo android para cada comando recebido

Verificar o recebimento do “OK” no monitoring da aplicação Amarino 2.0

Page 76: Interfaces fisicas para dispositivos moveis

76

Perguntas

Page 77: Interfaces fisicas para dispositivos moveis

77

voltando ao arduino...

Page 78: Interfaces fisicas para dispositivos moveis

conceitos básicos de eletricidade

Page 79: Interfaces fisicas para dispositivos moveis

79

eletricidade

eletricidade - interação entre partículas atômicas

universo formado de átomos

partículas atômicas:

prótons: cargas positivas

elétrons: cargas negativas

Page 80: Interfaces fisicas para dispositivos moveis

80

eletricidade

Atomos com mais elétrons que prótons estão carregados negativamente (íon negativo)

Atomos com menos elétrons que prótons estão carregados positivamente (íon positivo)

“buraco”

“elétron extra”

Page 81: Interfaces fisicas para dispositivos moveis

81

eletricidade

cargas iguais se repelem

cargas opostas se atraem

cargas em movimento geram campo magnético

campo magnético em movimento gera corrente elétrica

NS

Page 82: Interfaces fisicas para dispositivos moveis

82

eletricidade – condutores e isolantes

isolante – evita a passagem de elétrons

condutor – permite o fluxo de elétrons

Page 83: Interfaces fisicas para dispositivos moveis

83

eletricidade – diferença de potencial (v)

cargas negativas

quanto maior a tensão, mais “força” teem os elétrons

diferença de potencial ou tensão.

cargas positivas

V

Page 84: Interfaces fisicas para dispositivos moveis

84

eletricidade – corrente elétrica (i)

quanto maior a corrente, maior a “quantidade” de

elétrons

fluxo de elétrons em um condutor

Page 85: Interfaces fisicas para dispositivos moveis

85

eletricidade – tipos de corrente elétrica

corrente contínua

corrente alternada

Page 86: Interfaces fisicas para dispositivos moveis

86

eletricidade – tipos de corrente elétrica

inversão de polaridade no tempo

mesma polaridade no tempo (sentido continuo)

Page 87: Interfaces fisicas para dispositivos moveis

87

eletricidade – resistência elétrica (r)

propriedade do material condutor em reduzir

a passagem dos elétrons

elétrons “se acumulam e batem” no condutor, “dissipando” sua

energia(gerando calor)

Page 88: Interfaces fisicas para dispositivos moveis

88

eletricidade – lei de ohm

V = R x I

a diferença de potencial (V) entre dois pontos de um

condutor é proporcional à corrente elétrica (I) que o

percorre e à sua resistência (R)

V

R I R = V/I

I = V/R

Page 89: Interfaces fisicas para dispositivos moveis

89

eletricidade – circuito elétrico

+

V

i

Rgerador[fonte]

condutor[caminho]

carga[consumidor]

Page 90: Interfaces fisicas para dispositivos moveis

90

Perguntas

Page 91: Interfaces fisicas para dispositivos moveis

atuadores

Page 92: Interfaces fisicas para dispositivos moveis

92

plataforma arduino – linguagem

• comandos básicos

• analogWrite() – escreve um valor analógico no pino

• analogWrite(num_pino, valor); valor entre 0 e 255

Page 93: Interfaces fisicas para dispositivos moveis

93

eletrônica – modulação PWM

a função analogWrite() escreve “pulsos” muito rápidos no pino digital (só funciona nos pinos marcados com PWM).

o valor a ser escrito representa o tempo que o pulso fica em nível alto e varia de 0 a 255.

quanto mais tempo o pulso permanecer em nível alto, maior é a “tensão média” da saída

Page 94: Interfaces fisicas para dispositivos moveis

94

atividade prática!

Page 95: Interfaces fisicas para dispositivos moveis

95

antes dissomais um pouco de eletrônica...

Page 96: Interfaces fisicas para dispositivos moveis

96

eletrônica – resistores

oferecem resistência à passagem da corrente elétrica

transformam energia elétrica em energia térmica[pode ser usado como atuador]

tipos:

carvão [carbono]

filmefio

resistência:

fixovariável

Page 97: Interfaces fisicas para dispositivos moveis

97

eletrônica – resistores

valores expressos em ohms

o corpo dos resistores possui um código de cores para identificar o valor

Page 98: Interfaces fisicas para dispositivos moveis

98

agora sim, prática!

Page 99: Interfaces fisicas para dispositivos moveis

99

prática

• acender o LED com a intensidade de brilho correspondente ao valor enviado pelo evento de teste do android

Page 100: Interfaces fisicas para dispositivos moveis

100

prática

• circuito

Figura retirada de http://arduino.cc/

Page 101: Interfaces fisicas para dispositivos moveis

101

prática

• esquemático

Figura retirada de http://arduino.cc/

Page 102: Interfaces fisicas para dispositivos moveis

102

prática

• protoboard

Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading

Page 103: Interfaces fisicas para dispositivos moveis

103

Perguntas

Page 104: Interfaces fisicas para dispositivos moveis

sensores

Page 105: Interfaces fisicas para dispositivos moveis

105

sensores – chave (switch/button)

• interrompe a passagem da corrente elétrica• liga/desliga o circuito• sensor de toque

esquemático

Page 106: Interfaces fisicas para dispositivos moveis

106

plataforma arduino – linguagem

• Comandos• digitalRead() – le um pino de entrada

• Exemplo:• int chave = 0;• chave = digitalRead(num_do_pino);

Page 107: Interfaces fisicas para dispositivos moveis

107

sensores

arduino lê tensões de

entrada (e não valores 0 e 1)

5 volts == HIGH (1)0 volts == LOW (0)

sem conexão em umpino, a entrada flutuaentre 0 e 5 volts (HIGH e LOW) este resistor é necessário

para que o pino seja levado para 0 quando não estiver conectado (chave aberta)

Page 108: Interfaces fisicas para dispositivos moveis

108

atividade prática!

Page 109: Interfaces fisicas para dispositivos moveis

109

sensores - prática

• fazer o circuito e o programa para enviar ao dispositivo android o valor do sensor lido

Page 110: Interfaces fisicas para dispositivos moveis

110

sensores - prática

• esquemático

Figura retirada de http://arduino.cc/

Page 111: Interfaces fisicas para dispositivos moveis

111

sensores - prática

• protoboard

Page 112: Interfaces fisicas para dispositivos moveis

112

Perguntas

Page 113: Interfaces fisicas para dispositivos moveis

113

voltando à eletrônica...

Page 114: Interfaces fisicas para dispositivos moveis

114

eletrônica – sinais analógicos e digitais

sinal com variação contínua no tempo

sinal com variação discreta (valores pré-definidos)

Page 115: Interfaces fisicas para dispositivos moveis

115

eletrônica – conversão de sinais

valor é lido em intervalos regulares de tempo e transformado em um número digital

Page 116: Interfaces fisicas para dispositivos moveis

116

eletrônica – conversão de sinais

vários valores, não só HIGH e LOW. quantiade de valores é a resolução.

Page 117: Interfaces fisicas para dispositivos moveis

117

eletrônica – conversão de sinais

resolução de 8 bits = 256 valoresresolução de 16 bits = 65536 valores

Page 118: Interfaces fisicas para dispositivos moveis

118

eletrônica - resistores

• Como funciona um resistor variável?

• no arduino, o valor da tensão é transformado em um valor digital entre 0 e 1023

Page 119: Interfaces fisicas para dispositivos moveis

119

atividade prática!

Page 120: Interfaces fisicas para dispositivos moveis

120

sensores analógicos – prática

• ler o valor do resistor variável e ligar um LED se esse valor passar de um determinado limite. Ao acender o LED, informar o dispositivo android.

Page 121: Interfaces fisicas para dispositivos moveis

121

sensores analógicos – prática

• esquemático

Figura retirada de http://arduino.cc/

Page 122: Interfaces fisicas para dispositivos moveis

122

sensores analógicos – prática

• circuito

Figura retirada de http://arduino.cc/

Page 123: Interfaces fisicas para dispositivos moveis

124

Perguntas

Page 124: Interfaces fisicas para dispositivos moveis

biblioteca amarino para android

Page 125: Interfaces fisicas para dispositivos moveis

126

Classe Amarino

• conexão• Amarino.connect(context, address);• Amarino.disconnect(context, address);

• Intents• AmarinoIntent.ACTION_CONNECTED• AmarinoIntent.ACTION_DISCONNECTED• AmarinoIntent.ACTION_CONNECTION_FAILED• AmarinoIntent.ACTION_PAIRING_REQUESTED

• Devemos registrar um BroadcastReceiver para receber os intents desejados

Page 126: Interfaces fisicas para dispositivos moveis

127

Classe Amarino

• comunicação• Amarino. sendDataToArduino(context, address,

command, data)

• Intents• AmarinoIntent.ACTION_SEND• AmarinoIntent.ACTION_RECEIVED

• Devemos registrar um BroadcastReceiver para receber os intents desejados

• API completa em: http://www.amarino-toolkit.net/tl_files/doc/index.html

Page 127: Interfaces fisicas para dispositivos moveis

128

atividade prática!

Page 128: Interfaces fisicas para dispositivos moveis

129

biblioteca amarino - prática

• fazer uma aplicação que mostre um gráfico de linha no android, com o valor do sensor lido pelo arduino.

• fazer uma aplicação que exiba um gradiente na tela e altere o brilho de um LED de acordo com a área do gradiente tocada

Page 129: Interfaces fisicas para dispositivos moveis

130

Perguntas

Page 130: Interfaces fisicas para dispositivos moveis

131

eletrônica – resistores LDR

• resistor variável sensível à luz

Page 131: Interfaces fisicas para dispositivos moveis

132

eletrônica – resistores LDR

• resistor variável sensível à luz

circuito para arduino

porque o resistor de 1k? - para limitar a corrente se o LDR assumir valores muito baixos

Page 132: Interfaces fisicas para dispositivos moveis

133

atividade prática!

Page 133: Interfaces fisicas para dispositivos moveis

134

entrada analógica - prática

ler valores do LDR e enviar para o dispositivo android

Page 134: Interfaces fisicas para dispositivos moveis

135

Perguntas

Page 135: Interfaces fisicas para dispositivos moveis

atuadores sonoros

Page 136: Interfaces fisicas para dispositivos moveis

137

atuadores sonoros

• Buzzer piezoelétrico• formado por

cerâmica piezoelétrica e disco metálico

• ao receber uma tensão a cerâmica se expande, quando removemos a tensão ele volta

Page 137: Interfaces fisicas para dispositivos moveis

138

atuadores sonoros

• Buzzer piezoelétrico• 2 polos: um é ligado

no GND e outro no pino de saída desejado

• aplicando uma tensão variável produz vibração que é traduzida em som

Page 138: Interfaces fisicas para dispositivos moveis

139

atuadores sonoros

• como programar o arduino para tocar uma nota musical?

• uma nota musical é um som em uma determinada frequência

• a frequência de uma nota significa quantas vezes o atuador sonoro vibra em 1 segundo

Page 139: Interfaces fisicas para dispositivos moveis

140

atuadores sonoros

• para fazer o atuador vibrar, escrevemos no pino uma sequência de valores HIGH e LOW, tantas vezes por segundo quanto for a frequência da nota

• o tempo de cada variação HIGH e LOW é chamada de período e é o inverso da frequência

baixa frequência

alta frequência

período

período

1 segundo

• para fazer o atuador vibrar, escrevemos no pino uma sequência de valores HIGH e LOW, tantas vezes por segundo quanto for a frequência da nota

• o tempo de cada variação HIGH e LOW é chamada de período e é o inverso da frequência

Page 140: Interfaces fisicas para dispositivos moveis

141

atuadores sonoros

• programar o arduino para tocar uma nota musical

void playTone(int period, int duration) { for (long i = 0; i < duration * 1000L; i += period* 2) { digitalWrite(speakerPin, HIGH); delayMicroseconds(period); digitalWrite(speakerPin, LOW); delayMicroseconds(period); }}

Page 141: Interfaces fisicas para dispositivos moveis

142

atuadores sonoros

•como tocar uma nota musical?

timeHigh = periodo / 2 = 1 / (2 * frequência)

* nota frequência periodo tempo em nivel alto* c (dó) 261 Hz 3830 1915 * d (ré) 294 Hz 3400 1700 * e (mi) 329 Hz 3038 1519 * f (fá) 349 Hz 2864 1432 * g (sol) 392 Hz 2550 1275 * a (lá) 440 Hz 2272 1136 * b (si) 493 Hz 2028 1014 * C (dó) 523 Hz 1912 956

Não é necessário escrever essas frequências, podemos incluir o arquivo notes.h

Page 142: Interfaces fisicas para dispositivos moveis

143

atuadores sonoros

•como tocar uma nota musical?

notes.h#define NOTE_B0 31#define NOTE_C1 33#define NOTE_CS1 35#define NOTE_D1 37#define NOTE_DS1 39#define NOTE_E1 41#define NOTE_F1 44#define NOTE_FS1 46#define NOTE_G1 49#define NOTE_GS1 52...

Page 143: Interfaces fisicas para dispositivos moveis

144

função tone

• Arduino já possui uma função para tocar notas

tone(pin, frequency); // emite uma determinada nota (representada pela // frequência) no pino ocrrespondente

noTone(pin);// para de emitir a frequência definida por tone() // no pino correspondente

tone(pin, frequency, duration);// emite uma determinada nota (representada pela // frequência) no pino ocrrespondente durante uma // determinada duração

Page 144: Interfaces fisicas para dispositivos moveis

145

atividade prática!

Page 145: Interfaces fisicas para dispositivos moveis

146

atuadores sonoros - prática

• Tocar uma nota ao receber um evento do android

Page 146: Interfaces fisicas para dispositivos moveis

147

perguntas?

Page 147: Interfaces fisicas para dispositivos moveis

148

arduino - referencias

• Lista dos comandos da linguagem em:

http://arduino.cc/en/Reference/HomePage

• Lista dos tutoriais em:

http://www.arduino.cc/en/Tutorial/HomePage

Page 148: Interfaces fisicas para dispositivos moveis

149

projeto

Page 149: Interfaces fisicas para dispositivos moveis

150

projeto da disciplina

• desenvolver um dispositivo interativo que utilize os conceitos aprendidos.

Page 150: Interfaces fisicas para dispositivos moveis

Obrigado!