Você está na página 1de 189

Arduino completo

Tiago Barros | tiago@tiagobarros.org

Apresentao

Tiago Barros - @tgfb


Mestre em Cincia da Computao, UFPE / 2007
B.Sc. Cincia da Computao, UFPE / 2003
Tec. Eletrnica, ETFPE / 1998
Engenheiro de Sistemas Snior do C.E.S.A.R
Especialista em tecnologia, Grupo de Inovao
Professor de ps-graduao e especializao em diversos cursos:
C.E.S.A.R(Recife), Cin/UFPE/Motorola(Recife), Universidade
Positivo (Curitiba), Instituto FaberLudens/FISAM/UnC (Curitiba).

Pr-requisitos

conhecimentos bsicos de programao

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

como vemos os computadores?

teclado
mouse
monitor
CPU
caixas de som

computao fsica

como os
computadores
nos veem?
10

computao fsica

como os computadores nos veem?

dedos
[teclado/mouse]
olho
[monitor]
duas orelhas
[caixas de som]

reflexo das entradas e sadas do computador


11

computao fsica

mudar a forma que os


computadores nos veem
mudar como eles
interagem conosco
Tom Igoe Physical Computing
12

Perguntas

14

mas antes da
computao...
15

conceitos bsicos de eletricidade

eletricidade
universo formado de tomos
partculas atmicas:

prtons: cargas positivas

eltrons: cargas negativas


eletricidade - interao entre partculas atmicas
17

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

cargas iguais se repelem

cargas opostas se atraem

campo magntico em
movimento
gera corrente eltrica

cargas em movimento
geram campo magntico
19

eletricidade condutores e isolantes

condutor permite o fluxo de eltrons

isolante evita a passagem de eltrons

20

eletricidade diferena de potencial (v)

cargas positivas

diferena de potencial
ou tenso.

cargas negativas

quanto maior a tenso, mais fora teem os eltrons


21

eletricidade corrente eltrica (i)

fluxo de eltrons em um condutor

quanto maior a corrente,


maior a quantidade de eltrons
22

eletricidade tipos de corrente eltrica

corrente contnua

corrente alternada

23

eletricidade tipos de corrente eltrica

mesma polaridade no tempo (sentido continuo)

inverso de polaridade no tempo


24

eletricidade resistncia eltrica (r)

propriedade do material condutor em reduzir


a passagem dos eltrons

eltrons se acumulam e batem


no condutor, dissipando sua energia
(gerando calor)
25

eletricidade lei de ohm

V=RxI
V
R

R = V/I
I = V/R

a diferena de potencial (V) entre dois pontos de um


condutor proporcional corrente eltrica (I) que o
percorre e sua resistncia (R)
26

eletricidade circuito eltrico


carga
[consumidor]
+
gerador
[fonte]

condutor
[caminho]

27

eletricidade circuito eltrico


carga
[consumidor]
condutor
[caminho]

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

plataforma arduino - hardware

lilypad

mini

boarduino

paperduino

Duemilanove

mega

pro
32

arduino mega hardware

33

arduino mega hardware (Atmega 1280)


portas

54 entradas/sadas digitais
16 entradas analgicas

memria

RAM: 8K
Flash (programa): 128k 4k (bootloader)

velocidade de processamento: 16MHz


34

entradas e sadas digitais


54 pinos de entradas e sadas digitais (0 54)

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

plataforma arduino - instalao

driver
windows: FTDI Serial USB
linux: no precisa instalar nada :-)
software
s descompactar e executar

39

plataforma arduino - instalao

Selecionando a placa e a porta serial

40

plataforma arduino ambiente


compilar
(verif. programa)

exibir serial
rea de cdigo

parar execuo
novo
abrir
salvar
enviar programa
para placa

rea de status

41

plataforma arduino estrutura do sketch

42

plataforma arduino linguagem


linguagem baseada em C (mas bem mais fcil)
comandos bsicos
pinMode() define um pino com entrada ou sada
digitalWrite() liga ou desliga uma sada digital
delay() espera um determinado tempo

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 nvel baixo (0V) e alto (5V) nos pinos
INPUT | OUTPUT define se um pino vai ser pino de entrada ou
de sada

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

plataforma arduino hello arduino

48

Perguntas

49

plataforma arduino linguagem


comandos bsicos
analogWrite() escreve um valor analgico no pino
analogWrite(num_pino, valor);
valor entre 0 e 255

50

eletrnica modulao PWM


a funo analogWrite() escreve
pulsos muito rpidos no pino
digital (s funciona nos pinos
marcados com PWM).
o valor a ser escrito representa
o tempo que o pulso fica em
nvel alto e varia de 0 a 255.
quanto mais tempo o pulto
permanecer em nvel alto,
maior a tenso mdia da
sada

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

transformam energia eltrica em energia trmica


[pode ser usado como atuador]
56

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

Figura retirada de http://arduino.cc/

60

prtica
esquemtico

Figura retirada de http://arduino.cc/


61

prtica
protoboard

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

Perguntas

63

sensores

sensores chave (switch/button)


interrompe a passagem da corrente eltrica
liga/desliga o circuito
sensor de toque

esquemtico

65

plataforma arduino linguagem


Comandos
digitalRead() le um pino de entrada
Exemplo:
int chave = 0;
chave = digitalRead(num_do_pino);

66

sensores

arduino l tenses de
entrada (e no valores 0 e 1)

5 volts == HIGH (1)


0 volts == LOW (0)
sem conexo em um
pino, a entrada flutua
entre 0 e 5 volts
(HIGH e LOW)

este resistor necessrio para


que o pino seja levado para 0
quando no estiver conectado
(chave aberta)
67

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

Figura retirada de http://arduino.cc/


70

sensores - prtica
protoboard

71

sensores - prtica

72

voltando
eletrnica...
73

eletrnica sinais analgicos e digitais

sinal com variao


discreta (valores
pr-definidos)

sinal com
variao
contnua no
tempo

74

eletrnica converso de sinais

valor lido em intervalos regulares de tempo e


transformado em um nmero digital

75

eletrnica converso de sinais

vrios valores, no s HIGH e LOW. quantiade de


valores a resoluo.

76

eletrnica converso de sinais

resoluo de 8 bits = 256 valores


resoluo de 16 bits = 65536 valores

77

eletrnica - resistores
Como funciona um resistor varivel?

no arduino, o valor da tenso transformado


em um valor digital entre 0 e 1023
78

atividade
prtica!
79

sensores analgicos prtica


ler o valor do resistor varivel e ligar um LED se
esse valor passar de um determinado limite.

80

sensores analgicos prtica


esquemtico

Figura retirada de http://arduino.cc/

81

sensores analgicos prtica


circuito

Figura retirada de http://arduino.cc/

82

entrada analgica prtica

83

Perguntas

84

protocolos de comunicao

comunicao serial RS232


chip ATMEGA 168 s tem interface serial, no
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

86

comunicao serial RS232


o arduino possui uma biblioteca que
implementa comunicao serial
Serial.begin();
Serial.print();
Serial.read();

87

comunicao serial RS232


Leds

TX: dados enviados


para o PC
RX: dados
recebidos do PC

88

atividade
prtica!
89

comunicao serial - prtica

Hello Arduino via serial

90

comunicao serial - prtica

91

eletrnica resistores LDR


resistor varivel sensvel luz

92

eletrnica resistores LDR


resistor varivel sensvel luz
circuito para arduino
porque o resistor de 1k?
- para limitar a corrente
se o LDR assumir valores
muito baixos

93

atividade
prtica!
94

comunicao serial - prtica

ler valores do LDR e enviar via serial

95

perguntas?

96

interrupes do arduino mega

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

int state = LOW;


void setup () {
attachInterrupt(0, changeState, RISING);
}
void changeState() {
state = !state;
}
100

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

aparecer a seguinte linha no seu programa indicando


que a biblioteca foi importada
#include <Servo.h>

depois, s criar uma varivel do tipo Servo:


Servo motor1;
112

biblioteca servo
usando a biblioteca servo:
motor1.attach(pino);

// associa a varivel 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

113

atividade
prtica!
114

biblioteca servo - prtica


Fazer um programa
que movimente o
servo de acordo com
o valor lido do
potencimetro.

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

Objeto para acessar os dados


deve ser criado
Nunchuck nunchuck;
120

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(); //
//
//
//
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)

Mesmo para rightJoy(); upJoy(); e downJoy();

124

atividade
prtica!
125

biblioteca nunchuck - prtica


Ler os valores do nunchuck e
envi-los pela serial para o PC
: x, y, z btnC, btnZ joyX, joyY

126

atividade
prtica!
127

biblioteca nunchuck - prtica


controlar servo motores
atravs do acelermetro e/ou
do joystick
utilizar o joystick, os servo
motores e o material de apoio
(papel, fita, etc) para criar
um rob

128

perguntas?

129

capsense library

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), atravs de
um resistor. O atraso entre
enviar e receber o sinal
depende dos valores de R*C,
onde C a capacitncia que
alterada de acordo com a
proximidade do corpo humano.
131

Figura retirada de
http://www.arduino.cc/playground/Main/CapSense

biblioteca capacitive sense


circuito

132

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 capacitncia mdia, de acordo com a
// quantidade de amostras.
// esta capacitncia possui um valor baixo se
// no houver toque e um valor alto ao toque.

133

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 no consiga ler o valor correto
set_CS_AutocaL_Millis(autoCal_millis);
// define o tempo de auto calibragem do sensor

134

atividade
prtica!
135

biblioteca capacitive sense - prtica


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 eltrica na
bobina produz campo
magntico
campo magntico
varivel faz a
membrana se deslocar,
produzindo som
139

atuadores sonoros

como programar o arduino para tocar uma nota


musical?
uma nota musical um som em uma determinada
frequncia
a frequncia de uma nota significa quantas vezes o
atuador sonoro vibra em 1 segundo

140

atuadores sonoros
1 segundo

para fazer o atuador


vibrar, escrevemos no
pino uma sequncia de
valores HIGH e LOW,
tantas vezes por segundo
quanto for a frequncia
da nota

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

tempo em nivel alto


1915
1700
1519
1432
1275
1136
1014
956

No necessrio escrever essas frequncias, podemos


incluir o arquivo notes.h

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

atuadores sonoros - prtica


Tocar uma melodia (d
r mi f, por exemplo)
usando a funo tone();
Usar alguns switches ou
sensores capacitivos para
tocar uma nota quando
pressionados, criando um
teclado.
147

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

*No Arduino Mega, a biblioteca IRRemote envia dados atravs do pino 9


Tambm necessrio setar o pinMode(9, OUTPUT);
155

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

biblioteca IR Remote - prtica


ler os valores recebidos
pelo controle remoto e
mostr-los na serial
comandar leds e
motores atravs do
controle remoto

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

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)
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

biblioteca GLCD - prtica


montar o circuito para
ligar o display LCD e
desenhar formas
bsicas

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

biblioteca GLCD - prtica


definir e implementar
um jogo usando o LCD e
os sensores e atuadores
aprendidos
aps a definio do
jogo, o mesmo dever
ser apresentado para a
turma
176

perguntas?

177

biblioteca GLCD bitmaps (figuras)


a biblioteca GLCD possui um utilitrio para importar
figuras no ambiente do arduino
este utilitrio 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 converso. Arrastar
um bitmap sobre esta janela ir converter o bitmap em
cdigo que pode ser carregado no Arduino. Este cdigo
gerado no arquivo nome_da_imagem.h
178

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

Funo para desenhar o bitmap


GLCD.DrawBitmap(bitmap, x, y);
// desenha o bitmap especificado na posio x,y

179

atividade
prtica!
180

biblioteca GLCD - prtica


incrementar o jogo com
imagens bitmap

181

perguntas?

182

biblioteca GLCD fontes


Existe um utilitrio grtis 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

Funo para selecionar a fonte


GLCD.SelectFont(nome_da_fonte);
// seleciona a fonte desejada para ser utilizada
// nas prximas operaes de escrita
183

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 comeando em
// x1,y1 e terminando em x2,y2

184

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 varivel ou uma string

185

atividade
prtica!
186

biblioteca GLCD - prtica


finalizar o jogo com os
conceitos aprendidos

187

perguntas?

188

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

189

Obrigado!

Tiago Barros | tiago@tiagobarros.org

Você também pode gostar