Professional Documents
Culture Documents
2
Pré-requisitos
3
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)
4
computação física
computação física
• utilização de microcontroladores
6
computação física
7
computação física
como vemos os
computadores?
8
computação física
como vemos os computadores?
• teclado
• mouse
• monitor
• CPU
• caixas de som
9
computação física
como os
computadores
nos veem?
10
computação física
como os computadores nos veem?
• dedos
[teclado/mouse]
• olho
[monitor]
• duas orelhas
[caixas de som]
12
Perguntas
14
mas antes da
computação...
15
conceitos básicos de eletricidade
eletricidade
partículas atômicas:
17
eletricidade
“elétron extra”
“buraco”
18
eletricidade
S N
19
eletricidade – condutores e isolantes
20
eletricidade – diferença de potencial (v)
cargas positivas
diferença de potencial V
ou tensão.
cargas negativas
21
eletricidade – corrente elétrica (i)
22
eletricidade – tipos de corrente elétrica
corrente contínua
corrente alternada
23
eletricidade – tipos de corrente elétrica
24
eletricidade – resistência elétrica (r)
V=RxI
V
R = V/I
R I I = V/R
26
eletricidade – circuito elétrico
carga
[consumidor]
+
R
gerador V
[fonte]
–
condutor i
[caminho]
27
eletricidade – circuito elétrico
carga
[consumidor]
i
condutor R
[caminho] V
28
e agora,
computação...
29
plataforma Arduino
plataforma arduino
• microcontrolador Atmel
31
plataforma arduino - hardware
lilypad
mini
boarduino Duemilanove
paperduino mega
pro
32
arduino mega – hardware
33
arduino mega – hardware (Atmega 1280)
• portas
• 54 entradas/saídas digitais
• 16 entradas analógicas
• memória
• RAM: 8K
• Flash (programa): 128k – 4k (bootloader)
34
entradas e saídas digitais
35
entradas analógicas
36
saídas analógicas
37
portas seriais
• 4 portas seriais
38
plataforma arduino - instalação
• driver
windows: FTDI Serial USB
linux: não precisa instalar nada :-)
• software
é só descompactar e executar
39
plataforma arduino - instalação
40
plataforma arduino – ambiente
compilar
exibir serial
(verif. programa)
área de código
parar execução
novo
abrir
salvar
enviar programa
para placa área de status
41
plataforma arduino – estrutura do sketch
42
plataforma arduino – linguagem
• comandos básicos
43
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);
44
plataforma arduino – linguagem
• constantes
LOW | HIGH – indica nível baixo (0V) e alto (5V) nos pinos
45
atividade
prática!
46
prática
47
plataforma arduino – hello arduino
48
Perguntas
49
plataforma arduino – linguagem
• comandos básicos
• analogWrite(num_pino, valor);
valor entre 0 e 255
50
eletrônica – modulação PWM
51
mais prática!
52
eletrônica – protoboard
• antes disso:
• Protoboard
53
eletrônica – protoboard
• jumpers
54
antes disso
mais um pouco
de eletrônica...
55
eletrônica – resistores
fixo
variável
tipos:
carvão [carbono]
filme
fio
56
eletrônica – resistores
57
agora sim,
prática!
58
prática
59
prática
• circuito
60
prática
• esquemático
61
prática
• protoboard
Figura retirada de
http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading
62
Perguntas
63
sensores
sensores – chave (switch/button)
esquemático
65
plataforma arduino – linguagem
• Comandos
• digitalRead() – le um pino de entrada
• Exemplo:
• int chave = 0;
• chave = digitalRead(num_do_pino);
66
sensores
arduino lê tensões de
entrada (e não valores 0 e 1)
sem conexão em um
pino, a entrada flutua
entre 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)
67
atividade
prática!
68
sensores - prática
69
sensores - prática
• esquemático
70
sensores - prática
• protoboard
71
sensores - prática
72
voltando à
eletrônica...
73
eletrônica – sinais analógicos e digitais
sinal com
variação
contínua no
tempo
74
eletrônica – conversão de sinais
75
eletrônica – conversão de sinais
76
eletrônica – conversão de sinais
77
eletrônica - resistores
80
sensores analógicos – prática
• esquemático
81
sensores analógicos – prática
• circuito
82
entrada analógica – prática
83
Perguntas
84
protocolos de comunicação
comunicação serial – RS232
86
comunicação serial – RS232
• Serial.begin();
• Serial.print();
• Serial.read();
87
comunicação serial – RS232
• Leds
• TX: dados enviados
para o PC
• RX: dados
recebidos do PC
88
atividade
prática!
89
comunicação serial - prática
90
comunicação serial - prática
91
eletrônica – resistores LDR
92
eletrônica – resistores LDR
93
atividade
prática!
94
comunicação serial - prática
95
perguntas?
96
interrupções do arduino mega
interrupções
98
interrupções
• 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
99
interrupções
• exemplo:
attachInterrupt(num, function, mode);
Mode: LOW, CHANGE, RISING, FALLING
void changeState() {
state = !state;
}
100
atividade
prática!
101
prática
102
perguntas?
103
bibliotecas do arduino
bibliotecas do arduino
• é possível estender a
plataforma Arduino com
adição de componentes
de código, para controlar
sensores e atuadores
específicos.
• as bibliotecas são
geralmente disponibilizadas
como um zip que deve ser
descompactado dentro da
pasta libraries do Arduino.
106
bibliotecas do arduino
107
servo library
biblioteca servo
109
biblioteca servo
110
biblioteca servo
112
biblioteca servo
113
atividade
prática!
114
biblioteca servo - prática
• Fazer um programa
que movimente o
servo de acordo com
o valor lido do
potenciômetro.
115
perguntas?
116
nunchuck library
biblioteca nunchuck
118
biblioteca nunchuck
• o nunchuck possui um
acelerômetro de 3 eixos, um
joystick analógico de 2 eixos e 2
botões.
119
biblioteca nunchuck
Nunchuck nunchuck;
120
biblioteca nunchuck
122
biblioteca nunchuck
123
biblioteca nunchuck
124
atividade
prática!
125
biblioteca nunchuck - prática
126
atividade
prática!
127
biblioteca nunchuck - prática
128
perguntas?
129
capsense library
biblioteca capacitive sense
131
biblioteca capacitive sense
• circuito
132
biblioteca capacitive sense
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.
133
biblioteca capacitive 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
134
atividade
prática!
135
biblioteca capacitive sense - prática
• acender leds ou
movimentar motores
de acordo com o
sensor capacitivo
136
perguntas?
137
atuadores sonoros
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
139
atuadores sonoros
140
atuadores sonoros
1 segundo
• o tempo de cada
variação HIGH e LOW é
período
chamada de período e é
o inverso da frequência
141
atuadores sonoros
142
atuadores sonoros
143
atuadores sonoros
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
...
144
função tone
noTone(pin);
// para de emitir a frequência definida por tone()
// no pino correspondente
145
atividade
prática!
146
atuadores sonoros - prática
147
perguntas?
148
IR Remote library
biblioteca IR Remote
150
biblioteca IR Remote
151
biblioteca IR Remote
152
biblioteca IR Remote
153
biblioteca IR Remote
• circuito
154
biblioteca IR Remote
• circuito
155
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
156
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
157
biblioteca IR Remote
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
}
}
158
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
159
atividade
prática!
160
biblioteca IR Remote - prática
• comandar leds e
motores através do
controle remoto
161
perguntas?
162
GLCD library
biblioteca GLCD
164
biblioteca GLCD
estamos utilizando
2 5V ---
3 --- 2
possui o controlador 4
5
36
35
---
---
KS0108B. Este display 6
7
37
22
---
---
possui 20 pinos. 8 23 ---
9 24 ---
10 25 ---
11 26 ---
• a conexão deste display 12 27 ---
165
biblioteca GLCD - circuito
166
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
167
biblioteca GLCD
Sistema de coordenadas
168
biblioteca GLCD
GLCD.SetDot(x, y, color);
// desenha um ponto nas coordenadas x,y com a cor
// desejada (BLACK ou WHITE)
171
perguntas?
172
biblioteca GLCD
173
biblioteca GLCD
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
174
atividade
prática!
175
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
176
perguntas?
177
biblioteca GLCD – bitmaps (figuras)
178
biblioteca GLCD – bitmaps
GLCD.DrawBitmap(bitmap, x, y);
// desenha o bitmap especificado na posição x,y
179
atividade
prática!
180
biblioteca GLCD - prática
181
perguntas?
182
biblioteca GLCD – fontes
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
184
biblioteca GLCD – escrita de texto
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
185
atividade
prática!
186
biblioteca GLCD - prática
187
perguntas?
188
arduino - referencias
http://arduino.cc/en/Reference/HomePage
http://www.arduino.cc/en/Tutorial/HomePage
189
Obrigado!