Professional Documents
Culture Documents
1 Dezembro 2010
(UTFPR)
1 Dezembro 2010
1 / 23
Introduo
Mas anal, o que Arduino ?
Arduino um nome fantasia que representa uma famlia de placas eletrnicas. Nestas placas temos um microcontrolador, botes, Leds, algum tipo de conexo para ligar no computador.
(UTFPR)
1 Dezembro 2010
2 / 23
Introduo
Microcontrolador
Microcontrolador semelhante a um processador tal como nos computadores desktop/notebooks, mas existem diferenas: muito mais simples e mais barato;
8 bits; 2 KiB de memria RAM; 32 KiB de memria de programa; Custo aproximadamente de 4 dlares.
Possui internamente timers/contadores/protocolos de transmisso de dados, conversores AD, memria RAM/FLASH/EEPROM, etc.
(UTFPR)
1 Dezembro 2010
3 / 23
Introduo
Figura: LilyPad
Figura: Freeduino
1 Dezembro 2010 4 / 23
Introduo
(UTFPR)
1 Dezembro 2010
5 / 23
Introduo
(UTFPR)
1 Dezembro 2010
6 / 23
Introduo
(UTFPR)
1 Dezembro 2010
7 / 23
(UTFPR)
1 Dezembro 2010
8 / 23
(UTFPR)
1 Dezembro 2010
9 / 23
Introduo
(UTFPR)
1 Dezembro 2010
10 / 23
Um programa escrito em process denominado sketch e deve ser escrito no ambiente de desenvolvimento Arduino (Figura 10). O ambiente Arduino escrito na linguagem Java e assim est disponvel para diversos sistemas. Quando um sketch compilado, o ambiente Arduino varre o cdigo fonte Process fazendo algumas substituies e transforma o cdigo Process em linguagem C/C++ que compilado efetivamente pelo compilador da GNU.
(UTFPR)
1 Dezembro 2010
11 / 23
(UTFPR)
1 Dezembro 2010
12 / 23
int ledPin =
13;
// a f u n c a o l o o p ( ) e x e c u t a c i c l i c a m e n t e void l o o p ( ) { d i g i t a l W r i t e ( l e d P i n , HIGH) ; // L i g a o LED c o l o c a n d o n i v e l a l t o no p i n o // do m i c r o c o n t r o l a d o r delay (1000) ; // Espera 1 segundo d i g i t a l W r i t e ( l e d P i n , LOW) ; // D e s l i g a o LED c o l o c a n d o n i v e l b a i x o no // p i n o do m i c r o c o n t r o l a d o r delay (1000) ; // Espera 1 segundo }
(UTFPR) 1 Dezembro 2010 13 / 23
Programao
(UTFPR)
1 Dezembro 2010
14 / 23
Programao
(UTFPR)
1 Dezembro 2010
15 / 23
Programao
Pinos de sada analgica
O Arduino possui apenas um conversor AD, ou seja, consegue converter um sinal de tenso em uma representao digital. Mesmo assim, o Arduino possui uma funo
int ledPin = 9 ; int analogPin = 3 ; int val = 0 ; // LED c o n n e c t e d t o d i g i t a l p i n 9 // p o t e n t i o m e t e r c o n n e c t e d t o a n a l o g p i n 3 // v a r i a b l e t o s t o r e t h e r e a d v a l u e
// s e t s t h e p i n as o u t p u t
void l o o p ( ) { v a l = analogRead ( a n a l o g P i n ) ; // r e a d t h e i n p u t p i n analogWrite ( ledPin , val / 4) ; // analogRead v a l u e s go from 0 t o 1023 , a n a l o g W r i t e v a l u e s from 0 t o 255 }
(UTFPR) 1 Dezembro 2010 16 / 23
Programao
Transmisso de dados seriais
O Arduino possui uma UART que pode transmitir dados seriais. No software deve-se congurar a taxa de transmisso e enviar bytes ou cadeias de caracteres e ler bytes pela porta serial.
void s e t u p ( ) { S e r i a l . begin (9600) ; S e r i a l . p r i n t l n ( " Ol mundo " ) ; S e r i a l . write (128) ; } void l o o p ( ) { i f ( S e r i a l . a v a i l a b l e ( ) > 0) { // L um byte que tenha sido transmitido // do PC incomingByte = S e r i a l . r e a d ( ) ; }
(UTFPR)
1 Dezembro 2010
17 / 23
Programao
Memria EEPROM
O Arduino possui uma memria EEPROM de 512Bytes que pode ser lida/gravada pelo programador.
#include <EEPROM. h> i n t addr = 0 ; void s e t u p ( ) { } void l o o p ( ) { i n t v a l = analogRead ( 0 ) / 4 ; EEPROM. w r i t e ( addr , v a l ) ; addr = addr + 1 ; i f ( addr == 5 1 2 ) addr = 0 ; delay (100) ; }
(UTFPR)
1 Dezembro 2010
18 / 23
Programao
Funo Map
Converso de valores.
void s e t u p ( ) {} void l o o p ( ) { i n t v a l = analogRead ( 0 ) ; v a l = map( v a l , 0 , 1 0 2 3 , 0 , 2 5 5 ) ; analogWrite (9 , val ) ; }
(UTFPR)
1 Dezembro 2010
19 / 23
Programao
Interrupes
O Arduino pode gerar interrupes
#include <TimerOne . h> v o l a t i l e i n t v a l o r =0 , c o n t a d o r =0 ,n=0; unsigned char valor_a , valor_b ; long f r e q ; void s e t u p ( ) { interrupts () ; f r e q = 16 ; // f r e q u e n c i a em h e r t z Timer1 . i n i t i a l i z e ( 1 0 0 0 0 0 0 / f r e q ) ; Timer1 . a t t a c h I n t e r r u p t ( Estouro_de_Tempo ) ; Timer1 . s t a r t ( ) ; } void Estouro_de_Tempo ( ) { // Faz alguma c o i s a }
(UTFPR) 1 Dezembro 2010 20 / 23
Programao
Atraso de tempo
O Arduino possui algumas funes para causar um atraso de tempo, como delay() e delayMicroseconds()
void l o o p ( ) { d i g i t a l W r i t e ( l e d P i n , HIGH) ; delay (1000) ; d i g i t a l W r i t e ( l e d P i n , LOW) ; delay (1000) ;
// // // //
s e t s t h e LED on w a i t s f o r a s e c on d s e t s t h e LED o f f w a i t s f o r a s e c on d
// // // //
s e t s t h e p i n on p a u s e s f o r 50 m i c r o s e c o n d s s e t s the pin o f f p a u s e s f o r 50 m i c r o s e c o n d s
(UTFPR)
1 Dezembro 2010
21 / 23
Programao
Contando o tempo
O Arduino possui funes para medir a passagem do tempo desde que o programa comecou a executar. time = micros(); Retorna a quantidade de microsegundos que se passaram desde que o Arduino foi iniciado. Estoura aprox. aps 70min. time = millis(); Retorna a quantidade de milisegundos que se passaram desde que o Arduino foi iniciado. Estoura depois de aprox. 50 dias.
unsigned long time ; void s e t u p ( ) { S e r i a l . begin (9600) ; } void l o o p ( ) { S e r i a l . p r i n t ( " Time : " ) ; time = m i c r o s ( ) ; // p r i n t s time s i n c e program s t a r t e d S e r i a l . p r i n t l n ( time ) ; // w a i t a s e con d so as n o t t o send m a s s i v e amounts o f d a t a delay (1000) ; }
(UTFPR) 1 Dezembro 2010 22 / 23
Programao
No site http://arduino.cc pode-se encontrar bibliotecas para controlar diversos dispositivos como displays de LCD, acelermetros, sensores de temperatura.
(UTFPR)
1 Dezembro 2010
23 / 23