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
teclado mouse monitor CPU caixas de som

como vemos os computadores?

computao fsica

como os computadores nos veem?


10

computao fsica
dedos [teclado/mouse]

como os computadores nos veem?

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

cargas em movimento geram campo magntico


19

campo magntico em movimento gera corrente eltrica

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 I
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]

i 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

boarduino

mini

Duemilanove

paperduino

pro
32

mega

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
41

rea de status

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 pino pino pino pino pino pino 2 3 21 20 19 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: 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();
// // // // l novos valores dos sensores do nunchuck, deve ser chamada continuamente dentro do loop(); define os valores atuais do joystick como os valores centrais

nunchuck.update();

nunchuck.calibrateJoy(); // // // //
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 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 o tempo de cada variao HIGH e LOW chamada de perodo e o inverso da frequncia
141

baixa frequncia

perodo

alta frequncia

perodo

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.
Pino LCD Arduino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 GND 5V --36 35 37 22 23 24 25 26 27 28 29 33 34 ----5V ---

Pot
1 --2 ----------------------------3 --220R

165

biblioteca GLCD - circuito


Pino LCD Arduino
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 GND 5V --36 35 37 22 23 24 25 26 27 28 29 33 34 ----5V ---

Pot
1 --2 ----------------------------3 --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


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

Pot
1 --2 ----------------------------3 --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