arduino completo tiago barros | [email protected]
TRANSCRIPT
![Page 2: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/2.jpg)
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: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/3.jpg)
3
Pré-requisitos
• conhecimentos básicos de programação
![Page 4: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/4.jpg)
4
Conteúdo
• computação física• conceitos básicos de eletricidade e eletrônica• plataforma arduino• sensores e atuadores analógicos e digitais• bibliotecas do arduino
– servo library– nunchuk library– capsense library– atuadores sonoros– GLCD library (LCD)
![Page 5: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/5.jpg)
computação física
![Page 6: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/6.jpg)
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: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/7.jpg)
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: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/8.jpg)
8
computação física
como vemos oscomputadores?
![Page 9: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/9.jpg)
9
computação física
• teclado
• mouse
• monitor
• CPU
• caixas de som
como vemos os computadores?
![Page 10: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/10.jpg)
10
computação física
como os computadores nos veem?
![Page 11: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/11.jpg)
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: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/12.jpg)
12
computação física
“mudar a forma que os computadores nos
veem mudará como eles interagem
conosco”Tom Igoe – Physical Computing
![Page 13: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/13.jpg)
14
Perguntas
![Page 14: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/14.jpg)
15
mas antes da computação..
.
![Page 15: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/15.jpg)
conceitos básicos de eletricidade
![Page 16: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/16.jpg)
17
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 17: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/17.jpg)
18
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 18: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/18.jpg)
19
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 19: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/19.jpg)
20
eletricidade – condutores e isolantes
isolante – evita a passagem de elétrons
condutor – permite o fluxo de elétrons
![Page 20: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/20.jpg)
21
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 21: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/21.jpg)
22
eletricidade – corrente elétrica (i)
quanto maior a corrente, maior a “quantidade” de
elétrons
fluxo de elétrons em um condutor
![Page 22: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/22.jpg)
23
eletricidade – tipos de corrente elétrica
corrente contínua
corrente alternada
![Page 23: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/23.jpg)
24
eletricidade – tipos de corrente elétrica
inversão de polaridade no tempo
mesma polaridade no tempo (sentido continuo)
![Page 24: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/24.jpg)
25
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 25: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/25.jpg)
26
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 26: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/26.jpg)
27
eletricidade – circuito elétrico
+
–
V
i
Rgerador[fonte]
condutor[caminho]
carga[consumidor]
![Page 27: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/27.jpg)
28
eletricidade – circuito elétrico
V
iRcondutor
[caminho]
carga[consumidor]
![Page 28: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/28.jpg)
29
e agora, computação..
.
![Page 29: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/29.jpg)
plataforma Arduino
![Page 30: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/30.jpg)
31
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 31: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/31.jpg)
32
plataforma arduino - hardware
Duemilanovemini
lilypad
boarduino
paperduino megapro
![Page 32: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/32.jpg)
33
arduino mega – hardware
![Page 33: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/33.jpg)
34
arduino mega – hardware (Atmega 1280)
• portas• 54 entradas/saídas digitais • 16 entradas analógicas
• memória• RAM: 8K• Flash (programa): 128k – 4k (bootloader)
• velocidade de processamento: 16MHz
![Page 34: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/34.jpg)
35
entradas e saídas digitais
• 54 pinos de entradas e saídas digitais (0 – 54)
![Page 35: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/35.jpg)
36
entradas analógicas
• 16 pinos de entrada analógica com resolução de 10 bits (0 – 1023)
![Page 36: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/36.jpg)
37
saídas analógicas
• 12 pinos de saída analógica (PWM) com resolução de 8 bits (0 – 255)
![Page 37: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/37.jpg)
38
portas seriais
• 4 portas seriais
• os objetos Serial(conectado à USB), Serial1, Serial2 e Serial3 são utilizados para acessar essas portas.
![Page 38: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/38.jpg)
39
plataforma arduino - instalação
• driver windows: FTDI Serial USB linux: não precisa instalar nada :-)
• software é só descompactar e executar
![Page 39: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/39.jpg)
40
plataforma arduino - instalação
• Selecionando a placa e a porta serial
![Page 40: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/40.jpg)
41
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 41: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/41.jpg)
42
plataforma arduino – estrutura do sketch
![Page 42: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/42.jpg)
43
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 43: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/43.jpg)
44
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 44: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/44.jpg)
45
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 45: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/45.jpg)
46
atividade prática!
![Page 46: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/46.jpg)
47
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 47: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/47.jpg)
48
plataforma arduino – hello arduino
![Page 48: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/48.jpg)
49
Perguntas
![Page 49: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/49.jpg)
50
plataforma arduino – linguagem
• comandos básicos
• analogWrite() – escreve um valor analógico no pino
• analogWrite(num_pino, valor); valor entre 0 e 255
![Page 50: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/50.jpg)
51
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 pulto permanecer em nível alto, maior é a “tensão média” da saída
![Page 51: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/51.jpg)
52
mais prática!
![Page 52: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/52.jpg)
53
eletrônica – protoboard
• antes disso: • Protoboard
![Page 53: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/53.jpg)
54
eletrônica – protoboard
• jumpers
![Page 54: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/54.jpg)
55
antes dissomais um pouco de eletrônica...
![Page 55: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/55.jpg)
56
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 56: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/56.jpg)
57
eletrônica – resistores
valores expressos em ohms
o corpo dos resistores possui um código de cores para identificar o valor
![Page 57: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/57.jpg)
58
agora sim, prática!
![Page 58: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/58.jpg)
59
prática
• modificar o programa hello arduino para acender o led com efeito de “fading” (acender gradativamente)
• dica: use analogWrite() em vez de digitalWrite(), variando os valores escritos, de 0 a 255
![Page 59: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/59.jpg)
60
prática
• circuito
Figura retirada de http://arduino.cc/
![Page 60: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/60.jpg)
61
prática
• esquemático
Figura retirada de http://arduino.cc/
![Page 61: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/61.jpg)
62
prática
• protoboard
Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading
![Page 62: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/62.jpg)
63
Perguntas
![Page 63: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/63.jpg)
sensores
![Page 64: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/64.jpg)
65
sensores – chave (switch/button)
• interrompe a passagem da corrente elétrica• liga/desliga o circuito• sensor de toque
esquemático
![Page 65: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/65.jpg)
66
plataforma arduino – linguagem
• Comandos• digitalRead() – le um pino de entrada
• Exemplo:• int chave = 0;• chave = digitalRead(num_do_pino);
![Page 66: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/66.jpg)
67
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 67: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/67.jpg)
68
atividade prática!
![Page 68: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/68.jpg)
69
sensores - prática
• fazer o circuito e o programa para acender o led 13 de acordo com sinal de entrada do pino 2
![Page 69: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/69.jpg)
70
sensores - prática
• esquemático
Figura retirada de http://arduino.cc/
![Page 70: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/70.jpg)
71
sensores - prática
• protoboard
![Page 71: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/71.jpg)
72
sensores - prática
![Page 72: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/72.jpg)
73
voltando à eletrônica...
![Page 73: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/73.jpg)
74
eletrônica – sinais analógicos e digitais
sinal com variação contínua no tempo
sinal com variação discreta (valores pré-definidos)
![Page 74: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/74.jpg)
75
eletrônica – conversão de sinais
valor é lido em intervalos regulares de tempo e transformado em um número digital
![Page 75: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/75.jpg)
76
eletrônica – conversão de sinais
vários valores, não só HIGH e LOW. quantiade de valores é a resolução.
![Page 76: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/76.jpg)
77
eletrônica – conversão de sinais
resolução de 8 bits = 256 valoresresolução de 16 bits = 65536 valores
![Page 77: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/77.jpg)
78
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 78: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/78.jpg)
79
atividade prática!
![Page 79: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/79.jpg)
80
sensores analógicos – prática
• ler o valor do resistor variável e ligar um LED se esse valor passar de um determinado limite.
![Page 80: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/80.jpg)
81
sensores analógicos – prática
• esquemático
Figura retirada de http://arduino.cc/
![Page 81: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/81.jpg)
82
sensores analógicos – prática
• circuito
Figura retirada de http://arduino.cc/
![Page 82: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/82.jpg)
83
entrada analógica – prática
![Page 83: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/83.jpg)
84
Perguntas
![Page 84: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/84.jpg)
protocolos de comunicação
![Page 85: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/85.jpg)
86
comunicação serial – RS232
• chip ATMEGA 168 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 86: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/86.jpg)
87
comunicação serial – RS232
• o arduino possui uma biblioteca que implementa comunicação serial
• Serial.begin();
• Serial.print();
• Serial.read();
![Page 87: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/87.jpg)
88
comunicação serial – RS232
• Leds• TX: dados
enviados para o PC
• RX: dados recebidos do PC
![Page 88: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/88.jpg)
89
atividade prática!
![Page 89: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/89.jpg)
90
comunicação serial - prática
“Hello Arduino” via serial
![Page 90: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/90.jpg)
91
comunicação serial - prática
![Page 91: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/91.jpg)
92
eletrônica – resistores LDR
• resistor variável sensível à luz
![Page 92: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/92.jpg)
93
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 93: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/93.jpg)
94
atividade prática!
![Page 94: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/94.jpg)
95
comunicação serial - prática
ler valores do LDR e enviar via serial
![Page 95: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/95.jpg)
96
perguntas?
![Page 96: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/96.jpg)
interrupções do arduino mega
![Page 97: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/97.jpg)
98
interrupções
• o arduino mega possui 6 pinos que podem ser ligados a interrupções de entrada e saída (IO).
• uma interrupção de IO é uma função que é executada quando existe uma mudança de estado no pino correspondente, independente do ponto em que se encontra a execução do programa.
![Page 98: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/98.jpg)
99
interrupções
• a função attachInterrupt(); permite configurar uma função para ser executada caso haja uma mudança no pino de IO correspondente:
• Interrupção 0 – pino 2• Interrupção 1 – pino 3• Interrupção 2 – pino 21• Interrupção 3 – pino 20• Interrupção 4 – pino 19• Interrupção 5 – pino 18
![Page 99: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/99.jpg)
100
interrupções
• exemplo:attachInterrupt(num, function, mode);
Mode: LOW, CHANGE, RISING, FALLING
int state = LOW;void setup () { attachInterrupt(0, changeState, RISING);}
void changeState() { state = !state;}
![Page 100: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/100.jpg)
101
atividade prática!
![Page 101: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/101.jpg)
102
prática
• montar circuito de leitura de sinal digital usando interrupções.
• botão pressionado muda o estado do LED
![Page 102: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/102.jpg)
103
perguntas?
![Page 103: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/103.jpg)
bibliotecas do arduino
![Page 104: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/104.jpg)
105
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 105: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/105.jpg)
106
bibliotecas do arduino
• as bibliotecas são geralmente disponibilizadas como um zip que deve ser descompactado dentro da pasta libraries do Arduino.
![Page 106: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/106.jpg)
107
bibliotecas do arduino
• após reiniciar o 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 107: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/107.jpg)
servo library
![Page 108: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/108.jpg)
109
biblioteca servo
• servo motores são um tipo especial de motor que possuicontrole sobre a sua posição
• eles não são feitos para girarlivremente, em vez disto, movimentam-se para a posição escolhida dentro de um limite, que é geralmente 180 graus.
![Page 109: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/109.jpg)
110
biblioteca servo
• um servo motor possui 3 fiosdois para alimentação e um terceiro para controlar suaposição.
• este controle é feito através da modulação por largura de pulso (PWM).
![Page 110: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/110.jpg)
111
biblioteca servo
• A conexão com os servos é feita da seguinte forma:
• Fio preto ou marrom: GND
• Fio vermelho: 5V
• Fio amarelo ou laranja: pino de controle (saída digital)
![Page 111: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/111.jpg)
112
biblioteca servo
• usando a biblioteca servo:• para usar esta biblioteca, é necessário importá-
la para o nosso programa, através do menu: Sketch->Import Library->Servo
• aparecerá a seguinte linha no seu programa indicando que a biblioteca foi importada
#include <Servo.h>
• depois, é só criar uma variável do tipo Servo:Servo motor1;
![Page 112: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/112.jpg)
113
biblioteca servo
• usando a biblioteca servo:motor1.attach(pino); // associa a variável ao
// pino em que o servo // motor está ligado
motor1.write(angulo); // angulo para o qual o // servo deverá girar, entre
// 0 e 180 graus
ang = motor1.read(); // retorna o angulo em que o // servo se encontra
![Page 113: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/113.jpg)
114
atividade prática!
![Page 114: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/114.jpg)
115
biblioteca servo - prática
• Fazer um programa que movimente o servo de acordo com o valor lido do potenciômetro.
![Page 115: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/115.jpg)
116
perguntas?
![Page 116: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/116.jpg)
nunchuck library
![Page 117: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/117.jpg)
118
biblioteca nunchuck
• é possível utilizar o nunchuck do WII como dispositivo de entrada.
• o nunchuck é um dispositivo que utiliza a interface I²C para comunicação. Esta interface possui 2 fios de comunicação: SDA(dados) e SCL(clock).
• o arduino possui uma biblioteca chamada Wire que implementa o I²C.
• a biblioteca Nunchuck foi desenvolvida utilizando a biblioteca Wire, por isso as duas precisam ser importadas no sketch.
![Page 118: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/118.jpg)
119
biblioteca nunchuck
• o nunchuck possui um acelerômetro de 3 eixos, um joystick analógico de 2 eixos e 2 botões.
• cada um destes sensores pode ser lido através da biblioteca Nunchuck.
![Page 119: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/119.jpg)
120
biblioteca nunchuck
• conexões com o Arduino Mega:
• Fio Vermelho: 3.3V
• Fio Preto: GND• Fio Amarelo(SDA):
Pino 20• Fio Azul(SCL):
Pino 21
• Objeto para acessar os dados deve ser criado
Nunchuck nunchuck;
![Page 120: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/120.jpg)
121
biblioteca nunchuck
• usando a biblioteca nunchuck:nunchuck.begin(); // inicializa a biblioteca,
// deve ser chamada no// setup();
nunchuck.update(); // lê novos valores dos // sensores do nunchuck, deve
// ser chamada continuamente
// dentro do loop(); nunchuck.calibrateJoy(); // define os valores // atuais do joystick
// como os valores // centrais
![Page 121: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/121.jpg)
122
biblioteca nunchuck
• usando a biblioteca nunchuck:x = nunchuck.readAccelX(); // lê o valor do
// acelerômetro no eixo
// X
• Mesmo para readAccelY(); e readAccelZ();
x = nunchuck.readAngleX(); // lê o valor do angulo// (entre 0 e 180)
no// eixo X
• Mesmo para readAngleY(); e readAngleZ();
![Page 122: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/122.jpg)
123
biblioteca nunchuck
• usando a biblioteca nunchuck:z = nunchuck.readZ(); // lê o valor atual do botão
// Z (0 liberado, 1 // pressionado)
• Mesmo para readC();
z = nunchuck.zPressed(); // retorna se o botão Z // foi pressionado
• Mesmo para cPressed();
![Page 123: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/123.jpg)
124
biblioteca nunchuck
• usando a biblioteca nunchuck:x = nunchuck.readJoyX(); // lê o valor atual do
// joystick no eixo X
// (0 – 255)
• Mesmo para readJoyY();
x = nunchuck.leftJoy(); // retorna se o joystick // foi para a
esquerda // (informação
digital)
• Mesmo para rightJoy(); upJoy(); e downJoy();
![Page 124: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/124.jpg)
125
atividade prática!
![Page 125: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/125.jpg)
126
biblioteca nunchuck - prática
• Ler os valores do nunchuck e enviá-los pela serial para o PC
: x, y, z – btnC, btnZ – joyX, joyY
![Page 126: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/126.jpg)
127
atividade prática!
![Page 127: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/127.jpg)
128
biblioteca nunchuck - prática
• controlar servo motores através do acelerômetro e/ou do joystick
• utilizar o joystick, os servo motores e o material de apoio (papel, fita, etc) para criar um robô
![Page 128: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/128.jpg)
129
perguntas?
![Page 129: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/129.jpg)
capsense library
![Page 130: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/130.jpg)
131
biblioteca capacitive sense
• esta biblioteca permite receber dados de sensores capacitivos utilizando 2 pinos do Arduino.
• um dos pinos do arduino (send pin) envia um sinal para o outro pino (receive pin), através de um resistor. O atraso entre enviar e receber o sinal depende dos valores de R*C, onde C é a capacitância que é alterada de acordo com a proximidade do corpo humano.
Figura retirada de http://www.arduino.cc/playground/Main/CapSense
![Page 131: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/131.jpg)
132
biblioteca capacitive sense
• circuito
![Page 132: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/132.jpg)
133
biblioteca capacitive sense
• usando a biblioteca cap sense:
CapSense btn1 = CapSense(sendPin, receivePin); // cria um sensor capacitivo entre os pinos // sendPin e receivePin
btn1.capSense(numSamples);// retorna a capacitância média, de acordo com a // quantidade de amostras.// esta capacitância possui um valor baixo se // não houver toque e um valor alto ao toque.
![Page 133: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/133.jpg)
134
biblioteca capacitive sense
• usando a biblioteca cap sense:
set_CS_Timeout_Millis(timeout_millis);// define o valor de timeout para o sensor// caso o mesmo não consiga ler o valor correto
set_CS_AutocaL_Millis(autoCal_millis);// define o tempo de auto calibragem do sensor
![Page 134: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/134.jpg)
135
atividade prática!
![Page 135: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/135.jpg)
136
biblioteca capacitive sense - prática
• acender leds ou movimentar motores de acordo com o sensor capacitivo
![Page 136: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/136.jpg)
137
perguntas?
![Page 137: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/137.jpg)
atuadores sonoros
![Page 138: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/138.jpg)
139
atuadores sonoros
• auto falantes• bobina em volta de
um imã• corrente elétrica na
bobina produz campo magnético
• campo magnético variável faz a membrana se deslocar, produzindo som
![Page 139: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/139.jpg)
140
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 140: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/140.jpg)
141
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 141: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/141.jpg)
142
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 142: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/142.jpg)
143
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 143: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/143.jpg)
144
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 144: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/144.jpg)
145
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 145: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/145.jpg)
146
atividade prática!
![Page 146: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/146.jpg)
147
atuadores sonoros - prática
• Tocar uma melodia (“dó ré mi fá”, por exemplo) usando a função tone();
• Usar alguns switches ou sensores capacitivos para tocar uma nota quando pressionados, criando um teclado.
![Page 147: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/147.jpg)
148
perguntas?
![Page 148: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/148.jpg)
IR Remote library
![Page 149: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/149.jpg)
150
biblioteca IR Remote
• esta biblioteca permite enviar e receber dados através de atuadores e sensores infravermelhos.
• a luz infravermelha não é visível ao olho humano, entretanto está presente em vários dispositivos emissores de luz, como lâmpadas incandescentes e o próprio sol.
• assim, a comunicação infravermelho sofre interferência destes fatores.
![Page 150: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/150.jpg)
151
biblioteca IR Remote
• para reduzir a interferência de outras fontes de luz infravermelha, os dispositivos utilizam a modulação de sinal.
![Page 151: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/151.jpg)
152
biblioteca IR Remote
• um receptor sintonizado de infravermelho é um dispositivo capaz de detectar pulsos de infravermelho a frequências de 36kHz a 40kHz, sendo 38kHz a mais comumente utilizada.
• ao detectar esta frequênciao receptor põe o nivel 0em sua saída, caso a frequêncianão seja detectada, a saída temnível lógico 1.
![Page 152: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/152.jpg)
153
biblioteca IR Remote
• o transmissor utilizado para comunicação infravermelho é um LED, parecido com um LED comum mas que emite luz infravermelha.
• não é possível verificar seo LED infravermelho está aceso a olho nu, entretanto olhá-lo através de uma câmera(de celular, pode exemplo)vai mostrar se ele está aceso ounão.
![Page 153: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/153.jpg)
154
biblioteca IR Remote
• circuito
![Page 154: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/154.jpg)
155
biblioteca IR Remote
• circuito
*No Arduino Mega, a biblioteca IRRemote envia dados através do pino 9Também é necessário setar o pinMode(9, OUTPUT);
![Page 155: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/155.jpg)
156
biblioteca IR Remote
• recepção de infravermelho
IRrecv irrecv(pin);// cria um objeto para recepção de infravermelho// (receiver), com o sensor conectado ao pin.
decode_results results;// cria um objeto para armazenar o resultado// da decodificação do sinal recebido
irrecv.enableIRIn(); // Inicia o receiver
![Page 156: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/156.jpg)
157
biblioteca IR Remote
• recepção de infravermelho
X = irrecv.decode(&results);// decodifica o sinal caso haja algum dado// recebido. Neste caso, retorna valor diferente// de zero.
Y = results.value;// results.value contém o valor do comando // recebido
irrecv.resume();// prepara o objeto para receber o próximo valor
![Page 157: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/157.jpg)
158
biblioteca IR Remote
• recepção de infravermelho – exemplo de códigoint RECV_PIN = 11;IRrecv irrecv(RECV_PIN);decode_results results;
void setup(){ Serial.begin(9600); irrecv.enableIRIn(); // inicia o receiver}
void loop() { if (irrecv.decode(&results)) { Serial.println(results.value, HEX); irrecv.resume(); // Recebe o próximo valor }}
![Page 158: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/158.jpg)
159
biblioteca IR Remote
• transmissão de infravermelho
IRsend irsend;// cria um objeto para transmissão de // infravermelho. No arduino mega, este objeto // transmite no pino 9.
irsend.sendSony(dado, nBits);irsend.sendNEC(dado, nBits);irsend.sendRC5(dado, nBits);irsend.sendRC6(dado, nBits);// envia o dado com o determinado numero de bits // utilizando o protocolo especificado
![Page 159: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/159.jpg)
160
atividade prática!
![Page 160: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/160.jpg)
161
biblioteca IR Remote - prática
• ler os valores recebidos pelo controle remoto e mostrá-los na serial
• comandar leds e motores através do controle remoto
![Page 161: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/161.jpg)
162
perguntas?
![Page 162: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/162.jpg)
GLCD library
![Page 163: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/163.jpg)
164
biblioteca GLCD
• a biblioteca GLCD permite controlar displays Gráficos LCD. Foi feita inicialmente para o display gráfico com controlador KS0108, mas atualmente suporta outros controladores.
![Page 164: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/164.jpg)
165
biblioteca GLCD
• o display gráfico que estamos utilizando possui o controlador KS0108B. Este display possui 20 pinos.
• a conexão deste display com o arduino mega se dá de acordo com a tabela ao lado.
Pino LCD Arduino Pot1 GND 12 5V ---3 --- 24 36 ---5 35 ---6 37 ---7 22 ---8 23 ---9 24 ---
10 25 ---11 26 ---12 27 ---13 28 ---14 29 ---15 33 ---16 34 ---17 --- ---18 --- 319 5V ---20 --- 220R
![Page 165: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/165.jpg)
166
biblioteca GLCD - circuito
Pino LCD Arduino Pot1 GND 12 5V ---3 --- 24 36 ---5 35 ---6 37 ---7 22 ---8 23 ---9 24 ---
10 25 ---11 26 ---12 27 ---13 28 ---14 29 ---15 33 ---16 34 ---17 --- ---18 --- 319 5V ---20 --- 220R
![Page 166: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/166.jpg)
167
biblioteca GLCD
GLCD.Init(mode);// inicializa a biblioteca GLCD de acordo com o // modo que pode ser: INVERTED ou NON-INVERTED
GLCD.SetDisplayMode(mode);// define o estado do display de acordo com o // modo que pode ser: INVERTED ou NON_INVERTED
GLCD.ClearScreen(color);// apaga a tela inteira com a cor desejada, que// pode ser: WHITE ou BLACK
![Page 167: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/167.jpg)
168
biblioteca GLCD
Sistema de coordenadas
![Page 168: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/168.jpg)
169
biblioteca GLCD
GLCD.SetDot(x, y, color);// desenha um ponto nas coordenadas x,y com a cor// desejada (BLACK ou WHITE)
GLCD.DrawVLine(x, y, height, color);// desenha uma linha vertical, começando em x,y// com altura height e com cor definida em color
GLCD.DrawHLine(x, y, width, color);// desenha uma linha horizontal, começando em x,y// com altura width e com cor definida em color
GLCD.DrawLine(x1, y1, x2, y2, color);// desenha uma linha começando em x1,y1// e terminando em x2,y2 com a cor desejada
![Page 169: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/169.jpg)
170
atividade prática!
![Page 170: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/170.jpg)
171
biblioteca GLCD - prática
• montar o circuito para ligar o display LCD e desenhar formas básicas
Pino LCD Arduino Pot1 GND 12 5V ---3 --- 24 36 ---5 35 ---6 37 ---7 22 ---8 23 ---9 24 ---
10 25 ---11 26 ---12 27 ---13 28 ---14 29 ---15 33 ---16 34 ---17 --- ---18 --- 319 5V ---20 --- 220R
![Page 171: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/171.jpg)
172
perguntas?
![Page 172: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/172.jpg)
173
biblioteca GLCD
GLCD.DrawRect(x, y, width, height, color);// desenha um retangulo com canto superior // esquerdo em x,y e com largura e altura// definidas por width e height
GLCD.FillRect(x, y, width, height, color); // desenha um retangulo preenchido, da mesma forma// que a função anterior
GLCD.InvertRect(x, y, width, height);// inverte as cores dos pontos (pixels) de uma // área começando em x,y e com área width,height
![Page 173: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/173.jpg)
174
biblioteca GLCD
GLCD.DrawRoundRect(x, y, w, h, radius, color);// desenha um retangulo com cantos arredondados// definidos por radius, que pode ter valor entre// 1 e metadade da altura ou largura do retangulo
GLCD.DrawCircle(x, y, r, color); // desenha um circulo centralizado em x,y e com// raio r
GLCD.FillCircle(x, y, r, color); // desenha um circulo preenchido, centralizado em// x,y e com raio r
![Page 174: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/174.jpg)
175
atividade prática!
![Page 175: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/175.jpg)
176
biblioteca GLCD - prática
• definir e implementar um jogo usando o LCD e os sensores e atuadores aprendidos
• após a definição do jogo, o mesmo deverá ser apresentado para a turma
![Page 176: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/176.jpg)
177
perguntas?
![Page 177: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/177.jpg)
178
biblioteca GLCD – bitmaps (figuras)
• a biblioteca GLCD possui um utilitário para importar figuras no ambiente do arduino
• este utilitário encontra-se em arduino-0022\libraries\glcd\bitmaps\utils\Java\glcdMakeBitmap.jar
• basta clicar duas vezes no arquivo jar e este será executado, abrindo uma janela para conversão. Arrastar um bitmap sobre esta janela irá converter o bitmap em código que pode ser carregado no Arduino. Este código é gerado no arquivo nome_da_imagem.h
![Page 178: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/178.jpg)
179
biblioteca GLCD – bitmaps
• Para usar uma imagem, basta incluí-la no seu sketch#include “bitmaps\nome_da_imagem.h”
• Para incluir todos os bitmaps, podemos usar #include “bitmaps\allBitmaps.h”
• Função para desenhar o bitmap
GLCD.DrawBitmap(bitmap, x, y);// desenha o bitmap especificado na posição x,y
![Page 179: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/179.jpg)
180
atividade prática!
![Page 180: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/180.jpg)
181
biblioteca GLCD - prática
• incrementar o jogo com imagens bitmap
![Page 181: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/181.jpg)
182
perguntas?
![Page 182: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/182.jpg)
183
biblioteca GLCD – fontes
• Existe um utilitário grátis que permite converter fontes do windows em arquivos que podem ser importados no seu sketch, chamado FontCreator2
• Para usar uma fonte, basta incluí-la no seu sketch#include “fonts\nome_da_fonte.h”
• Para incluir todas as fontes, podemos usar #include “fonts\allFonts.h”
• Função para selecionar a fonte GLCD.SelectFont(nome_da_fonte);
// seleciona a fonte desejada para ser utilizada // nas próximas operações de escrita
![Page 183: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/183.jpg)
184
biblioteca GLCD – escrita de texto
GLCD.SetFontColor(color);// define a cor a ser usada para escrever com a // fonte atual
GLCD.SetTextMode(mode); // define o modo de rolagem de texto, que pode ser // SCROLL_UP ou SCROLL_DOWN
gText myTxtArea = gText(x1, y1, x2, y2);// cria uma área de texto de tamanho começando em // x1,y1 e terminando em x2,y2
![Page 184: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/184.jpg)
185
biblioteca GLCD – escrita de texto
gText myTxtArea = gText(predefArea);// cria uma área predefinida, que pode ser:// textAreaFULL, textAreaTOP, textAreaBOTTOM, // textAreaLEFT ou textAreaRIGHT
myTxtArea.ClearArea(); // apaga a área de texto
myTxtArea.print(argumento); // imprime o argumento na área de texto. Este // argumento pode ser uma variável ou uma string
![Page 185: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/185.jpg)
186
atividade prática!
![Page 186: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/186.jpg)
187
biblioteca GLCD - prática
• finalizar o jogo com os conceitos aprendidos
![Page 187: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/187.jpg)
188
perguntas?
![Page 188: Arduino completo Tiago Barros | tiago@tiagobarros.org](https://reader035.vdocuments.site/reader035/viewer/2022062700/552fc12c497959413d8d1a44/html5/thumbnails/188.jpg)
189
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