• Nenhum resultado encontrado

Curso introdutório de microcontroladores - Plataforma Arduino

N/A
N/A
Protected

Academic year: 2021

Share "Curso introdutório de microcontroladores - Plataforma Arduino"

Copied!
37
0
0

Texto

(1)

Curso introdutório de microcontroladores

-Plataforma Arduino

Prof. Fábio Rodrigues de la Rocha

(2)

Introdução

Mas afinal, o que é Arduino ?

Arduino é um nome “fantasia” que representa uma família de placas

eletrônicas. Nestas placas temos um microcontrolador, botões, Leds, algum tipo de conexão para ligar no computador.

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 2 / 37

(3)

Introdução

Microcontrolador

Microcontrolador é semelhante a um processador tal como nos computadores desktop/notebooks, mas existem diferenças:

É muito mais simples e mais barato; 8 bits;

2 KiB de memória RAM; 32 KiB de memória de programa; Custo aproximadamente de 4 dólares.

Possui internamente timers/contadores/protocolos de transmissão de dados, conversores AD, memória RAM/FLASH/EEPROM, etc.

(4)

Introdução: Kits

Figura: Arduino 2009 Figura:Arduino Mega Figura: Arduino Pro

Figura: Arduino Pro

Mini Figura: LilyPad Figura:Freeduino

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 4 / 37

(5)

Introdução: Kits

(6)

Introdução Kits x microcontroladores

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 6 / 37

(7)

Introdução: Características dos

(8)

Introdução: Pinos

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 8 / 37

(9)

Introdução

Mas por que o Arduino é popular ?

Kits de microcontroladores existem já a décadas, mas o Arduino possui algumas características que o diferencial dos demais.

Baixo custo;

Possui ambiente de desenvolvimento Assembly/C disponibilizado como SL;

Possui hardware livre*;

Não necessita de hardware especial para programação*;

Algumas versões, usa componentes DIP, que facilita a utilização em desenvolvimento de protótipos;

Possui site com manuais, bibliotecas e exemplos de códigos; Pode operar sem a presença de um computador;

(10)

Hardware:Como um microcontrolador é programado ?

AVR Compiler 0011001110000110010010 1110010101010101010101 1110000000000011010101 0101010101010101010101 0101010101010101010110 0101010101010101010101 0101000011110000111000 0101010101010101010101 0101101000111100001111 (UTFPR)

FLISOL - UTFPR-PR - Abril/2011 10 / 37

(11)
(12)

Hardware:Como um microcontrolador é programado ?

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 12 / 37

(13)
(14)

Hardware: Bootloader

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 14 / 37

(15)
(16)

Hardware: Shield para o Arduino

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 16 / 37

(17)

Software

O arduino possui um ambiente de desenvolvimento disponível para download em www.arduino.cc;

É SL e multiplataforma;

É um editor de texto, compilador e gravador do microcontrolador, tudo numa única ferramenta.

(18)

Software

Como programar no Arduino ?

Na maioria dos casos os programadores que desenvolvem software para o Arduino não utilizam as linguagens C ou C++, mas a linguagem denominada Wiring que pode ser considerada a linguagem do Arduino. A linguagem Wiring é similar as linguagens C e C++, contudo possui algumas diferenças.

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 18 / 37

(19)

Software

Um programa escrito na linguagem do arduino é denominado sketch e deve ser escrito no ambiente de desenvolvimento Arduino (Figura 10). O ambiente Arduino é escrito na linguagem Java e assim está disponível para diversos sistemas. Quando um sketch é compilado, o ambiente Arduino varre o código fonte Wiring fazendo algumas substituições e transforma o código Wiring em linguagem C/C++ que é compilado efetivamente pelo compilador da GNU.

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 19 / 37

(20)

Software

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 20 / 37

(21)
(22)

 1 i n t l e d P i n = 13; // LED e s t a c o n e c t a d o ao p i n o 13 do a r d u i n o 2 // Na p l a c a e l e t r o n i c a , deve - se l i g a r um LED e n t r e o 3 // p i n o 13 e o GND 4 5 6 // S e t u p () eh e x e c u t a d a uma vez a p e n a s 7 v o i d s e t u p () { 8 // I n i c i a l i z a o p i n o d i g i t a l c o m o s e n d o p i n o de s a i d a 9 p i n M o d e ( ledPin , O U T P U T ) ; 10 } 11 12 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 14 v o i d l o o p () 15 { 16 d i g i t a l W r i t e ( ledPin , H I G H ) ; // 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 17 // do m i c r o c o n t r o l a d o r 18 d e l a y ( 1 0 0 0 ) ; // E s p e r a 1 s e g u n d o

19 d i g i t a l W r i t e ( ledPin , 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 20 // p i n o do m i c r o c o n t r o l a d o r 21 d e l a y ( 1 0 0 0 ) ; // E s p e r a 1 s e g u n d o 22 }   (UTFPR)

FLISOL - UTFPR-PR - Abril/2011 22 / 37

(23)
(24)

Software

Pinos de Entrada/Saída Digital

Antes de utilizar um pino como entrada/saída devemos configurá-lo ou como entrada ou como saída. A configuração é feita utilizando-se a função

pinMode(numero_pino,modo)

pinMode(3,OUTPUT); ou pinMode(3,INPUT);

e depois podemos utilizar a função x=digitalRead(numero_pino) e digitalWrite(numero_pino, LOW);

(UTFPR)

FLISOL - UTFPR-PR - Abril/2011 24 / 37

(25)
(26)

 1 c o n s t i n t b u t t o n P i n = 2; // b o t a o 2 c o n s t i n t l e d P i n = 13; // LED 3 4 5 i n t b u t t o n S t a t e = 0; // E s t a d o do b o t a o 6 7 v o i d s e t u p () { 8 p i n M o d e ( ledPin , O U T P U T ) ; 9 p i n M o d e ( b u t t o n P i n , I N P U T ) ; 10 } 11 12 v o i d l o o p () { 13 // Le o e s t a d o do b o t a o 14 b u t t o n S t a t e = d i g i t a l R e a d ( b u t t o n P i n ) ; 15 16 // B o t a o p r e s s i o n a d o ? 17 if ( b u t t o n S t a t e == H I G H ) { 18 // L i g a o LED 19 d i g i t a l W r i t e ( ledPin , H I G H ) ; 20 } 21 e l s e { 22 // D e s l i g a o LED 23 d i g i t a l W r i t e ( ledPin , LOW ) ; 24 } 25 }   (UTFPR)

FLISOL - UTFPR-PR - Abril/2011 26 / 37

(27)

Software

Transmissão de dados seriais

O Arduino possui uma UART que pode transmitir dados seriais. No software deve-se configurar a taxa de transmissão e enviar bytes ou cadeias de

caracteres e ler bytes pela porta serial.  1 2 v o i d s e t u p () { 3 S e r i a l . b e g i n ( 9 6 0 0 ) ; 4 5 S e r i a l . p r i n t l n ("Olá mundo") ; 6 S e r i a l . w r i t e ( 1 2 8 ) ; 7 8 } 9 v o i d l o o p () { 10 11 if ( S e r i a l . a v a i l a b l e () > 0) {

12 // Lê um byte que tenha sido transmitido 13 // do PC

14 i n c o m i n g B y t e = S e r i a l . r e a d () ; 15 }

(28)

Software

Pinos de Entrada analógica

Alguns pinos do Arduino estão conectados a um conversor AD. O Arduino pode possuir diversos pinos que são pinos analógicos, mas existe apenas um conversor. Quando desejamos ler um pino analógico do Arduino, usa-se a função analogRead(pino);  1 i n t a n a l o g V a l u e ; 2 u n s i g n e d c h a r v al or _ a , v a l o r _ b ; 3 4 a n a l o g V a l u e = a n a l o g R e a d (0) ; 5 v a l o r _ a = ( b y t e ) a n a l o g V a l u e ; 6 v a l o r _ b = ( b y t e ) ( a n a l o g V a l u e > >8) ;   (UTFPR)

FLISOL - UTFPR-PR - Abril/2011 28 / 37

(29)
(30)

 1 i n t s e n s o r P i n = A0 ; // P i n o o n d e o p o t e n c i o m e t r o e s t a l i g a d o 2 i n t s e n s o r V a l u e = 0; // v a l o r l i d o do s e n s o r 3 4 v o i d s e t u p () { 5 // Os p i n o s a n a l o g i c o s ja sao c o n f i g u r a d o s 6 // c o m o p i n o s de e n t r a d a por p a d r a o 7 S e r i a l . b e g i n ( 9 6 0 0 ) ; 8 } 9 10 v o i d l o o p () { 11 // le o v a l o r do p o t e n c i o m e t r o 12 s e n s o r V a l u e = a n a l o g R e a d ( s e n s o r P i n ) ; 13 S e r i a l . p r i n t (" V a l o r do p o t e n c i o m e t r o : ") ; 14 S e r i a l . p r i n t l n ( s e n s o r V a l u e , DEC ) ; 15 }   (UTFPR)

FLISOL - UTFPR-PR - Abril/2011 30 / 37

(31)

Software

Pinos de saída analógica

O Arduino possui apenas um conversor AD, ou seja, consegue converter um sinal de tensão em uma representação digital. Mesmo assim, o Arduino possui uma função  1 i n t l e d P i n = 9; // LED c o n n e c t e d to d i g i t a l pin 9 2 i n t a n a l o g P i n = 3; // p o t e n t i o m e t e r c o n n e c t e d to a n a l o g pin 3 3 i n t val = 0; // v a r i a b l e to s t o r e the r e a d v a l u e 4 5 v o i d s e t u p () 6 {

7 p i n M o d e ( ledPin , O U T P U T ) ; // s e t s the pin as o u t p u t 8 }

9

10 v o i d l o o p () 11 {

12 val = a n a l o g R e a d ( a n a l o g P i n ) ; // r e a d the i n p u t pin

13 a n a l o g W r i t e ( ledPin , val / 4) ; // a n a l o g R e a d v a l u e s go f r o m 0 to 1023 , a n a l o g W r i t e v a l u e s f r o m 0 to 255

(32)

Software

Memória EEPROM

O Arduino possui uma memória EEPROM de 512Bytes que pode ser lida/gravada pelo programador.

 1 # i n c l u d e < E E P R O M . h > 2 i n t a d d r = 0; 3 4 v o i d s e t u p () 5 { 6 } 7 8 v o i d l o o p () 9 { 10 i n t val = a n a l o g R e a d (0) / 4; 11 E E P R O M . w r i t e ( addr , val ) ; 12 a d d r = a d d r + 1; 13 if ( a d d r == 5 1 2 ) a d d r = 0; 14 d e l a y ( 1 0 0 ) ; 15 }   (UTFPR)

FLISOL - UTFPR-PR - Abril/2011 32 / 37

(33)

Software

Função Map

Conversão de valores.  1 v o i d s e t u p () {} 2 3 v o i d l o o p () 4 { 5 i n t val = a n a l o g R e a d (0) ;

6 val = map ( val , 0 , 1023 , 0 , 2 5 5 ) ; 7 a n a l o g W r i t e (9 , val ) ;

8 }

(34)

Software

Interrupções

O Arduino pode gerar interrupções  1 # i n c l u d e < T i m e r O n e . h > 2 3 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; 4 u n s i g n e d c h a r v al or _ a , v a l o r _ b ; 5 l o n g f r e q ; 6 7 v o i d s e t u p () 8 { 9 i n t e r r u p t s () ; 10 f r e q = 16 ; // f r e q u e n c i a em h e r t z 11 T i m e r 1 . i n i t i a l i z e ( 1 0 0 0 0 0 0 / f r e q ) ; 12 T i m e r 1 . a t t a c h I n t e r r u p t ( E s t o u r o _ d e _ T e m p o ) ; 13 T i m e r 1 . s t a r t () ; 14 } 15 16 v o i d E s t o u r o _ d e _ T e m p o () 17 { 18 // Faz a l g u m a c o i s a 19 }

 (UTFPR) FLISOL - UTFPR-PR - Abril/2011 34

(35)

Software

Atraso de tempo

O Arduino possui algumas funções para causar um atraso de tempo, como delay() e delayMicroseconds()



1 v o i d l o o p () 2 {

3 d i g i t a l W r i t e ( ledPin , H I G H ) ; // s e t s the LED on 4 d e l a y ( 1 0 0 0 ) ; // w a i t s for a s e c o n d 5 d i g i t a l W r i t e ( ledPin , LOW ) ; // s e t s the LED off 6 d e l a y ( 1 0 0 0 ) ; // w a i t s for a s e c o n d 7

8

9 d i g i t a l W r i t e ( outPin , H I G H ) ; // s e t s the pin on

10 d e l a y M i c r o s e c o n d s ( 5 0 ) ; // p a u s e s for 50 m i c r o s e c o n d s 11 d i g i t a l W r i t e ( outPin , LOW ) ; // s e t s the pin off

12 d e l a y M i c r o s e c o n d s ( 5 0 ) ; // p a u s e s for 50 m i c r o s e c o n d s 13

14 }

(36)

Software

Contando o tempo

O Arduino possui funções 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. após 70min.

time = millis(); Retorna a quantidade de milisegundos que se passaram desde que o Arduino foi iniciado. Estoura depois de aprox. 50 dias.

 1 u n s i g n e d l o n g t i m e ; 2 3 v o i d s e t u p () { 4 S e r i a l . b e g i n ( 9 6 0 0 ) ; 5 } 6 v o i d l o o p () { 7 S e r i a l . p r i n t (" T i m e : ") ; 8 t i m e = m i c r o s () ; 9 // p r i n t s t i m e s i n c e p r o g r a m s t a r t e d 10 S e r i a l . p r i n t l n ( t i m e ) ; 11 // w a i t a s e c o n d so as not to s e n d m a s s i v e a m o u n t s of d a t a 12 d e l a y ( 1 0 0 0 ) ; 13 }  (UTFPR) 

FLISOL - UTFPR-PR - Abril/2011 36 / 37

(37)

Software

No site http://arduino.cc pode-se encontrar bibliotecas para controlar diversos dispositivos como displays de LCD, acelerômetros, sensores de temperatura.

Referências

Documentos relacionados

Como temática, será estudado a arquitetura brasileira, com intuito transmitir uma releitura da modernidade do Brasil por meio da contemporaneidade, com formas

ANEXO B: DESENHO DO POSTE MODELO MINI PARA 2 CONSUMIDORES Vista Frontal Face B Caixa de Passagem para Comdutores Engastamento 13 50 Vista Lateral Face A Terminal p/ Aterramento

•  Implementar e regularmente fortalecer padrões. •  Estabelecer e harmonizar procedimentos de testes para eficiência veicular. •  Impostos sobre veículos e combustível

Sendo da borda para o centro do plúton, descritos como porfíritico de matriz fina; equigranular de matriz média a fina e equigranular de matriz média estando os do

The objective of this study was to evaluate fruit yield of the strawberry crop using bare root transplants and plug transplants grown with different volumes of substrate...

Quantidade de veículos transmitindo simultaneamente Taxa de download necessária para servidor Link de internet sugerido para o servidor Tecnologia 3G Média de taxa

Os serviços prestados no presente Contrato ficam isentos do pagamento da Cota Mínima Mensal de Faturamento ou valor mínimo por postagem estabelecida para os mesmos, exceto

O financiamento é de até 100% do valor FOB (Free on Board), abreviação utilizada nos contratos de comércio marítimo internacional, indicando que o preço da