Você está na página 1de 8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

Bem Vindo Segurana em Primeiro Lugar Equipe Robtica Arduino Papis de Parede Robtica Open Core ( ROC ) Olimpada Brasileira de Robtica ( OBR ) Robtica Educacional ( REd ) Kits e Experincia dos Leitores ( KEL )

Arduino Funes Predefinidas


Written By: Kemper - Sep 1511
0 4

Select Language

Mdulo: Arduino Aula: Arduino Bsico I Ttulo: Funes Predefinidas Esta aula tem o objetivo de introduzir e explicar o conceito de funes. Introduo: Nesta aula, vamos ter o nosso primeiro exemplo prtico de funo e acender o LED contido da prpria placa Arduino, sem a necedidade de eletrnica externa. Funes: A funo tem a finalidade de organizar o cdigo, permitindo que o mesmo seja dividido em blocos distintos
www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/ 1/8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

com finalidades e necessidades distintas, alm de permitir o reaproveitamento de cdigo, uma vez que funes para necessidades especficas podem ser divididas em arquivos especficos facilitando o reaproveitamento em vrios projetos. Imagine um pequeno rob se comunicando com um rastreador GPS. O rastreado GPS emite dados com a localizao do equipamento uma vez por segundo e estes dados necessitam ser tratados para serem usados. Com o uso de funes fica fcil criar um arquivo especfico com todas as funes necessrias para o tratamento da informao de modo a se poder usar o mesmo arquivo em vrios projetos de robs. O esboo da funo sempre o seguinte:
t i p o _ r e t o r n a d on o m e _ d a _ f u n o(l i s t a _ d e _ p a r m e t r o s) { C d i g o ... C d i g o }

Como exemplo prtico do uso de funes, o programa abaixo usa as funes predefinidas do Wiring para piscar o LED presente na prpria placa Arduino.
b y t ec o n s tp i n o D o L e d = 1 3 ;

v o i ds e t u p( ) { p i n M o d e(p i n o D o L e d ,O U T P U T) ; } v o i dl o o p( ) { d i g i t a l W r i t e(p i n o D o L e d ,H I G H) ; d e l a y(5 0 0) ; d i g i t a l W r i t e(p i n o D o L e d ,L O W) ; d e l a y(5 0 0) ; }

Explicao Passo a Passo: Na primeira linha do cdigo, trazemos como novidade o uso de constantes atravs da palavra reservada const. Como voc deve est lembrado, a varivel um espao reservado na memria de dados para arquivar dados temporrios e podem ser alterados a qualquer momento pelo programa em execuo. Porm, no nosso caso, a primeira linha de cdigo informa ao compilador para reconhecer o pino do LED como sendo o pino digital 13, e este valor no vai mudar durante a execuo do programa, por isto, o uso de constantes se encaixa de uma forma melhor, reservando um byte na memria de cdigo, e no na memria de dados, para arquivar um valor que nunca ir mudar. Dica Importante: A memria de dados tem muito pouco espao, por isto, sempre que possvel, prefira reservar espao na memria de cdigo atravs da palavra reservada const e sempre use o tipo que ocupar o menor espao possvel para arquivar a informao de forma correta.
www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/ 2/8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

Em seguida, temos a funo reservada setup (), uma funo que no faz parte da linguagem C/C++, mas, usada pelo framework wiring para inicializar tudo o que for necessrio antes da execuo do programa. Na prtica, ela equivale a funo main () do C/C++ e ser a primeira funo executada pelo cdigo do usurio, no importando se a mesma foi definida no incio, meio ou final do cdigo. Ela sempre ser a primeira a ser executada e mesmo que no seja necessria, deve ser definida. No nosso caso, ela foi usada para inicializar a pino do LED como sendo um pino digital de sada atravs da funo reservada pinMode (). Mas, no se preocupe, falaremos das funes digitais mais abaixo. A outra novidade trazida pela funo pinMode () o uso da constante predefinida OUTPUT, uma constante do wiring usada para inicializar um pino digital como sada. Aps a execuo da funo setup (), o framework wiring determina que a prxima funo a ser executada a funo reservada loop (), e como o nome diz, ela um lao infinito, ou seja, aps a execuo da ltima linha, o cdigo voltar a executar a primeira linha de cdigo da funo loop () e permanecer assim enquanto o circuito estiver ligado. Pinos Digitais de Entrada / Sada e Suas Funes: O nosso cdigo traz como novidade as funes digitais. So elas, pinMode (), digitalWrite () e digitalRead (). pinMode (): Esta uma funo predefinida do wiring e tem a finalidade de configurar os pinos do C para poderem exercer a funo de entrada ou sada, mas, devido ao circuito interno do C, um pino no pode exercer as duas funes ao mesmo tempo. Sintaxe: pinMode ( pino, INPUT / OUTPUT ); Dica importante: Embora a maioria dos exemplos do Arduino usem uma varivel tipo int como indicador do nmero do pino, esta prtica ocupa dois bytes da memria de dados sem necessidade. Por isto, usar constantes do tipo byte permitem usar pinos com valores entre 0 e 255, ocupando apenas um byte da memria de cdigo, que por sua vez, muito maior do que a memria de dados. Exemplo errado:
i n tp i n o D o L e d = 1 3 ;

v o i ds e t u p( ) { p i n M o d e(p i n o D o L e d ,O U T P U T) ; }

O exemplo acima ocupa dois bytes dentro da memria de cdigo para arquivar o nmero 13 e leva mais tempo para ser executado do que o exemplo abaixo, que por sua vez, no ocupa espao em memria de dados e leva menos tempo para ser executado, uma vez que necessita tratar apenas um byte, em vez de dois, sempre que pinoDoLed for usado no cdigo. Exemplo correto:
www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/ 3/8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

c o n s tb y t ep i n o D o L e d

= 1 3 ;

v o i ds e t u p( ) { p i n M o d e(p i n o D o L e d ,O U T P U T) ; }

digitalWrite (): Esta uma funo de escrita com duas modalidades, de acordo com o valor passado a funo pinMode (). O primeiro caso quando o valor passado a pinMode () for OUTPUT. Neste caso, digitalWrite () vai ligar ou desligar o pino, se o parmetro passado for HIGH ou LOW respectivamente. A dica prestar ateno na tenso de alimentao da placa Arduino, pois, se a sua placa for de 5V, o pino de sada vai apresentar 5V quando for passado HIGH e 0V quando for passado LOW. Porm, se a sua placa for de 3.3V, o pino vai apresentar 3.3V e 0V na sada. O segundo caso quando o valor passado a pinMode () for INPUT. Neste caso, a funo digitalWrite () vai ativar o resistor de pullup quando o valor passado for HIGH e desativar o resistor de pullup quando o valor passado for LOW. Na prtica, existe uma caracterstica das entradas digitais chamada de impedncia, ou resistncia equivalente da entrada em relao ao seu terra. Quando um pino digital usado para entrada, ele assume o estado de alta impedncia, equivalente a um resistor de 100M fazendo que este pino no drene muita corrente dos circuitos ligados a entrada. Isto faz o pino de entrada no ter um valor de tenso definido se o pino no estiver ligado a nenhum circuito externo. Porm, quando ligamos o resistor de pullup, o C liga ao pino de entrada um resistor interno no valor de 20k, forando a entrada a nvel lgico alto at que um circuito externo force o pino de entrada ao nvel lgico baixo. A dica prtica usar o resistor de pullup quando o pino estiver ligado a um boto ou chave mecnica, e desligar o resistor de pullup quando opino estiver ligado a um circuito digital qualquer. Sintaxe: digitalWrite ( pino, HIGH / LOW ); digitalRead (): Esta funo serve para ler o estado de um pino digital usado como entrada e retorna o valor desse pino como sendo HIGH ou LOW. Na prtica, o framework wiring permite um pouco mais de flexibilidade do que os programadores C/C++ esto acostumados e voc pode definir o tipo que achar conveniente, e embora os exemplos do site Arduino adorem usar o tipo int e ocupar dois bytes sem necessidade, eu recomendo que seja usado o tipo byte ou boolean para se economizar memria de cdigo. Sintaxe: HIGH / LOW = digitalRead ( pino ); Exemplo:
www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/ 4/8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

c o n s tb y t ee n t r a d a=7 ; b o o l e a nv a l o r L i d o ; v o i ds e t u p( ) { p i n M o d e(e n t r a d a ,I N P U T) ; } v o i dl o o p( ) { v a l o r L i d o=d i g i t a l R e a d(e n t r a d a) ; }

Dica de desempenho: O Arduino tem uma arquitetura de 8 bits, o que faz o C necessitar trabalhar mais na hora de tratar uma varivel tipo int, word, float, ou qualquer tipo que ocupe mais de um byte, por isto, executar um comando qualquer com um dado tipo byte mais rpido do que executar o mesmo comando com dado tipo int, por exemplo. Posted in Arduino, Equipe Robtica, Microcontrolador, Robtica Open Core | No Comments You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

Leave a Reply
You must be logged in to post a comment.
Search...

Leia-me
Vivemos em uma sociedade mais preocupada em pagar pela salvao de suas almas em igrejas do que apoiar a educao de seus filhos em uma escola de qualidade. Por isto, manter um trabalho social encarregado de levar aulas de qualidade e gratuitas a crianas carentes um trabalho caro e rduo que necessita de sua ajuda. No momento, o trabalho encontra-se ameaado por falta de recursos financeiros e no conta com ajuda de instituies ou patrocinadores. O nosso trabalho: Mantemos na escola estadual Apolnio Sales, no bairro do Ibura em Recife-PE aulas de Matemtica com o Professor Fernando Martins das 9h as 11h, Arduino com C++ das 12h as 15:30h e Robtica com Lego com o Professos Lelino Pontes das 13h as 16h. Como a escola atende a crianas de uma comunidade carente e as aulas acontecem apenas aos sbados, os alunos ganharam kits Arduino, sensores e todo o material necessrio, ao nosso alcance, para poderem estudar, o que inclui os textos contidos nesse blog, e nosso suporte durante a semana.
www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/ 5/8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

Este vdeo, tambm d uma boa idia do que fazemos. Nele podemos ver o Lelino Pontes ( 4:25 da time line ) falando do nosso trabalho.

Por isto, a cada R$30,00 doados, voc ganhar uma caneca do nosso site e ajudar a manter este site e um projeto social que leva Matemtica, Eletrnica, Arduino e Robtica a adolescentes carentes do bairro do Ibura. Obrigado, Kemper helmut.kemper@gmail.com

Agradecimento ao Grupo esprita Critas de Piedade, na pessoa do Sr. Jorge Orengo e Esposa, pelo apoio ao projeto e pela contribuio financeira ( R$80,00 ) ajudando com o nosso lanche.

Cursos on-line
Lista de cursos e sites teis aos leitores, que de vez em quando eu uso como referncia nos meus projetos. Vdeo aulas de C++ com Qt, C++, C# e HTML - Bryan Esta uma pgina do Youtube com aulas muito organizadas e que valem a pena pata todos os iniciantes e intermedirios em Qt. Desenvolvimento iOS - Instituto Politcnico de Leiria Curso sobre desenvolvimento de aplicaes para iOS 4 (iPhone, iPad, iPod Touch) criado especificamente para o iTunes U, tendo mais de 8 horas de contedos em vdeo. Comeando com uma introduo linguagem Objective-C, passando pela criao de interfaces grficas, e abordando um conjunto de funcionalidades especficas dos dispositivos, sem esquecer a submisso App Store. Programming Abstractions - Julie Zelenski This course is the natural successor to Programming Methodology and covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java. If you've taken the Computer Science AP exam and done well (scored 4 or 5) or earned a good grade in a college course, Programming Abstractions may be an appropriate course for you to start [more]

Grupo de e-mail
www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/ 6/8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

Para facilitar a comunicao entre os leitores do livro, foi criado o grupo "Muito alm do Arduino", um grupo aberto a todos os que queiram participar. Para mais informaes, visite a pgina do grupo no Google e participe.

Ajude o site a crescer


Para que o trabalho do site possa crescer, necessitamos de sua ajuda. Por favor, coloque um link nosso no seu site e sempre que gostar de algo compartilhe um link no seu facebook ou twitter, eles nos ajudam a crescer junto ao Google Search e isto muito importante para que possamos arrumar patrocinadores.

Divulgue seu material


Caso voc queira divulgar seu material relacionado eletrnica, basta enviar uma amostra, e se o material for bom, eu escrevo um artigo sobre ele no site.

Anuncie vagas de emprego e cursos


Caso voc tenha vagas de emprego para o pessoal de informtica ou informaes de cursos, basta entrar em contato e divulgamos no mesmo dia. O contato pode ser via meu e-mail pessoal, helmut.kemper@gmail.com, ou comentrio no site

Segurana em Primeiro Lugar


Caro leitor, eletricidade coisa sria e a leitura do texto de segurana obrigatria antes de se usar o contedo contido neste Blog. Compreenda ainda que voc assume todo e qualquer risco de choque eltrico ou de queima de materiais eltricos, eletrnicos ou discretos.

Moderao
Todos os comentrios so moderados e no aceito spam, principalmente de pseudo agncias web que necessitam se aproveitar do trabalho alheio para poder aparecer.

Pginas
Bem Vindo Segurana em Primeiro Lugar Equipe Robtica Arduino Papis de Parede Robtica Open Core ( ROC )
www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/ 7/8

23/12/12

Arduino Funes Predefinidas Kemper.com.br

Olimpada Brasileira de Robtica ( OBR ) Robtica Educacional ( REd ) Kits e Experincia dos Leitores ( KEL ) 2012 Kemper.com.br theme by adazing web design

www.kemper.com.br/wordpress/2011/09/15/arduino-funcoes-e-organizacao-do-codigo/

8/8