Escolar Documentos
Profissional Documentos
Cultura Documentos
Arduino Completo
Arduino Completo
Apresentao
Pr-requisitos
Contedo
computao fsica
conceitos bsicos de eletricidade e eletrnica
plataforma arduino
sensores e atuadores analgicos e digitais
bibliotecas do arduino
servo library
nunchuk library
capsense library
atuadores sonoros
GLCD library (LCD)
4
computao fsica
computao fsica
uso de computao e eletrnica [sensores e
atuadores] na prototipao de objetos fsicos
para interao com seres humanos
comportamento implementado por software
utilizao de microcontroladores
computao fsica
o objetivo interligar o mundo fsico com o
mundo virtual
usar a computao e a interao com a
tecnologia para o desenvolvimento das suas
atividades
meio para comunicao e interao entre
pessoas
7
computao fsica
como vemos os
computadores?
8
computao fsica
teclado
mouse
monitor
CPU
caixas de som
computao fsica
como os
computadores
nos veem?
10
computao fsica
dedos
[teclado/mouse]
olho
[monitor]
duas orelhas
[caixas de som]
computao fsica
Perguntas
14
mas antes da
computao...
15
eletricidade
universo formado de tomos
partculas atmicas:
eletricidade
eltron extra
buraco
Atomos com mais eltrons que
prtons esto carregados
negativamente (on negativo)
Atomos com menos eltrons que
prtons esto carregados
positivamente (on positivo)
18
eletricidade
campo magntico em
movimento
gera corrente eltrica
cargas em movimento
geram campo magntico
19
20
cargas positivas
diferena de potencial
ou tenso.
cargas negativas
corrente contnua
corrente alternada
23
V=RxI
V
R
R = V/I
I = V/R
condutor
[caminho]
27
R
V
28
e agora,
computao...
29
plataforma Arduino
plataforma arduino
microcontrolador Atmel
programao usando Wiring (subconjunto de
processing, baseado em C/C++)
open-source: evoluo da plataforma atravs
de contribuies dos usurios
31
lilypad
mini
boarduino
paperduino
Duemilanove
mega
pro
32
33
54 entradas/sadas digitais
16 entradas analgicas
memria
RAM: 8K
Flash (programa): 128k 4k (bootloader)
35
entradas analgicas
16 pinos de entrada analgica com resoluo de
10 bits (0 1023)
36
sadas analgicas
12 pinos de sada analgica (PWM) com
resoluo de 8 bits (0 255)
37
portas seriais
4 portas seriais
os objetos Serial(conectado USB), Serial1,
Serial2 e Serial3 so utilizados para acessar essas
portas.
38
driver
windows: FTDI Serial USB
linux: no precisa instalar nada :-)
software
s descompactar e executar
39
40
exibir serial
rea de cdigo
parar execuo
novo
abrir
salvar
enviar programa
para placa
rea de status
41
42
43
44
45
atividade
prtica!
46
prtica
fazer o programa hello arduino, que pisca um
led
use o pino 13 de sada digital, a placa j possui
um led ligado a ele :-)
47
48
Perguntas
49
50
51
mais prtica!
52
eletrnica protoboard
antes disso:
Protoboard
53
eletrnica protoboard
jumpers
54
antes disso
mais um pouco
de eletrnica...
55
eletrnica resistores
oferecem resistncia passagem da corrente eltrica
resistncia:
fixo
varivel
tipos:
carvo [carbono]
filme
fio
eletrnica resistores
valores expressos em ohms
o corpo dos resistores possui um cdigo de cores para identificar o
valor
57
agora sim,
prtica!
58
prtica
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
59
prtica
circuito
60
prtica
esquemtico
prtica
protoboard
Figura retirada de
http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading
62
Perguntas
63
sensores
esquemtico
65
66
sensores
arduino l tenses de
entrada (e no valores 0 e 1)
atividade
prtica!
68
sensores - prtica
fazer o circuito e o programa para acender o
led 13 de acordo com sinal de entrada do pino 2
69
sensores - prtica
esquemtico
sensores - prtica
protoboard
71
sensores - prtica
72
voltando
eletrnica...
73
sinal com
variao
contnua no
tempo
74
75
76
77
eletrnica - resistores
Como funciona um resistor varivel?
atividade
prtica!
79
80
81
82
83
Perguntas
84
protocolos de comunicao
86
87
88
atividade
prtica!
89
90
91
92
93
atividade
prtica!
94
95
perguntas?
96
interrupes
o arduino mega possui 6 pinos que podem ser
ligados a interrupes de entrada e sada (IO).
uma interrupo de IO uma funo que
executada quando existe uma mudana de
estado no pino correspondente, independente
do ponto em que se encontra a execuo do
programa.
98
interrupes
a funo attachInterrupt(); permite
configurar uma funo para ser executada caso
haja uma mudana no pino de IO
correspondente:
Interrupo
Interrupo
Interrupo
Interrupo
Interrupo
Interrupo
0
1
2
3
4
5
99
pino
pino
pino
pino
pino
pino
2
3
21
20
19
18
interrupes
exemplo:
attachInterrupt(num, function, mode);
Mode: LOW, CHANGE, RISING, FALLING
atividade
prtica!
101
prtica
montar circuito de leitura de sinal digital
usando interrupes.
boto pressionado muda o estado do LED
102
perguntas?
103
bibliotecas do arduino
bibliotecas do arduino
possvel estender a
plataforma Arduino com
adio de componentes
de cdigo, para controlar
sensores e atuadores
especficos.
estes componentes so
chamados de bibliotecas
(libraries)
105
bibliotecas do arduino
as bibliotecas so
geralmente disponibilizadas
como um zip que deve ser
descompactado dentro da
pasta libraries do Arduino.
106
bibliotecas do arduino
aps reiniciar o Arduino, a
biblioteca estar disponvel
no menu Sketch->Import Library
a maioria das bibliotecas
para o Arduino pode ser
encontrada em
http://arduino.cc/en/Refere
nce/Libraries
107
servo library
biblioteca servo
servo motores so um tipo
especial de motor que possui
controle sobre a sua posio
eles no so feitos para girar
livremente, em vez disto, movimentam-se para
a posio escolhida dentro de um limite, que
geralmente 180 graus.
109
biblioteca servo
um servo motor possui 3 fios
dois para alimentao e
um terceiro para controlar sua
posio.
este controle feito atravs da modulao por
largura de pulso (PWM).
110
biblioteca servo
A conexo com os servos
feita da seguinte forma:
Fio preto ou marrom:
GND
Fio vermelho: 5V
Fio amarelo ou laranja:
pino de controle (sada
digital)
111
biblioteca servo
usando a biblioteca servo:
para usar esta biblioteca, necessrio import-la
para o nosso programa, atravs do menu:
Sketch->Import Library->Servo
biblioteca servo
usando a biblioteca servo:
motor1.attach(pino);
// associa a varivel ao
// pino em que o servo
// motor est ligado
113
atividade
prtica!
114
115
perguntas?
116
nunchuck library
biblioteca nunchuck
possvel utilizar o nunchuck do WII como dispositivo de
entrada.
o nunchuck um dispositivo que utiliza a interface IC
para comunicao. Esta interface possui 2 fios de
comunicao: SDA(dados) e SCL(clock).
o arduino possui uma biblioteca chamada Wire que
implementa o IC.
a biblioteca Nunchuck foi desenvolvida utilizando a
biblioteca Wire, por isso as duas precisam ser
importadas no sketch.
118
biblioteca nunchuck
o nunchuck possui um
acelermetro de 3 eixos, um
joystick analgico de 2 eixos e 2
botes.
cada um destes sensores pode
ser lido atravs da biblioteca
Nunchuck.
119
biblioteca nunchuck
conexes com o Arduino Mega:
Fio Vermelho:
Fio Preto:
Fio Amarelo(SDA):
Fio Azul(SCL):
3.3V
GND
Pino 20
Pino 21
biblioteca nunchuck
usando a biblioteca nunchuck:
nunchuck.begin();
// inicializa a biblioteca,
// deve ser chamada no
// setup();
nunchuck.update();
//
//
//
//
nunchuck.calibrateJoy(); //
//
//
//
121
define os valores
atuais do joystick
como os valores
centrais
biblioteca nunchuck
usando a biblioteca nunchuck:
x = nunchuck.readAccelX(); // l o valor do
// acelermetro 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();
122
biblioteca nunchuck
usando a biblioteca nunchuck:
z = nunchuck.readZ(); // l o valor atual do boto
// Z (0 liberado, 1
// pressionado)
Mesmo para readC();
z = nunchuck.zPressed(); // retorna se o boto Z
// foi pressionado
Mesmo para cPressed();
123
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
// (informao digital)
124
atividade
prtica!
125
126
atividade
prtica!
127
128
perguntas?
129
capsense library
Figura retirada de
http://www.arduino.cc/playground/Main/CapSense
132
133
134
atividade
prtica!
135
136
perguntas?
137
atuadores sonoros
atuadores sonoros
auto falantes
bobina em volta de um
im
corrente eltrica na
bobina produz campo
magntico
campo magntico
varivel faz a
membrana se deslocar,
produzindo som
139
atuadores sonoros
140
atuadores sonoros
1 segundo
baixa frequncia
perodo
alta frequncia
o tempo de cada
variao HIGH e LOW
chamada de perodo e
o inverso da frequncia
perodo
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);
}
}
142
atuadores sonoros
como tocar uma nota musical?
timeHigh = periodo / 2 = 1 / (2 * frequncia)
*
*
*
*
*
*
*
*
*
nota
c (d)
d (r)
e (mi)
f (f)
g (sol)
a (l)
b (si)
C (d)
frequncia
261 Hz
294 Hz
329 Hz
349 Hz
392 Hz
440 Hz
493 Hz
523 Hz
periodo
3830
3400
3038
2864
2550
2272
2028
1912
143
atuadores sonoros
como tocar uma nota musical?
notes.h
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
...
NOTE_B0
NOTE_C1
NOTE_CS1
NOTE_D1
NOTE_DS1
NOTE_E1
NOTE_F1
NOTE_FS1
NOTE_G1
NOTE_GS1
31
33
35
37
39
41
44
46
49
52
144
funo tone
Arduino j possui uma funo para tocar notas
tone(pin, frequency);
// emite uma determinada nota (representada pela
// frequncia) no pino ocrrespondente
noTone(pin);
// para de emitir a frequncia definida por tone()
// no pino correspondente
tone(pin, frequency, duration);
// emite uma determinada nota (representada pela
// frequncia) no pino ocrrespondente durante uma
// determinada durao
145
atividade
prtica!
146
perguntas?
148
IR Remote library
biblioteca IR Remote
esta biblioteca permite enviar e receber dados atravs
de atuadores e sensores infravermelhos.
a luz infravermelha no visvel ao olho humano,
entretanto est presente em vrios dispositivos
emissores de luz, como lmpadas incandescentes e o
prprio sol.
assim, a comunicao infravermelho sofre interferncia
destes fatores.
150
biblioteca IR Remote
para reduzir a interferncia de outras fontes de luz
infravermelha, os dispositivos utilizam a modulao de
sinal.
151
biblioteca IR Remote
um receptor sintonizado de infravermelho um
dispositivo capaz de detectar pulsos de infravermelho a
frequncias de 36kHz a 40kHz, sendo 38kHz a mais
comumente utilizada.
ao detectar esta frequncia
o receptor pe o nivel 0
em sua sada, caso a frequncia
no seja detectada, a sada tem
nvel lgico 1.
152
biblioteca IR Remote
o transmissor utilizado para comunicao infravermelho
um LED, parecido com um LED comum mas que emite
luz infravermelha.
no possvel verificar se
o LED infravermelho est
aceso a olho nu, entretanto
olh-lo atravs de uma cmera
(de celular, pode exemplo)
vai mostrar se ele est aceso ou
no.
153
biblioteca IR Remote
circuito
154
biblioteca IR Remote
circuito
biblioteca IR Remote
recepo de infravermelho
IRrecv irrecv(pin);
// cria um objeto para recepo de infravermelho
// (receiver), com o sensor conectado ao pin.
decode_results results;
// cria um objeto para armazenar o resultado
// da decodificao do sinal recebido
irrecv.enableIRIn(); // Inicia o receiver
156
biblioteca IR Remote
recepo 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 contm o valor do comando
// recebido
irrecv.resume();
// prepara o objeto para receber o prximo valor
157
biblioteca IR Remote
recepo de infravermelho exemplo de cdigo
int 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 prximo valor
}
}
158
biblioteca IR Remote
transmisso de infravermelho
IRsend irsend;
// cria um objeto para transmisso 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
prtica!
160
161
perguntas?
162
GLCD library
biblioteca GLCD
a biblioteca GLCD permite
controlar displays Grficos
LCD. Foi feita
inicialmente para o
display grfico com
controlador KS0108, mas
atualmente suporta outros
controladores.
164
biblioteca GLCD
o display grfico que
estamos utilizando
possui o controlador
KS0108B. Este display
possui 20 pinos.
a conexo deste display
com o arduino mega se
d de acordo com a
tabela ao lado.
165
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)
GLCD.DrawVLine(x, y, height, color);
// desenha uma linha vertical, comeando em x,y
// com altura height e com cor definida em color
GLCD.DrawHLine(x, y, width, color);
// desenha uma linha horizontal, comeando em x,y
// com altura width e com cor definida em color
GLCD.DrawLine(x1, y1, x2, y2, color);
// desenha uma linha comeando em x1,y1
// e terminando em x2,y2 com a cor desejada
169
atividade
prtica!
170
171
perguntas?
172
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 funo anterior
GLCD.InvertRect(x, y, width, height);
// inverte as cores dos pontos (pixels) de uma
// rea comeando em x,y e com rea width,height
173
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
174
atividade
prtica!
175
perguntas?
177
179
atividade
prtica!
180
181
perguntas?
182
184
185
atividade
prtica!
186
187
perguntas?
188
arduino - referencias
189
Obrigado!