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).
3 Pr-requisitos
conhecimentos bsicos de programao 4 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) computao fsica 6 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 7 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 8 computao fsica como vemos os computadores? 9 computao fsica teclado
mouse
monitor
CPU
caixas de som como vemos os computadores? 10 computao fsica como os computadores nos veem? 11 computao fsica dedos [teclado/mouse]
olho [monitor]
duas orelhas [caixas de som] reflexo das entradas e sadas do computador como os computadores nos veem? 12 computao fsica mudar a forma que os computadores nos veem mudar como eles interagem conosco Tom Igoe Physical Computing 14 Perguntas 15 mas antes da computao... conceitos bsicos de eletricidade 17 eletricidade eletricidade - interao entre partculas atmicas universo formado de tomos
Atomos com mais eltrons que prtons esto carregados negativamente (on negativo)
Atomos com menos eltrons que prtons esto carregados positivamente (on positivo) buraco eltron extra 19 eletricidade cargas iguais se repelem cargas opostas se atraem
cargas em movimento geram campo magntico
campo magntico em movimento gera corrente eltrica N S 20 eletricidade condutores e isolantes isolante evita a passagem de eltrons condutor permite o fluxo de eltrons
21 eletricidade diferena de potencial (v) cargas negativas quanto maior a tenso, mais fora teem os eltrons diferena de potencial ou tenso. cargas positivas V 22 eletricidade corrente eltrica (i) quanto maior a corrente, maior a quantidade de eltrons fluxo de eltrons em um condutor
23 eletricidade tipos de corrente eltrica corrente contnua
corrente alternada
24 eletricidade tipos de corrente eltrica inverso de polaridade no tempo mesma polaridade no tempo (sentido continuo) 25 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) 26 eletricidade lei de ohm V = R x I a diferena de potencial (V) entre dois pontos de um condutor proporcional corrente eltrica (I) que o percorre e sua resistncia (R) V R I R = V/I I = V/R 27 eletricidade circuito eltrico +
V i R gerador [fonte] condutor [caminho] carga [consumidor] 28 eletricidade circuito eltrico V i R condutor [caminho] carga [consumidor] 29 e agora, computao... plataforma Arduino 31 plataforma arduino microcontrolador Atmel
programao usando Wiring (subconjunto de processing, baseado em C/C++)
open-source: evoluo da plataforma atravs de contribuies dos usurios
32 plataforma arduino - hardware Duemilanove mini lilypad boarduino paperduino mega pro 33 arduino mega hardware 34 arduino mega hardware (Atmega 1280) portas 54 entradas/sadas digitais 16 entradas analgicas
velocidade de processamento: 16MHz 35 entradas e sadas digitais 54 pinos de entradas e sadas digitais (0 54)
36 entradas analgicas 16 pinos de entrada analgica com resoluo de 10 bits (0 1023)
37 sadas analgicas 12 pinos de sada analgica (PWM) com resoluo de 8 bits (0 255)
38 portas seriais 4 portas seriais
os objetos Serial(conectado USB), Serial1, Serial2 e Serial3 so utilizados para acessar essas portas.
39 plataforma arduino - instalao
driver windows: FTDI Serial USB linux: no precisa instalar nada :-)
software s descompactar e executar
40 plataforma arduino - instalao
Selecionando a placa e a porta serial 41 plataforma arduino ambiente
rea de cdigo rea de status compilar (verif. programa) parar execuo novo abrir salvar enviar programa para placa exibir serial 42 plataforma arduino estrutura do sketch 43 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 44 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); 45 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 46 atividade prtica! 47 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 :-) 48 plataforma arduino hello arduino
49 Perguntas 50 plataforma arduino linguagem
comandos bsicos
analogWrite() escreve um valor analgico no pino
analogWrite(num_pino, valor); valor entre 0 e 255 51 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 52 mais prtica! 53 eletrnica protoboard antes disso: Protoboard
54 eletrnica protoboard
jumpers
55 antes disso mais um pouco de eletrnica... 56 eletrnica resistores oferecem resistncia passagem da corrente eltrica transformam energia eltrica em energia trmica [pode ser usado como atuador] tipos:
carvo [carbono] filme fio
resistncia:
fixo varivel
57 eletrnica resistores
valores expressos em ohms
o corpo dos resistores possui um cdigo de cores para identificar o valor 58 agora sim, prtica! 59 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
60 prtica
circuito Figura retirada de http://arduino.cc/ 61 prtica
esquemtico Figura retirada de http://arduino.cc/ 62 prtica
protoboard Figura retirada de http://www.multilogica-shop.com/Aprendendo/Exemplos/Fading 63 Perguntas sensores 65 sensores chave (switch/button) interrompe a passagem da corrente eltrica liga/desliga o circuito sensor de toque
esquemtico 66 plataforma arduino linguagem
Comandos digitalRead() le um pino de entrada
Exemplo: int chave = 0; chave = digitalRead(num_do_pino);
67 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) 68 atividade prtica! 69 sensores - prtica
fazer o circuito e o programa para acender o led 13 de acordo com sinal de entrada do pino 2 70 sensores - prtica
esquemtico Figura retirada de http://arduino.cc/ 71 sensores - prtica protoboard 72 sensores - prtica
73 voltando eletrnica... 74 eletrnica sinais analgicos e digitais
sinal com variao contnua no tempo
sinal com variao discreta (valores pr-definidos) 75 eletrnica converso de sinais
valor lido em intervalos regulares de tempo e transformado em um nmero digital 76 eletrnica converso de sinais
vrios valores, no s HIGH e LOW. quantiade de valores a resoluo. 77 eletrnica converso de sinais
resoluo de 8 bits = 256 valores resoluo de 16 bits = 65536 valores 78 eletrnica - resistores
Como funciona um resistor varivel?
no arduino, o valor da tenso transformado em um valor digital entre 0 e 1023 79 atividade prtica! 80 sensores analgicos prtica
ler o valor do resistor varivel e ligar um LED se esse valor passar de um determinado limite. 81 sensores analgicos prtica
esquemtico Figura retirada de http://arduino.cc/ 82 sensores analgicos prtica
circuito Figura retirada de http://arduino.cc/ 83 entrada analgica prtica
84 Perguntas protocolos de comunicao 86 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 87 comunicao serial RS232
o arduino possui uma biblioteca que implementa comunicao serial
Serial.begin();
Serial.print();
Serial.read(); 88 comunicao serial RS232
Leds TX: dados enviados para o PC RX: dados recebidos do PC 89 atividade prtica! 90 comunicao serial - prtica
porque o resistor de 1k? - para limitar a corrente se o LDR assumir valores muito baixos 94 atividade prtica! 95 comunicao serial - prtica
ler valores do LDR e enviar via serial
96 perguntas? interrupes do arduino mega 98 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. 99 interrupes
a funo attachInterrupt(); permite configurar uma funo para ser executada caso haja uma mudana no pino de IO correspondente:
int state = LOW; void setup () { attachInterrupt(0, changeState, RISING); }
void changeState() { state = !state; }
101 atividade prtica! 102 prtica montar circuito de leitura de sinal digital usando interrupes. boto pressionado muda o estado do LED 103 perguntas? bibliotecas do arduino 105 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)
106 bibliotecas do arduino as bibliotecas so geralmente disponibilizadas como um zip que deve ser descompactado dentro da pasta libraries do Arduino.
107 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
servo library 109 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.
110 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).
111 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)
112 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;
113 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 114 atividade prtica! 115 biblioteca servo - prtica Fazer um programa que movimente o servo de acordo com o valor lido do potencimetro.
116 perguntas? nunchuck library 118 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. 119 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.
120 biblioteca nunchuck conexes com o Arduino Mega:
Nunchuck nunchuck; 121 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 122 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(); 123 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(); 124 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(); 125 atividade prtica! 126 biblioteca nunchuck - prtica Ler os valores do nunchuck e envi-los pela serial para o PC
: x, y, z btnC, btnZ joyX, joyY 127 atividade prtica! 128 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 129 perguntas? capsense library 131 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. Figura retirada de http://www.arduino.cc/playground/Main/CapSense 132 biblioteca capacitive sense circuito 133 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. 134 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 135 atividade prtica! 136 biblioteca capacitive sense - prtica acender leds ou movimentar motores de acordo com o sensor capacitivo 137 perguntas? atuadores sonoros 139 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 140 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 141 atuadores sonoros 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 baixa frequncia alta frequncia perodo perodo 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 142 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); } } 143 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 144 atuadores sonoros como tocar uma nota musical?
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 146 atividade prtica! 147 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. 148 perguntas? IR Remote library 150 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. 151 biblioteca IR Remote para reduzir a interferncia de outras fontes de luz infravermelha, os dispositivos utilizam a modulao de sinal. 152 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. 153 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. 154 biblioteca IR Remote circuito 155 biblioteca IR Remote circuito *No Arduino Mega, a biblioteca IRRemote envia dados atravs do pino 9 Tambm necessrio setar o pinMode(9, OUTPUT); 156 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 157 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 158 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 } } 159 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 160 atividade prtica! 161 biblioteca IR Remote - prtica ler os valores recebidos pelo controle remoto e mostr-los na serial
comandar leds e motores atravs do controle remoto
162 perguntas? GLCD library 164 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. 165 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 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 - 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 167 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
168 biblioteca GLCD Sistema de coordenadas
169 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 170 atividade prtica! 171 biblioteca GLCD - prtica montar o circuito para ligar o display LCD e desenhar formas bsicas 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 172 perguntas? 173 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
174 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
175 atividade prtica! 176 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 177 perguntas? 178 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 179 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 180 atividade prtica! 181 biblioteca GLCD - prtica incrementar o jogo com imagens bitmap 182 perguntas? 183 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
184 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
185 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
186 atividade prtica! 187 biblioteca GLCD - prtica finalizar o jogo com os conceitos aprendidos 188 perguntas? 189 arduino - referencias