Você está na página 1de 190

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

2
Pr-requisitos

conhecimentos bsicos de programao

3
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

6
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

9
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
computao fsica

...atravs de elementos
fsicos de interao mais
adequados s interfaces
humanas

13
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

S N

cargas em movimento campo magntico em


geram campo magntico movimento
gera corrente eltrica
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 V
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 = V/I
R 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]
+
R
gerador V
[fonte]

condutor i
[caminho]

27
eletricidade circuito eltrico

carga
[consumidor]

i
condutor R
[caminho] 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 Duemilanove

paperduino 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
exibir serial
(verif. programa)

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 0 pino 2
Interrupo 1 pino 3
Interrupo 2 pino 21
Interrupo 3 pino 20
Interrupo 4 pino 19
Interrupo 5 pino 18
99
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/Reference/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:
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;

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


// atuais do joystick
// como os valores
// centrais

121
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
Figura retirada de
alterada de acordo com a http://www.arduino.cc/playground/Main/CapSense
proximidade do corpo humano.

131
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


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

o tempo de cada
variao HIGH e LOW
perodo
chamada de perodo e
o inverso da frequncia

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

No necessrio escrever essas frequncias, podemos


incluir o arquivo notes.h

143
atuadores sonoros

como tocar uma nota musical?

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

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

Pino LCD Arduino Pot


o display grfico que 1 GND 1
2 5V ---
estamos utilizando 3 --- 2

possui o controlador 4
5
36
35
---
---
KS0108B. Este display 6
7
37
22
---
---
possui 20 pinos. 8
9
23
24
---
---
10 25 ---
11 26 ---
a conexo deste display 12 27 ---

com o arduino mega se 13


14
28
29
---
---
d de acordo com a 15
16
33
34
---
---
tabela ao lado. 17
18
---
---
---
3
19 5V ---
20 --- 220R

165
biblioteca GLCD - circuito

Pino LCD Arduino Pot


1 GND 1
2 5V ---
3 --- 2
4 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 --- 3
19 5V ---
20 --- 220R

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

Pino LCD Arduino Pot


montar o circuito para 1
2
GND
5V
1
---
ligar o display LCD e 3
4
---
36
2
---
desenhar formas 5
6
35
37
---
---
bsicas 7
8
22
23
---
---
9 24 ---
10 25 ---
11 26 ---
12 27 ---
13 28 ---
14 29 ---
15 33 ---
16 34 ---
17 --- ---
18 --- 3
19 5V ---
20 --- 220R

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