Sunteți pe pagina 1din 15

Chapter

12
Sistemas embarcados: explore sua criatividade
construindo Hardware e Software

Thiago Moratori Peixoto, Tiago Machado, Luciano Jerez Chaves,


Eduardo Pagani Julio

Abstract

This course aims to present embedded systems and its several applications on science
and technologies fields. It will present some basic concepts about embedded systems
and digital microelectronics. Moreover, this course will focus on the platforms Arduino
and Mbed, both used for digital systems prototyping. It will also describe the hardware
of these devices, as well as the basics principles for programming their middleware. The
concepts covered will be exercised in applications developed during practical workshops.

Resumo

Este minicurso tem como objetivo geral apresentar sistemas embarcados e suas infinitas
aplicaes no campo da cincia e tecnologia. Sero apresentados conceitos bsicos de
sistemas embarcados e microeletrnica digital. Alm disto, o minicurso dar nfase no
desenvolvimento para as plataformas de prototipagem Arduino e Mbed, utilizadas no pro-
jeto de sistemas digitais. O minicurso apresentar tanto o hardware destes dispositivos,
quanto os fundamentos para a programao do middleware. Os conceitos abordados
sero exercitados em aplicaes reais desenvolvidas durante oficinas prticas.

12.1. Introduo
Os sistemas digitais tornaram-se parte do nosso dia-a-dia devido ao modo intenso pelo
qual os circuitos digitais e as tcnicas digitais passaram a ser utilizados em quase todas
as reas: computadores, automao, robs, tecnologias e cincias mdicas, transportes,
telecomunicaes, entretenimento, e assim por diante [Tocci et al. 2011].
Para chegarmos onde estamos hoje, a construo de sistemas digitais evoluram
desde o uso das grandes vlvulas eletrnicas, passando pelos transistores at chegamos
nos atuais circuitos integrados (CI) digitais. Essa evoluo foi responsvel por permitir a
implementao de sistemas digitais cada vez mais complexos em um menor espao fsico,
utilizando tcnicas precisas e sofisticadas durante a fabricao dos CIs [Moore 1998]. O
baixo custo de fabricao at mesmo dos complexos circuitos integrados (como o ca-
sos dos microprocessadores que usamos em nossos computadores, notebooks e smart-
phones), permite que os projetistas incluam cada vez mais funcionalidades nestes sis-
temas, tornando-os adequados para as mais diversas aplicaes. Entretanto, esse baixo
custo de fabricao est associado produo em larga escala, o que inviabiliza o pro-
jeto e fabricao de alguns poucos CIs apenas para fins de teste, ou para utilizao em
aplicaes muito especficas em pequena escala.
Neste contexto, surgiram os Dispositivos Lgicos Programveis (PLDs em in-
gls), que so componentes eletrnicos usados para construir circuitos digitais reconfig-
urveis. Diferente dos circuitos lgicos tradicionais, que possuem um funcionamento
lgico fixo definido durante o projeto, os PLDs saem das fbricas sem nenhum compor-
tamento fixo, podendo ser programados posteriormente pelos desenvolvedores de acordo
com suas necessidades e se tornando propcios para o uso em casos de aprendizagem,
prototipagem e testes em pequena escala.
O uso dos PLDs levou criao de microcontroladores. Tambm conhecidos
como MCU, so um computador num chip, contm um processador, memria e perifri-
cos de entrada e sada (E/S). O microcontrolador como um microprocessador que pode
ser programado para funes especficas, em contraste com outros microprocessadores
de propsito geral, como os utilizados em computadores. Diferente dos PLDs, os mi-
crocontroladores no so apenas um circuito programvel, mas um sistema completo que
j oferece funcionalidades bsicas como gerncia de memria e acesso a dispositivos
de E/S. Para facilitar ainda mais o desenvolvimento de sistemas utilizando microcon-
troladores, eles normalmente so acoplados plataformas de prototipagem, como o
caso do Arduino [Arduino 2012a] e do Mbed [Holdings 2011]. Essas plataformas ofer-
ecem no somente o microcontrolador, mas tambm outros componentes para realizar a
interface com computadores (como portas USB, Ethernet, RS-232, etc.), componentes
de microeletrnica bsicos (LEDs e botes), alm de outros dispositivos de E/S. Toda a
programao destas plataformas feita atravs de softwares que so instalados em com-
putadores. Atravs dos ambientes desenvolvidos pelos prprios fabricantes, possvel
programar todo o funcionamento desses microcontroladores, alm de enviar o cdigo j
compilado para o dispositivo, normalmente atravs de uma interface USB.
Neste contexto, este minicurso visa apresentar duas das vrias plataformas de pro-
totipagem disponveis: o Arduino e o Mbed. Ambas so plataformas com bom poder
de processamento e recursos, que permitem a implementao desde aplicaes didti-
cas simples at projetos de pequeno e mdio porte, criados a partir da imaginao dos
desenvolvedores mais aventureiros. Uma anlise com maior preciso classificaria o Ar-
duino como uma plataforma voltada principalmente para uso educacional, pois uma
plataforma OpenSource prpria para a integrao com dispositivos eletrnicos bsicos,
alm de apresentar uma interface de programao simplificada com um conjunto de bib-
liotecas bsicas j disponveis para uso. Por sua vez, o Mbed apresenta um hardware
mais rpido e potente, incluindo tambm mais recursos embutidos (como controladores
de rede) e bibliotecas de software ainda mais sofisticadas, viabilizando projetos maiores.
O restante deste minicurso apresenta ao leitor as plataformas de prototipagem Ar-
duino e Mbed, incluindo algumas atividades prticas no uso destes dispositivos. Para isso,
a Seo 12.2 apresenta alguns conceitos de microeletrnica bsica, necessrios para que
possamos entender at mesmo as aplicaes mais simples. A Seo 12.3 apresenta as
plataformas de prototipagem eletrnicas Mbed e Arduino, destacando suas caractersticas
tcnicas. A Seo 12.4 apresenta os ambientes de desenvolvimento e as bibliotecas uti-
lizadas para a programao de ambos dispositivos. A Seo 12.5 traz alguns exemplos de
aplicaes que podem ser construdas com estes equipamentos e descreve as atividades
didticas propostas como oficina prtica. Por fim, a Seo 12.6 apresenta as consideraes
finais.

12.2. Microeletrnica bsica


Para poder montar um sistema digital interativo preciso algum tipo de interface de comu-
nicao com os usurios. Esta interface normalmente construda atravs de dispositivos
eletrnicos, que so conectados plataforma de prototipagem. Os componentes eletrni-
cos bsicos mais utilizados sero apresentados nesta unidade.

12.3. Plataformas de prototipagem


Esta unidade visa apresentar em detalhes as plataformas de prototipagem abordadas:
Mbed e Arduino. So discutidos as especificaes tcnicas e os recursos oferecidos por
cada um dos dispositivos.

12.3.1. Mbed
Os microcontroladores Mbed consistem de uma srie de microcontroladores elaborados
para prototipagem rpida. So projetados com encapsulamento DIP (dual in-line package)
para montagem em placas protoboard sem solda, stripboards e trough-hole. Existem duas
variantes da plataforma Mbed: a NXP LPC11U24 e a NXP LPC1768, sendo esta ltima
que ser utilizada nesse mini-curso de tal forma que todas as referncias so relacionadas
a ela [Mbed 2012c]. A Figura 12.1 ilustra o Mbed modelo NXP LPC1768 [Mbed 2012b].

Figure 12.1. Viso frontal do Mbed NXP LPC1768.

Esses microcontroladores incluem uma interface USB de acesso para programao.


Para uso, basta se conectar o dispositivo a uma porta USB do computador, copiar o pro-
grama ARM binrio para a memria flash para que o processador seja capaz de executar
o cdigo. Essa interface compatvel com os sistemas Windows, Mac OS X e Linux,
desta forma a plataforma indiferente ao sistema do Mbed. O programa binrio pode ser
obtido utilizando-se um compilador em nuvem, disponvel atravs do site do prprio
fabricante [Holdings 2011].
O Mbed possui inmeras portas de conexes. No total, so 25 pinos disponveis
para o LPC1768. Atravs destes pinos podem ser incorporados dispositivos e funcionali-
dades como interface de rede Ethernet, leitores e gravadores RFID, leitores biomtricos,
cmeras, teclados numricos, telas LCD touch screen, entre outros. Alm disto, esses
microcontroladores podem ser alimentados atravs da interface USB de um computador
ou atravs de fontes externas com voltagem operando entre 4.5V e 12V. A Figura 12.2
ressalta as principais caractersticas deste modelo de microcontrolador.

Caracterstica Valor
Aplicaes alvo Ethernet, USB e de alto desempenho
Ncleo de processamento ARM Cortex-M3
Frequncia de operao 96 MHz
Memria Flash 512 KB
Memria RAM 32 KB
Alimentao 60-120 mA
Figure 12.2. Principais caractersticas de hardware do NXP LPC1768.

Esse modelo tambm oferece as seguintes interfaces perifrica: suporte para con-
trolador Ethernet, USBHost e USBDevices, SPI, I2C, CAN, AnalogIn, PwmOut, Analo-
gOut, DigitalIn e DigitalOut. Cada uma delas so detalhadas logo abaixo.

Ethernet: permite que os microcontroladores Mbed se conectem e se comuniquem


com uma rede Ethernet, podendo ser utilizado para conversar com outros disposi-
tivos na rede, incluindo comunicao com computadores atravs da web, servidores
de email ou atuar com um webserver (utilizada nos pinos p33/34/p35/p36);
USB: com essa interface possvel utilizar o Mbed para, por exemplo, emular
mouse e teclado, emular uma porta serial, enviar e receber mensagens MIDI, to-
car msicas ao ser reconhecido como um dispositivo de udio e receber pacotes de
udio vindos do computador (utilizada nos pinos p31 e p32);
SPI (Serial Peripheral Interface): fornece uma interface perifrica serial mestre que
permite a comunicao com dispositivos SPI escravos, como memria flash, telas
LCD e outros mdulos ou circuitos integrados (utilizada nos pinos p5/p6/p7 ou
p11/p12/p13);
I2C (Inter-Integrated Circuit): fornece funcionalidade mestre I2C, que por sua
vez propicia a comunicao com dispositivos I2C escravos, como memria serial,
sensores e outros mdulos ou circuitos integrados (utilizada nos pinos p9/p10 ou
p27/p28);
CAN ou Controlador de rea de Rede: um padro de barramento projetado para
permitir que os microcontroladores e dispositivos se comuniquem uns com os out-
ros sem um computador host (utilizada nos pinos p9/p10 ou p29/p30);
AnalogIn: usada para ler a tenso aplicada a um pino de entrada analgica (pode
utilizar qualquer pino de p15 a p20);

PwmOut: utilizada para controlar a frequncia de uma sequncia de pulsos digitais


(pode utilizar qualquer pino de p21 a p26);

AnalogOut: utilizada para ajustar a tenso de um pino de sada analgica (s pode


utilizar o pino p18);

DigitalIn: utilizada para ler o valor de um pino de entrada digital (pode utilizar
qualquer pino de p5 a p30);

DigitalOut: utilizada para configurar e controlar um pino de sada digital (pode


utilizar qualquer pino de p5 a p30).

A Figura 12.3 pode ser utilizada como um guia, pois mostra a numerao dos
pinos e suas funcionalidades.

Figure 12.3. Diagrama de conexes do Mbed NXP LPC1768.

12.3.2. Arduino
O Arduino uma plataforma Open Source de prototipagem eletrnica baseada em hard-
ware e software flexveis e fceis de usar [Culkin 2012]. O Arduino capaz de in-
teragir com o ambiente atravs de sinais de entrada provenientes de uma variedade de
sensores e modific-lo atravs de sinais de sadas para atuadores, motores, luzes con-
troladoras (acendendo ou apagando um LED por exemplo), etc. O microcontrolador na
placa programado usando a linguagem de programao do Arduino (baseado no frame-
work Wiring [Barragn 2012], essencialmente C/C++) e o ambiente de desenvolvimento
Arduino (baseada no ambiente de desenvolvimento Processing [Fry 2012]). Projetos Ar-
duino podem ser independentes ou podem comunicar com outros softwares que estejam
rodando em um computador. As placas podem ser compradas com facilidade, e o soft-
ware de desenvolvimento pode ser baixado gratuitamente. Existem inmeros projetos
de referncia do Arduino disponveis na Web, o usurio livre para adapt-los s suas
necessidades. Ao contrrio do Mbed, o Arduino possui vrios modelos diferentes, que
variam na capacidade de processamento e quantidade de pinos para conexes externas.
Esse minicurso ir tratar apenas da verso UNO, de tal forma que referncias posteriores
devem ser relacionadas a essa verso. A Figura 12.4 ilustra a viso frontal do Arduino
UNO, identificando ainda suas principais conexes.

Figure 12.4. Viso frontal do Arduino UNO rev 3.

O Arduino Uno uma plataforma de prototipagem baseada no microcontrolador


ATmega328. A plataforma possui 14 pinos digitais que podem funcionar como pinos
de entrada ou sada digital, 6 entradas analgicas, um cristal oscilador de 16 MHz, uma
porta de conexo USB, um conector de alimentao, e um boto de reset. Esta plataforma
contm tudo o que necessrio para suportar o microcontrolador. Basta conect-la a um
computador com um cabo USB ou lig-la em uma fonte de energia para que a mesma
comece a funcionar. A Figura 12.5 abaixo lista as principais caractersticas de hardware
do Arduino.
Caracterstica Valor
Microcontrolador ATmega328
Voltagem de Operao 5V
Voltagem recomendada 7-12V
Voltagem mxima 6-20V
Pinos Digitais de E/S 14
Pinos Analgicos 6
Corrente pino de E/S 40 mA
Corrente pino de 3.3V 50 mA
Memria Flash 32 KB (ATmega328)
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Velocidade de Clock 16 MHz
Figure 12.5. Principais caractersticas de hardware do Arduino UNO.

Cada um dos 14 pinos digitais do Arduino Uno podem ser utilizados tanto como
pinos de entrada ou de sada. Essa configurao feita em software, durante o desen-
volvimento do aplicativo. Todos os pinos operam com 5 Volts e uma corrente mxima de
40 mA. Cada pino tem um resistor pull-up interno (desconectado por padro) de 20-50
kOhms. Alm disso, alguns pinos tm funes especializadas, como os indicados abaixo:

Pinos seriais 0 (RX) e 1 (TX) podem ser usados para receber (RX) e transmitir (TX)
dados seriais;

Pinos de interrupes externas 2 e 3, que podem ser configurados para disparar uma
interrupo por um alguma variao especfica em seus sinais de entrada;

Pino LED nmero 13, onde h um LED built-in que acende quando o pino est com
valor alto, e apaga caso contrrio.

O Arduino Uno tem tambm 6 entradas analgicas, rotuladas de A0 a A5, que


podem ser conectadas em sensores como termmetros, sensores de luminosidade, etc.
Cada um prov 10 bits de resoluo (1024 valores diferentes). Alm disso h tambm um
boto de reset, usado para reiniciar o microcontrolador reiniciando toda a placa quando
acontece algum problema que bloqueia o funcionamento da mesma.
Uma das principais caractersticas do Arduino que ele um projeto livre, onde
todas as especificaes esto publicamente disponveis na Web. Isso permite que desen-
volvedores possam construir suas prprias plataformas, ou mesmo modificar as existentes
para atender s suas necessidades. A Figura 12.6 ilustra o projeto de referncia do Ar-
duino Uno.

Figure 12.6. Projeto de referncia para o Arduino Uno.


12.4. Ambientes de desenvolvimento
Para concluir a parte terica, nesta unidade sero apresentados os ambientes de desen-
volvimento integrado que so disponibilizados pelos fabricantes dos dispositivos. Estes
ambientes so utilizados para programar o middleware que ser executado pelo dispos-
itivo. Alm do aplicativo, esta unidade aborda tambm a utilizao das bibliotecas j
existentes, que facilitam o trabalho de implementao de aplicaes maiores.

12.4.1. Mbed
O compilador Mbed fornece um IDE (ambiente de desenvolvimento integrado) online
C/C++ que pr-configurado para permitir que se escreva e compile programas rapida-
mente e seja capaz de transferi-los para executar em seu microcontrolador Mbed. No
necessrio que se instale ou configure nada para comear a programar com o Mbed. Por
ser uma aplicao web, o ambiente de desenvolvimento fornecido permite que seja pos-
svel trabalhar em qualquer navegador no Windows, Mac ou Linux e que se tenha acesso
em qualquer lugar e continue a partir de onde parou. Cada usurio Mbed possui uma
conta que lhe da acesso a um compilador e a um workspace privado que contm os seus
programas [Mbed 2012a].
Apesar de ser leve e online, o compilador tambm poderoso. Ele utiliza a engine
profissional do compilador ARMCC, e portanto produz cdigo eficiente que pode ser
usado gratuitamente, mesmo em aplicaes comerciais. O IDE possui um editor completo
que possui marcador de palavras reservadas, atalhos de teclado padro do editor, funo
de copiar/colar, tabulao e at mesmo auto-formatao de cdigo. A Figura 12.7 retrata
o ambiente pessoal com mltiplos arquivos, pastas e programas em que o usurio ir
desenvolver.

Figure 12.7. Ambiente de desenvolvimento para Mbed.

O sistema de pesquisa da IDE permite que o usurio procure por uma string, seja
num programa inteiro ou apenas no mdulo requisitado. No exemplo representado pela
Figura 12.8 temos a pesquisa da string myled no programa ChromeOS em todos os
mdulos e tipos de mdulos (.c, .cpp, .h, .hpp, .s). Na mesma figura temos o
resultado da pesquisa.

Figure 12.8. Sistema de buscas do ambiente de desenvolvimento Mbed.

O ambiente de desenvolvimento integrado do Mbed possui ainda um controle de


verso embutido que permite o usurio fazer operaes de commit de uma verso do
projeto, ver o histrico de revises, comparar modificaes feitas entre verses, fazer
operaes de update ou revert para uma nova verso, e operaes de branch e merge entre
verses. A Figura 12.9 abaixo mostra um exemplo de operao de versionamento.

Figure 12.9. Sistema de controle de verso embutido do Mbed.

Outra funcionalidade o assistente de importao, que permite a importao de


programas a partir de uma URL Mbed. Isso til para importar rapidamente para dentro
do projeto do usurio um cdigo que tenha sido empacotado como uma biblioteca reuti-
lizvel (por exemplo, uma classe para um perifrico). A Figura 12.10 abaixo mostra o
sistema de importao de arquivos.
O IDE ainda permite que o usurio publique seus programas ou bibliotecas facil-
mente na seo de desenvolvimento do site do Mbed. Esse recurso facilita o processo
Figure 12.10. Sistema de importao de programas, bibliotecas do Mbed.

de compartilhamento tanto de cdigos bem sucedidos quanto de eventuais problemas e


consequente feedback para ambos os casos.
Para realizar a compilao, o compilador Mbed utiliza a compiler engine ARM
RVDS 4.1 na configurao padro para dar excelentes tamanho do cdigo e desempenho.
No h limitaes no tamanho do cdigo (salvo os limites do prprio dispositivo). O
cdigo gerado pode ser usado livremente para uso comercial e no-comercial. Quando
voc compila um programa, voc vai ter uma exibio do uso de memria. Isso mostra o
espao que o cdigo ir ocupar na memria flash do dispositivo, e as variveis que acabam
em memria principal. A Figura 12.11 mostra um exemplo de uso de memria.
O SDK usado com o compilador online do Mbed tambm compatvel com uma
srie de outras ferramentas ARM populares, de tal forma que seja possvel exportar os
programas diretamente para essas ferramentas. Por exemplo, se o usurio desejar migrar
para um conjunto de ferramentas diferentes quando o projeto passa da fase de prottipo,
pode-se optar por exportar um projeto Mbed clicando com o boto direito sobre ele con-
forme exemplificado na Figura 12.11.

Figure 12.11. Uso de memria e opes de exportao de programa.

Para o leitor interessado em aumentar seus conhecimentos em relao ao desen-


volvimento para Mbed, sugerimos consultar uma referncia mais completa sobre progra-
mao, como as que podem ser encontradas na pgina do projeto [Holdings 2011].

12.4.2. Arduino
Assim como o hardware do Arduino, o software tambm Open Source e multiplataforma
(roda em Windows, Linux e OS X), baseado no projeto Processing [Fry 2012]. Ele im-
plementado em linguagem Java, e todo o cdigo est disponvel publicamente na web.
O ambiente simplista e intuitivo, alm de ser compatvel com todas as verses do Ar-
duino. Ele contm um editor de texto para escrita de cdigo, uma rea de mensagem, um
console em texto, uma barra de ferramentas com botes para as funcionalidades mais co-
muns, e uma srie de menus. Ele se conecta ao hardware do Arduino para fazer o upload
de programas e se comunicar com o mesmo. A Figura 12.12 mostra este ambiente de
desenvolvimento.

Figure 12.12. Ambiente de desenvolvimento para Arduino.

As principais funcionalidades oferecidas pelo ambiente e utilizadas constante-


mente pelos desenvolvedores contam com botes na barra de ferramentas. Na ordem
em que eles aparecem na Figura 12.12, ns temos o boto de Verificar, responsvel por
analisar todo o cdigo em busca de erros; e o boto de Upload, que compila o cdigo
e envia para o dispositivo atravs da conexo USB com o mesmo. Ainda na barra de
ferramenta, h tambm os botes para Novo, Abrir e Salvar.
Os softwares escritos usando Arduino so chamados de sketches. Estes cdigos
so verificados quanto a erros ainda no ambiente de desenvolvimento, para somente de-
pois serem compilados e enviados ao hardware atravs do processo de upload. O processo
de atualizao do Arduino bastante facilitado graas ao bootloader previamente instal-
ado no microcontrolador. Um cabo USB e alguns cliques de mouse so suficientes para
ter um sistema inteiro rodando no hardware do Arduino.
A sintaxe da linguagem de desenvolvimento para o Arduino baseada na lin-
guagem de programao de alto nvel C. Ela oferece praticamente as mesmas estruturas
bsicas da linguagem C: condicional usando if, then e else; switch e case; e es-
truturas de repetio while, do while e for; funes e procedimentos; structs;
etc. Dessa forma, transparente para um desenvolvedor j habituado com a linguagem C
a comear implementar pequenos cdigos neste ambiente.
O ambiente de desenvolvimento para Arduino conta tambm com srie de bib-
liotecas que provem funcionalidades extras que podem ser utilizadas nos sketches, como
funes para manipular configuraes avanadas do hardware ou manipular dados com
maior preciso. Para utilizar um biblioteca preciso carregar os arquivos atravs das
funcionalidades j oferecidas pelo ambiente.
Para o desenvolvimento de um sketch, duas funes obrigatrias devem estar pre-
sentes em todos os cdigos: void setup() e void loop(). A primeira funo
executada apenas uma vez, no incio da execuo do programa. Suas principais aplicaes
so para inicializao de variveis, inicializao da utilizao de bibliotecas, definio das
funcionalidades dos pinos e incio da comunicao serial, quando aplicvel. Por sua vez,
a segunda funo executada em loop contnuo, se comportando como o programa prin-
cipal (funo main()). A partir desta funo permitido chamar outras funes, sejam
elas implementadas pelo prprio desenvolvedor, ou j disponveis em bibliotecas car-
regadas previamente. O cdigo abaixo exemplifica uma aplicao simples para Arduino,
que analisaremos na sequncia.

1. void setup () {
2. pinMode (12, OUTPUT);
3. }
4.
5. void loop () {
6. digitalWrite(12, HIGH);
7. delay(1000);
8. digitalWrite(12, LOW);
9. delay(1000);
10. }

Este o cdigo chamado Blink. Seu objetivo fazer com que um LED que es-
teja com seu terminal positivo (anodo) conectado no pino de sada 12 do Arduino pisque
constantemente com a frequncia de 1 Hz. Neste exemplo estamos assumindo que o ter-
minal negativo (catodo) do LED esteja aterrado e que o resistor apropriado esteja sendo
utilizado para limitar a corrente. Analisando o sketch, nele temos declarado no setup()
que usaremos o pino 12 do Arduino como um pino de sada de dados (OUTPUT). Ou seja,
por ele que vai sair o sinal que vai controlar o LED. O caso alternativo a este definir
um pino como sinal digital de entrada (INPUT), como por exemplo, um pino conectado a
um boto.
J na funo loop(), temos duas tarefas distintas sendo executadas:

1. A funo digitalWrite(12,HIGH); diz para o Arduino que o pino 12 deve


ter como sada o valor lgico 1. Isso, na prtica, significa que esse pino ter como
sada +5V, que ser utilizado para acender o LED.

2. A funo digitalWrite(12,LOW); faz o processo inverso, dizendo para o


Arduino que o pino 12 deveria se tornar agora o polo negativo, onde no h fluxo
de energia para que o LED fique desligado.

3. Por ltimo, a funo delay(1000); utilizada para inserir uma pausa (atraso)
na execuo das prximas funes. Neste caso, o programa fica parado por 1000 ms
antes de continuar e reiniciar a execuo da funo loop().

Neste exemplo, teremos o LED ligado por 1s e desligado por 1s. Como todo o
cdigo de ligar e desligar o LED est no loop(), que executa infinitas vezes, teremos o
LED piscando o tempo todo. importante observar que se no inserirmos o atraso, ento
essas operaes seriam realizadas to rapidamente que seria impossvel percebermos o
LED piscar. A Figura 12.13 mostra como deveriam ser conectados os componentes ex-
ternos na placa para realmente visualizar o funcionamento deste sketch (no se esquea
do resistor). Uma variao deste cdigo pode ser conseguida facilmente adicionando um
boto para controlar o funcionamento do LED, onde somente quando o boto estivesse
pressionado o LED permanece aceso (atuando como um interruptor).

Figure 12.13. Protoboard com o projeto Blink em funcionamento.

Para o leitor interessado em aumentar seus conhecimentos em relao ao desen-


volvimento para Arduino, sugerimos consultar uma referncia mais completa sobre pro-
gramao, como as que podem ser encontradas na pgina do projeto [Arduino 2012b] e
no livro [McRoberts 2011].

12.5. Atividade prtica


12.6. Consideraes finais
References
[Arduino 2012a] Arduino (2012a). Arduino. Disponvel em: http://www.
arduino.cc.
[Arduino 2012b] Arduino (2012b). Learning arduino. Disponvel em: http://www.
arduino.cc/en/Tutorial/HomePage.

[Barragn 2012] Barragn, H. (2012). Wiring. Disponvel em: http://wiring.


org.co.

[Culkin 2012] Culkin, J. (2012). Arduino. Disponvel em: http:


//www.jodyculkin.com/wp-content/uploads/2012/04/
arduino-comic-latest.pdf.

[Fry 2012] Fry, B. (2012). Processing. Disponvel em: http://processing.org.

[Holdings 2011] Holdings, A. (2011). Rapid prototyping for microcontrollers. Cam-


bridge, UK. Disponvel em: http://www.mbed.org.

[Mbed 2012a] Mbed (2012a). Mbed compiler. Disponvel em: http://mbed.org/


handbook/mbed-Compiler.

[Mbed 2012b] Mbed (2012b). Mbed NXP LCP11U24. Disponvel em: http://
mbed.org/handbook/mbed-NXP-LPC11U24.

[Mbed 2012c] Mbed (2012c). Microcontroladores. Disponvel em: http://mbed.


org/handbook/mbed-Microcontrollers.

[McRoberts 2011] McRoberts, M. (2011). Arduino Bsico. Novatec.

[Moore 1998] Moore, G. (1998). Cramming more components onto integrated circuits.
Proceedings of the IEEE, 86(1):82 85.

[Tocci et al. 2011] Tocci, R. J., Widmer, N. S., and Moss, G. L. (2011). Sistemas Digi-
tais: princpios e aplicaes. Pearson, 15th edition.

12.7. Minicurrculo dos autores


Thiago Moratori Peixoto graduando em Cincia da Computao pela Universidade
Federal de Juiz de Fora - UFJF. Atualmente atua como desenvolvedor em bolsa de treina-
mento profissional intitulada Desenvolvimento de um Sistema de Segurana Utilizando
Dispositivos Embarcados. As reas de interesse em pesquisa e atuao so Redes de
Computadores, Sistemas Distribudos e Sistemas Embarcados.

Tiago Machado recebeu seu diploma de Bacharel em Cincia da Computao pela


Universidade Federal de Juiz de Fora - UFJF (2009). Atualmente cursa ps-graduao
latu sensu em Redes de Computadores nesta mesma instituio. Suas reas de interesse
em pesquisa e atuao so: Redes de Computadores, Sistemas Distribudos e Sistemas
Embarcados. Desde 2010 Tcnico Administrativo em Educao do Departamento de
Cincia da Computao na UFJF. Atua ainda em projetos de Extenso e Pesquisa na rea
de gerncia de redes, sistemas embarcados entre outros.
Luciano Jerez Chaves recebeu seu diploma de Bacharel em Cincia da Computao
pela Universidade Federal de Juiz de Fora - UFJF (2007) e de Mestre em Cincia da
Computao pela Universidade Estadual de Campinas - UNICAMP (2010). Atualmente
aluno de doutorado nesta mesma instituio, e seus interesses de pesquisa incluem Redes
de Computadores, Algoritmos Cognitivos e Computao Autonmica. Desde 2011
Professor Assistente no Departamento de Cincia da Computao da UFJF, lecionando
disciplinas na rea de Arquitetura de Computadores e Sistemas Digitais. Seus trabalhos
recentes esto relacionados com implementaes de algoritmos cognitivos para redes sem
fio em dispositivos embarcados.

Eduardo Pagani Julio recebeu seu diploma de Bacharel em Informtica pela Univer-
sidade Federal de Juiz de Fora - UFJF (2000) e de Mestre em Computao pela Univer-
sidade Federal Fluminense - UFF (2007). Atualmente aluno de doutorado nesta mesma
instituio, e seus interesses de pesquisa incluem Redes de Computadores e Redes de
Rdios Cognitivos. Desde 2011 Professor Assistente no Departamento de Cincia da
Computao da UFJF, lecionando disciplinas na rea de Redes de Computadores e Se-
gurana de Sistemas Computacionais. Seus trabalhos recentes esto relacionados com
implementaes de sistemas de segurana em dispositivos embarcados.

S-ar putea să vă placă și