Você está na página 1de 103

Introduo ao Arduno

1 Edio

Adaptado por: CIRINEU CARVALHO FERNANDES E GEILTON TELES LOPES

Esta traduo valiosa pouco oferece uma introduo completa para open-source da
plataforma eletrnica de prototipagem que est levando como uma tempestade o projeto de
amadores de todo do mundo. Introduo ao Arduno d muitas idias para projetos com
Arduno e o ajuda a ir a trabalhar com eles de forma rpida. Se organizando dar para ajustar
os retoques finais em seu esboo de programa, todas as informaes que voc precisa est
nele, onde voc vai aprender sobre:
1. Interao design de computao e fsica
2. O hardware Arduno e ambiente de desenvolvimento de software
3. Noes bsicas de eletricidade e eletrnica
4. Prototipagem em um breadboard solderless
5. Desenho de um esquema
Com um hardware barato e componente de software open-source que voc pode
baixar gratuitamente, comeando com Arduno um aprender num piscar de olhos. Para
usar os exemplos de introduo deste livro, tudo que voc precisa de um Arduno USB,
com cabo USB AB, e de um LED. Junte-se a dezenas de milhares de aficcionados que
descobriram esta incrvel plataforma. Escrito pelo co-fundador do projeto Arduno, com
ilustraes de Elisa Canducci, Introduo ao Arduno voc ficar na diverso!

ndice

Captulo 1. Introduo
Seo 1.1. Pblico Alvo
Seo 1.2. O que a computao fsica?
Captulo 2. A Via Arduno
Seo 2.1. Prototipagem
Seco 2.2. Consertar
Seo 2.3. Patching
Seo 2.4. Circuit Bending
Seo 2.5. Teclado Hacks
Seo 2.6. We Love sucata!
Seo 2.7. Hacking Brinquedos
Seo 2.8. Colaborao
Captulo 3. A plataforma Arduno
Seo 3.1. O hardware Arduno
Seco 3.2. O software (IDE)
Seo 3.3. Instalando o Arduno em seu computador
Seco 3.4. Instalao de drivers: Macintosh
Seo 3.5. Instalando Drivers: Windows
Seco 3.6. Porto: Identificao Macintosh
Seo 3.7. Porto Identificao: Windows
Captulo 4. Realmente Introduo ao Arduno
Seo 4.1. Anatomia de um dispositivo interactivo
Seo 4.2. Sensores e atuadores
Seco 4.3. Piscando um LED
Seo 4.4. Passe-me o queijo parmeso
Seco 4.5. Arduno no para Quitters
Seco 4.6. Tinkerers Real escrever comentrios
Seo 4.7. O Cdigo, Passo a Passo
Seo 4.8. O que estaremos construindo
Seo 4.9. O que eletricidade?
Seco 4.10. Usando um boto para controlar o LED
Seco 4.11. Como isso funciona?

Seco 4.12. Um circuito, um Mil Comportamentos


Captulo 5. Avanado de Entrada e Sada
Seco 5.1. Tentando Out Em outros sensores / Off
Seco 5.2. Controlar a luz com PWM
Seo 5.3. Use um sensor de luz em vez do Teclado
Seco 5.4. Entrada analgica
Seco 5.5. Tente sensores analgicos Outros
Seco 5.6. Comunicao Serial
Seo 5.7. Conduo cargas maiores (Motors, lmpadas, etc)
Seo 5.8. Sensores Complex
Captulo 6. Conversando com o Cloud
Seo 6.1. Sada Digital
Seco 6.2. Planejamento
Seco 6.3. Codificao
Seo 6.4. Montagem do Circuito
Seco 6.5. Veja como mont-lo:
Captulo 7. Soluo de problemas
Seo 7.1. Compreenso
Seo 7.2. Testando a Cmara
Seo 7.3. Testando o Circuito breadboarded
Seo 7.4. Isolamento de problemas
Seo 7.5. Problemas com o IDE
Seo 7.6. Como Obter Ajuda Online
Apndice A. O Breadboard
Apndice B. Resistors Leitura e capacitores
Apndice C. Referncia Rpida Arduno
Seco C.1. ESTRUTURA
Seco C.2. Smbolos especiais
Seco C.3. CONSTANTS
Seco C.4. VARIVEIS
Seo C.5. Estruturas de controlo
Seo C.6. ARITHMETIC e frmulas
Seo C.7. Operadores de Comparao
Seo C.8. Operadores Booleanos
Seo C.9. Operadores de

Seo C.10. Funes de entrada e OUTPUT


Seo C.11. Funes de tempo
Seo C.12. FUNES MATEMTICAS
Seo C.13. NMERO funes aleatrias
Seo C.14. COMUNICAO SERIAL
Apndice D. Leitura diagramas esquemticos

Safari Books Open Source Mtodos C Microprocessadores Safari Books Engenharia de


Software Programao Hardware Massimo Banzi O'Reilly Media, Inc. Faa Introduo ao
Arduno, 1 Edio

Palavras do Autor
Alguns anos atrs tive um desafio muito interessante: ensinar o mnimo a designers em
eletrnica para que possam construir prottipos interativos dos objetos que estavam
projetando.
Comecei a seguir um instinto subconsciente para ensinar eletrnica da mesma maneira que
foi ensinado na escola. Mais tarde, percebi que ele simplesmente no estava funcionando
to bem quanto eu gostaria, e comecei a lembrar sentado em uma classe, entediado como o
inferno, ouvindo tudo o que a teoria que est sendo jogada para mim, sem qualquer
aplicao prtica para ele.
Na realidade, quando eu estava na escola eu j sabia eletrnica de uma maneira muito
emprica: teoria muito pouco, mas muita experincia hands-on.
Comecei a pensar sobre o processo pelo qual eu realmente aprendi com eletrnicos:
Eu levei para alm de qualquer dispositivo eletrnico que eu poderia colocar minhas mos
sobre. Eu aprendi que lentamente todos os componentes me trouxeram.
Comecei a mexer com eles, mudando algumas das conexes dentro deles e ver o que
aconteceu com o dispositivo: geralmente algo entre uma exploso e uma nuvem de fumo.
Comecei

construo

de

alguns

kits

vendidos

por

revistas

de

eletrnica.

Nos dispositivos eletrnicos que eu tinha tirado componentes, e kits montveis e outros
circuitos que eu encontrei em revistas para montar coisas novas. Como uma criana,
sempre fui fascinado por descobrir como as coisas funcionam, por isso, eu costumava levlos separados. Essa paixo cresceu como alvo a qualquer objeto no utilizado em casa e
depois o desmontou em pedaos pequenos. Eventualmente, as pessoas trouxeram todos os
tipos de dispositivos para eu estudar. Minha maior experincia na poca foi uma mquina de
lavar loua e um dos primeiros computadores que vieram de um escritrio de seguros, que
tinha uma impressora grande, cartes eletrnicos, leitores de cartes magnticos, e muitas
outras peas que se mostrou muito interessante e desafiador para desmontar
completamente.

Depois de fazer essa dissecao do aparelho, eu sabia que eram componentes eletrnicos
e aproximadamente o que eles faziam. Em cima disso, minha casa estava cheia de revistas
de eletrnica antiga que meu pai deve ter comprado no incio da dcada de 1970. Passei
horas lendo os artigos e olhando para os diagramas de circuito sem entender muito.
Este processo de leitura dos artigos mais e mais, com a vantagem do conhecimento
adquirido, tendo para alm dos circuitos, criou um crculo virtuoso lento.
Um grande avano veio no Natal, quando meu pai me deu um kit que permitiu que os
adolescentes a aprender sobre eletrnica. Cada componente foi abrigado em um cubo de
plstico que se encaixam magneticamente com cubos de outro, estabelecendo uma
conexo, o smbolo eletrnico foi escrito em cima. Mal sabia eu que o brinquedo tambm foi
um marco do design alemo, Dieter Rams, porque o projetou na dcada de 1960.
Com esta nova ferramenta, eu poderia colocar rapidamente em conjunto de circuitos e testlos para ver o que aconteceu. O ciclo de prototipagem foi ficando mais curtos.
Depois disso, eu constru rdios, amplificadores, circuitos que produzem rudos horrveis e
sons agradveis, sensores de chuva, e os robs minsculos.
Eu passei muito tempo procurando uma palavra em Ingls que resumir essa maneira de
trabalhar sem um plano especfico, comeando com uma idia e acabar com um resultado
completamente inesperado. Finalmente, "consertar" veio junto. Eu reconheci como esta
palavra tem sido usada em muitos outros campos para descrever uma forma de operar e de
retratar as pessoas que partiram em um caminho de explorao. Por exemplo, a gerao de
diretores franceses que deram origem "Nouvelle Vague" eram chamados de amadores .
A melhor definio de ajustes que eu j encontrei vem de uma exposio realizada no
Exploratorium em San Francisco:
Trabalhar o que acontece quando voc tenta algo que no sei bem como fazer, guiado por
capricho, imaginao e curiosidade. Quando voc mexer, no existem instrues, mas
tambm no h falhas, no h certo ou errado maneiras de fazer as coisas. Trata-se de
descobrir como as coisas funcionam e reformulao deles.
Engenhocas, mquinas, objetos incompatveis descontroladamente trabalhando em

harmonia, este o material de consertar. Trabalhar , no seu sentido mais bsico, um


processo que combina jogos e investigao www.exploratorium.edu/tinkering
De meus primeiros experimentos sabia quanta experincia voc precisa para ser capaz de
criar um circuito que faria o que voc quis partir de componentes bsicos. Outro avano foi
no vero de 1982, quando fui para Londres com meus pais e passei muitas horas visitando o
Museu da Cincia. Eles tinham acabado de abrir uma nova ala dedicada aos computadores,
e na sequncia de uma srie de experincias guiadas, eu aprendi o bsico de matemtica
binria e programao.
L eu percebi que em muitas aplicaes, os engenheiros no faziam mais os circuitos de
construo de componentes bsicos, mas ao invs disso foi implementado um monte de
inteligncia em seus produtos que utilizam microprocessadores. Software foi a substituio
de muitas horas de design eletrnico, e permitiria um ciclo mais curto mexer.
Quando voltei, comecei a poupar dinheiro, porque eu queria comprar um computador e
aprender a programar. Meu primeiro projeto e mais importante depois que estava usando
meu computador novinho em folha ZX81 para controlar uma mquina de solda. Eu sei que
no soa como um projeto muito interessante, mas havia uma necessidade para ela e foi um
grande desafio para mim, porque eu tinha acabado de aprender como programar. Neste
ponto, ficou claro que as linhas de cdigo escrito levariam menos tempo do que modificar
circuitos complexos. Vinte e poucos anos mais tarde, eu gostaria de pensar que essa
experincia me permite ensinar as pessoas que no consegue se lembrar de tomar qualquer
aula de matemtica e para infundir-lhes com o mesmo entusiasmo e capacidade de mexer
que eu tinha na minha juventude e que mantido desde ento.

Palavras de um dos Adaptadores.

Esta adaptao dedicada aos nossos pais que lutaram pelo nosso sucesso, tambm
a todas as crianas pobres e humildes, que no tem condies de estudar e vivem na mais
lastimvel pobreza, resultado de um pssimo trabalho poltico que deixa de construir escolas
tcnicas para as nossas crianas e jovens por todo esse Brasil a fora, um pas que se
encontra hoje carente de uma mo de obra especializada mergulhado em uma das maiores
desigualdades sociais existentes no mundo.
Andando pelo meu Maranho a fora pude observar a grande falta que faz uma escola
profissionalizante, l as crianas que conheo at hoje vivem no trabalho da lavoura,
extraem a castanha presente no babau, onde so aproveitados inmeros produtos
principalmente o leo vegetal. Infelizmente em pleno ano de 2010, o meu estado ainda vive
a merc de uma famlia que o domina e o mantm como um dos estados mais pobres do
Brasil. Assim a fora que nos resta uma esperana de que as coisas mudem por l e
reverta a atual situao do meu estado.
Ingressei no SENAI no ano de 1995, fazendo o curso de Eletricista de Manuteno
Industrial, experincia que mudou a minha vida, e que me tirou de uma realidade cruel das
ruas, das drogas e da pobreza, obstculos esses que acompanham a criana e o jovem
carente no Brasil que ainda peca em no fazer investimentos em educao.

Captulo 1. Introduo
Arduno uma plataforma open source de computao fsica baseada em uma entrada
simples / sada (I / O) a bordo e um ambiente de desenvolvimento que implementa a
linguagem Processing (www.processing.org). Arduno pode ser usado para desenvolver
objetos interativos autnomo ou pode ser conectado ao software no seu computador (como
o Flash, Processing, VVVV, ou o Max / MSP). As placas podem ser montadas mo ou
compradas pr-montados, o cdigo-fonte aberto IDE (Integrated Development Environment)
pode ser baixado gratuitamente a partir www.Arduno.cc
Arduno diferente de outras plataformas no mercado devido a estas caractersticas:
um ambiente multiplataforma, que pode ser executado em Windows, Macintosh e Linux.
Baseia-se na programao de Processamento do IDE, um ambiente ao desenvolvimento
fcil de usar utilizada pelos artistas e designers. Program-lo atravs de um cabo USB, e
no uma porta serial. Esse recurso til, porque muitos computadores modernos no tm
portas

seriais.

Trata-se de hardware e software de fonte aberta, se desejar, voc pode baixar o esquema
do circuito, comprar todos os componentes, e fazer o seu prprio, sem pagar nada para os
fabricantes de Arduno. O hardware barato. As despesas de alimentao USB cerca de
20 (atualmente, cerca de E.U. $ 35) e substituindo um chip queimada na placa fcil e no
custa mais de 5 ou E.U. $ 4. Ento voc pode dar ao luxo de cometer erros.
Existe uma comunidade ativa de usurios, ento h muitas pessoas que podem ajud-lo.
O projeto Arduno foi desenvolvido em um ambiente educacional e, portanto, ideal para os
recm-chegados para fazer as coisas de trabalho rapidamente.
Este livro foi concebido para ajudar os iniciantes a entender os benefcios que podem obter a
partir de aprender a usar a plataforma Arduno e adoptar a sua filosofia.

1.1. Pblico Alvo


Este livro foi escrito para o "original" usurios Arduno: designers e artistas. Portanto, ele
tenta explicar as coisas de uma maneira que pode levar alguns engenheiros loucos. Na
verdade, um deles chamado de captulos introdutrios do meu primeiro projecto fluff ". Isso
precisamente o ponto. Vamos enfrent-lo: a maioria dos engenheiros no so capazes de
explicar o que fazer para outro engenheiro, quanto mais um ser humano normal. Vamos
agora mergulhar o coto.
Nota: Arduno baseia-se na tese de trabalho Hernando Barragan fez sobre a plataforma de
ligao quando estudava sob Casey Reas e me IDII em Ivrea. O Arduno comeou a se
tornar popular, onde eu percebi como experimentadores amadores e hackers de todos os
tipos comearam a utiliz-lo para criar objetos belos e loucos. Eu percebi que voc est
como todos os artistas e designers em sua prpria diretiva e ideal, assim este livro para
voc tambm.
Arduno nasceu para ensinar Interao e Design, uma disciplina de projeto que coloca no
centro de prototipagem de sua metodologia. Existem muitas definies de Design de
Interao, mas o que eu prefiro :
1.1.1. Interaction Design a concepo de uma experincia interativa. No mundo de hoje,
Design de Interao se preocupa com a criao de experincias significativas entre ns
(humanos) e objetos. uma boa maneira de explorar a criao de belos e talvez at
polmico, experincias e tecnologia entre ns. Design de Interao design incentiva atravs
de um processo iterativo baseado em prottipos de fidelidade cada vez maior. Esta parte
tambm da abordagem de alguns tipos de "convencional" o projeto pode ser estendido para
incluir prottipos com a tecnologia, em especial, com prottipos de eletrnicos.
A rea especfica do Design de Interao envolvidos com Arduno a Computao Fsica
(ou fsico Interaction Design).

1.2. O que a computao fsica?


Physical Computing utiliza componentes eletrnicos para prottipo de novos materiais para
designers e artistas.

Ela envolve o design de objetos interativos que podem se comunicar com humanos por meio
de sensores e atuadores controlados por um comportamento implementado como um
software rodando dentro de um microcontrolador (um pequeno computador em um nico
chip).
No passado, os eletrnicos usando significava ter que lidar com engenheiros de todo o
tempo, e circuitos de construir um pequeno componente no momento, estas questes
manteve as pessoas criativas de brincar com o meio diretamente. A maioria das ferramentas
foram criadas para os engenheiros e exigiu um vasto conhecimento. Nos ltimos anos, os
microcontroladores tm se tornado mais baratos e fceis de usar, permitindo a criao de
melhores ferramentas.
O progresso que temos feito com Arduno trazer estas ferramentas um passo para o
principiante, permitindo que as pessoas comecem a construir dia aps apenas dois ou trs
de um workshop.
Com Arduno, um designer ou artista pode facilmente conhecer as noes bsicas de
eletrnica e sensores de forma muito rpida e pode comear a construir prottipos com
muito pouco investimento.

Captulo 2. A Via Arduno


A filosofia Arduno baseia-se em fazer desenhos ao invs de falar sobre eles. uma busca
constante por maneiras mais rpidas e mais potentes para construir prottipos de melhor.
Temos explorou muitas tcnicas de prototipagem e desenvolvido maneiras de pensar com
as mos.
O clssico da engenharia se baseia em um rigoroso processo para a obteno de A para B,
o caminho Arduno deleita-se na possibilidade de se perder no caminho e encontrar C em
seu lugar.
Este o processo de ajustes que ns gostamos tanto de-playing com a mdia de uma forma
aberta e encontrar o inesperado. Nesta busca de maneiras para construir prottipos de
melhor, ns tambm selecionou uma srie de pacotes de software que permitem que o
processo

de

manipulao

constante

do

software

suporte

de

hardware.

As prximas sees apresentam algumas filosofias, eventos e pioneiros que tm inspirado a


Via Arduno.
Prototipagem est no corao da Via Arduno: fazemos as coisas e construir objetos que
interagem com outros objetos, pessoas e redes. Ns nos esforamos para encontrar uma
maneira simples e rpida de prottipos de forma mais barata possvel.
Um monte de novatos vem se aproximando eletrnica pela primeira vez, acho que eles tm
de aprender a construir tudo do zero. Este um desperdcio de energia: o que voc quer
ser capaz de confirmar que algo trabalhando muito rapidamente para que voc possa
motivar-se para dar o prximo passo ou at mesmo motivar algum a dar-lhe um monte de
dinheiro para faz-lo. por isso que ns desenvolvemos "prototipagem oportunista": por que
gastar tempo e energia construindo a partir do zero, um processo que requer tempo e
conhecimento tcnico profundo, quando podemos ter dispositivos pr-fabricados e cortarlhes a fim de explorar o trabalho duro feito por grandes empresas e engenheiros de bom?
Nosso heri James Dyson, que fez 5.127 prottipos do seu aspirador antes ele estava
convencido de que ele havia chegado ela (www.international.dyson.com/jd/1947.asp).

2.2. Consertando
Ns acreditamos que essencial para lidar com a tecnologia, explorando diferentes
possibilidades diretamente no hardware e s vezes software sem um objetivo muito definido.
Reutilizando a tecnologia existente uma das melhores maneiras de consertar. Primeiros
brinquedos baratos ou antigos equipamentos descartados e adaptando-lhes para que faam
algo de novo uma das melhores maneiras de chegar a grandes resultados.

2.3. Patching

Eu sempre fui fascinado pela modularidade e a capacidade de construir sistemas


complexos, ligando juntos dispositivos simples. Este processo est muito bem representado
por Robert Moog e sintetizadores analgicos. Msicos construdo sons, tentando
combinaes infinitas de "remendar" os diferentes mdulos com cabos. Esta abordagem
feita a aparncia sintetizador como um interruptor do telefone antigo, mas combinadas com
os botes numerosas, que era a plataforma perfeita para mexer com som e inovar a msica.
Moog descreveu-o como um processo entre a "testemunhar e descobrir". Eu tenho certeza
que a maioria dos msicos no incio no sabia o que todas essas centenas de botes que,
mas tentei e tentei, refinando o seu prprio estilo, sem interrupes no fluxo.
Reduzir o nmero de interrupes no fluxo muito importante para a criatividade, a mais
transparente o processo, quanto mais mexer acontece.

Esta tcnica tem sido traduzido para o mundo do software por "programao visual"
ambientes como Max, Pure Data, ou VVVV. Essas ferramentas podem ser visualizados
como "caixas" para as diferentes funcionalidades que proporcionam, deixando o usurio
construir "patches", ligando essas caixas juntos. Esses ambientes permitem a experincia do
usurio com a programao, sem a interrupo constante tpico do ciclo normal: tipo de
programa ", compilao, caramba, h um erro, erro de correo, compilar, executar". Se
voc visualmente mais ocupado, eu recomendo que voc experiment-los.

2.4. Testando um Circuito

Circuit bending uma das formas mais interessantes de consertar. o criativo curto-circuito
de baixa tenso, alimentados por bateria dispositivos eletrnicos de udio, como pedais de
efeitos de guitarra, brinquedos para crianas, pequenas e sintetizadores para criar novos
instrumentos musicais e geradores de som. O cerne deste processo a "arte do acaso".
Tudo comeou em 1966 quando Reed Ghazala, por acaso, em curto-out do amplificador um
brinquedo contra um objeto de metal na sua gaveta, resultando em um fluxo de sons
incomuns. O que eu gosto benders sobre circuito a sua capacidade para criar as mais
loucas dispositivos de ajustes de distncia com a tecnologia, sem necessariamente
compreender o que eles esto fazendo no lado terico.

2.5. Teclado Hacks

teclados de computador so ainda a principal forma de interagir com um computador depois


de mais de 60 anos. Alex Pentland, diretor acadmico do MIT Media Laboratory, comentou
certa vez: "Desculpa a expresso, mas mictrios dos homens so mais inteligentes do que
os computadores. Computadores so isolados do que est ao seu redor." [1]
[1] Citado em Sara Reese Hedberg, "busca MIT Media Lab para computadores perceptivo,"
Intelligent Systems e suas aplicaes, IEEE, julho / 1998 agosto
Como tinkerers, podemos implementar novas formas de interagir com o software,
substituindo as chaves com dispositivos que so capazes de sentir o ambiente. Desmontar
um teclado de computador revela uma forma muito simples (e barato) do dispositivo. O
corao dele uma pequena placa. normalmente um circuito cheiro verde ou marrom com
dois conjuntos de contatos a duas camadas de plstico que prendem as conexes entre as
chaves diferentes. Se voc remover o circuito e usar uma ponte de arame para dois
contatos, voc ver uma letra aparecer na tela do computador. Se voc sair e comprar um
detector de movimento, sensores e ligar este seu teclado, voc ver uma chave a ser
pressionada cada vez que algum anda na frente do computador. Mapa isso ao seu
programa favorito, e voc fez o seu computador to esperto quanto um urinol. Aprender
sobre hacking teclado um alicerce fundamental da prototipagem fsica e computao.
2.6. Ns amamos sucata!
Pessoas jogam fora um monte de tecnologia nos dias de hoje: antigas impressoras,
computadores, mquinas de escritrio estranho, equipamentos tcnicos, e at mesmo um
monte de material militar. Houve sempre um grande mercado para essa tecnologia em
excesso, especialmente entre os jovens e / ou hackers mais pobres e aqueles que esto
apenas comeando. Este mercado se tornam evidentes em Ivrea, onde desenvolvemos

Arduno. A cidade costumava ser a sede da empresa Olivetti. Eles haviam se tornado os
computadores desde a dcada de 1960, em meados de 1990, jogaram tudo em ferrosvelhos na regio. Estes esto cheios de peas de computador, componentes eletrnicos e
dispositivos estranhos de todos os tipos. Ns passamos inmeras horas l, comprando todo
tipo de engenhocas por muito pouco dinheiro e pirataria em nossos prottipos. Quando voc
pode comprar um mil alto-falantes para muito pouco dinheiro, voc obrigado a chegar a
alguma idia no final. Acumular lixo e atravess-la antes de comear a construir algo a partir
do zero.
2.7. Hacking Brinquedos
Os brinquedos so uma fantstica fonte de tecnologia barata de reutilizao, como
evidenciado pela prtica de circuit bending mencionado anteriormente. Com a atual afluncia
de milhares de muito baratos brinquedos de alta tecnologia da China, voc pode criar idias
rpidas com alguns gatos barulhentos e um par de espadas de luz. Eu tenho feito isso h
alguns anos para chegar aos meus alunos a compreender que a tecnologia no
assustador ou de difcil abordagem. Um dos meus recursos favoritos o livreto "Low Tech
Sensores

atuadores"

por

Usman

Haque

Somlai-Adam

Fischer

(lowtech.propositions.org.uk). Eu acho que eles tm perfeitamente descritos desta tcnica


em que o manual, e eu tenho usado desde ento.

Captulo 3. A plataforma Arduno

Arduno composto de duas partes principais: a placa Arduno, que a pea de hardware
que voc trabalha, quando voc construir seus objetos, bem como a IDE Arduno, o pedao
de software que voc executa em seu computador. Voc usa o IDE para criar um desenho
(um pequeno programa de computador) que voc enviar para a placa Arduno. O desenho
conta a bordo o que fazer.
No muito tempo atrs, trabalhando em hardware significava construir circuitos a partir do

zero, usando centenas de componentes diferentes, com nomes estranhos como resistor,
capacitor, indutor, transistor, e assim por diante.
Cada circuito foi "wired" para fazer uma aplicao especfica, e fazer mudanas necessrias
para voc cortar fios, conexes de solda, e muito mais. Com o surgimento das tecnologias
digitais e microprocessadores, estas funes, uma vez que foram realizadas com fios, foram
substitudos por programas de software.
Com o software fcil modificar a hardware. Com poucas teclas pressionadas, voc pode
mudar radicalmente a lgica de um dispositivo e tente duas ou trs verses na mesma
quantidade de tempo que voc levaria para soldar um par de resistores.

3.1. O hardware Arduno


A placa Arduno uma placa do microcontrolador pequeno, que um circuito pequeno (o
conselho) que contm um computador inteiro em um pequeno chip (o microcontrolador).
Este computador , pelo menos, umas mil vezes menos potente que o MacBook que estou
usando para escrever isso, mas muito mais barato e muito til para construir dispositivos
interessantes. Olhe para a placa Arduno: voc ver um chip preto com 28 "pernas" do chip
que o ATmega168, o corao de sua placa.
Ns (a equipe Arduno) ter colocado no frum todos os componentes que so necessrios
para este microcontrolador para funcionar corretamente e para se comunicar com o
computador. Existem muitas verses desta placa, o que usaremos ao longo deste livro o
Duemilanove Arduno, que o mais simples de usar e melhor para se aprender. No entanto,
estas instrues se aplicam a verses anteriores do conselho, incluindo o mais recente
Arduno Diecimila eo antigo NG Arduno. Figura 3-1 mostra o Duemilanove Arduno; Figura
3-2 mostra o Arduno NG.
Nestas ilustraes, voc ver a placa Arduno. Na primeira, todos os conectores pode ser
um pouco confuso. Aqui est uma explicao do que cada elemento do conselho de
administrao :
3.1.1. 14 pinos de E / S Digital (pinos 0-13)
Estes podem ser entradas ou sadas, que especificado pelo desenho que voc criar no
IDE.
3.1.2. 6 pinos analgico (pinos 0-5)
Estes pinos de entrada analgica dedicada tomar valores analgicos (ou seja, as leituras de
tenso de um sensor) e convert-los em um nmero entre 0 e 1023.
3.1.3. 6 sada analgica pinos (pinos 3, 5, 6, 9, 10 e 11)
Estes so realmente seis dos pinos digitais que podem ser reprogramados para a sada
analgica utilizando o desenho que voc criar no IDE.
A placa pode ser alimentada atravs de porta USB do seu computador, a maioria dos
carregadores USB ou um adaptador AC (9 volts recomendado, ponta barril 2.1mm, centro
positivo). Se no houver nenhuma fonte de alimentao conectado tomada de poder, o

poder vir da placa USB, mas assim que voc conecte uma fonte de alimentao, o
conselho vai us-la automaticamente.
Observao:

Se voc estiver usando o antigo Arduno-NG ou Arduno Diecimila, voc

precisar configurar o jumper de seleo de alimentao (marcado PWR_SEL na placa)


para especificar EXT (externo) ou alimentao USB. Este jumper pode ser encontrada entre
o plugue do adaptador AC e porta USB.
Figura 3-1. O Duemilanove Arduno

Figure 3-2. The Arduno NG

3.2. O software (IDE)


O IDE (Integrated Development Environment) um programa especial em execuo no
computador que permite escrever esboos para a placa Arduno, em uma linguagem simples
modelado aps o processamento (www.processing.org) lngua. A mgica acontece quando
voc pressiona o boto que envia o desenho para a placa: o cdigo que voc escreveu
traduzido para a linguagem C (que geralmente bastante difcil para um iniciante de usar), e
passado para o compilador avr-gcc , uma importante pea de software de fonte aberta que
faz a traduo final para a lngua entendida pelo microcontrolador. Esta ltima etapa
bastante importante, porque onde Arduno torna a sua vida simples, escondendo o mximo
possvel das complexidades da programao de microcontroladores.
O ciclo de programao Arduno basicamente o seguinte:
1. Ligue sua placa em uma porta USB no seu computador.
2. Escreva um esboo que trar a bordo a vida.
Faa o Upload deste esboo para a instalao por meio da conexo USB e aguarde alguns
segundos para a instalao reiniciar. A placa executa o programa que voc escreveu.
Nota: Nota: Instalar Arduno no Linux um pouco complicado no momento da redao deste
texto. Veja www.Arduno.cc/playground/Learning/Linux para obter instrues completas.
3.3. Instalando o Arduno em seu computador
Para programar a placa Arduno, primeiro voc deve baixar o ambiente de desenvolvimento
(IDE) daqu iwww.Arduno.cc/en/Main/Software.. Escolha a verso correta para seu sistema
operacional.
Baixe o arquivo e clique duplo nele para descompact-lo, o que ir criar uma pasta chamada
verso] Arduno [como Arduno-0012. Arraste a pasta para onde voc gostaria que fosse: o
ambiente de trabalho, sua pasta / Applications (em um Mac), ou o C: \ Program Files (no
Windows). Agora sempre que voc quiser executar o IDE Arduno, voc ir abrir a pasta
Arduno, e d um duplo clique no cone do Arduno. No faa isso apenas ainda, embora, h
mais um passo para executar.

Observao: Observao: Se voc tiver qualquer problema executando o IDE Arduno,


consulte o Captulo 7, soluo de problemas. Agora voc deve instalar os drivers que
permitem que o computador para falar com sua placa atravs da porta USB.
3.4. Instalao de drivers: Macintosh
Procure a pasta Drivers dentro da pasta do Arduno-0012 e faa duplo clique no arquivo
chamado FTDIUSBSerialDriver_x_x_x.dmg (x_x_x ser substitudo com o nmero da verso
do driver, por exemplo FTDIUSBSerialDriver_v2_2_9_Intel.dmg). Clique duas vezes o dano.
Arquivo para mont-lo.
Nota: Nota: Se voc estiver usando um Mac baseado em Intel, como um MacBook,
MacBook Pro, MacBook Air, Mac Pro, ou baseados em Intel Mac Mini ou iMac, no se
esquea

de

instalar

driver

com

"Intel"

em

seu

nome

como

em

FTDIUSBSerialDriver_v2_2_9_Intel.dmg. Se voc no estiver usando um Mac baseado em


Intel, instale um sem "Intel" em seu nome.

Em seguida, instalar o software do pacote FTDIUSBSerialDriver clicando duas vezes nele.


Siga as instrues fornecidas pelo instalador e digite a senha de um usurio administrativo,
se solicitado. No final deste processo, reinicie o computador para se certificar de que os
drivers esto corretamente carregados. Agora ligue a placa em seu computador. A luz PWR
no conselho deve aparecer eo LED amarelo chamado "L" deve comear a piscar. Se no,
veja o Captulo 7, soluo de problemas.
3.5. Instalando Drivers: Windows
Ligue a placa Arduno no computador, quando a janela Novo Hardware aparecer, o Windows
ir primeiro tentar encontrar o driver no site do Windows Update.
Windows XP ir pedir para verificar se o Windows Update, se voc no quiser usar o
Windows Update, selecione a opo "No, no neste momento" e clique em Avanar.
Na prxima tela, escolha a opo "Instalar de uma lista ou local especfico" e clique em
Avanar. Marque a caixa "Incluir este local na pesquisa", clique em Procurar, selecione a
pasta onde voc instalou o Arduno, e selecione a Drivers \ USB FTDI pasta Drivers como o
local. Clique em OK e Avanar.

Windows Vista ou Windows Seven vai primeiro tentar encontrar o driver no Windows Update,
se isso falhar, voc pode instru-lo a olhar no FTDI \ Drivers USB pasta Drivers.
Voc vai passar por esse procedimento duas vezes, porque o primeiro computador instala o
driver de baixo nvel, em seguida, instala um cdigo que faz o olhar como uma placa de
porta serial para o computador.
Uma vez que os drivers so instalados, voc pode iniciar o IDE Arduno Arduno e comear
a usar. Em seguida, voc deve descobrir qual porta serial atribudo sua necessidade
Arduno bordo you'll essa informao para o programa mais tarde. As instrues para obter
esta informao so as seguintes sees.
3.7. Port de Identificao: Windows
No Windows, o processo um pouco mais complicado, pelo menos no incio. Abra o
Gerenciador de Dispositivos clicando no menu Iniciar, boto direito do mouse em
Computador (Vista) ou o meu computador (XP) e escolha Propriedades. No Windows XP,
clique em Hardware e escolha Gerenciador de dispositivos. No Vista, clique em Device
Manager

(ele

aparece

na

lista

de

tarefas

no

lado

esquerdo

da

janela).

Procure o dispositivo Arduno na lista do "Portas (COM & LPT)". O Arduno vai aparecer
como uma porta serial USB e ter um nome como COM3, como mostrado na Figura 3-4.
Figura 3-4. O Gerenciador de Dispositivos do Windows mostrando todas as portas seriais
disponveis

Nota: Nota: Em algumas mquinas Windows, a porta COM tem um nmero maior que 9;
essa numerao cria alguns problemas ao Arduno est tentando se comunicar com ele.
Consulte o Captulo 7, soluo de problemas para obter ajuda sobre este problema.
Uma vez que voc descobriu a atribuio de porta COM, voc pode selecionar a porta a
partir do menu Ferramentas> Port Serial no IDE Arduno. Agora, o ambiente de
desenvolvimento do Arduno pode falar com a placa Arduno e program-lo.

Captulo 4. Introduo ao Arduno


Agora voc vai aprender a construir e programar um dispositivo interativo.
4.1. Anatomia de um dispositivo interactivo

Todos os objetos que ir construir com Arduno seguem um padro muito simples, que ns
chamamos de Dispositivo Interativo. O dispositivo interativo um circuito eletrnico que
capaz de perceber o ambiente atravs de sensores (componentes eletrnicos que
convertem as medies do mundo real em sinais eltricos). O dispositivo que processa as
informaes que recebe dos sensores com o comportamento que implementado como
software. O aparelho ser ento capaz de interagir com o mundo usando atuadores,
componentes eletrnicos que podem converter um sinal eltrico em uma ao fsica.
Figura 4-1. O dispositivo interactivo

4.2. Sensores e atuadores


Sensores e atuadores so os componentes eletrnicos que permitem que um pedao de
eletrnica para interagir com o mundo. Como o microcontrolador um computador muito
simples, s pode processar sinais eltricos (um pouco como os impulsos eltricos que so
enviados entre os neurnios em nossos crebros). Para a luz sentido, a temperatura, ou
outras quantidades fsicas, ele precisa de algo que pode convert-los em eletricidade. Em
nosso corpo, por exemplo, os olhos converte luz em sinais que so enviados ao crebro
atravs dos nervos. Em eletrnica, podemos usar um dispositivo simples, chamado de um
resistor dependente da luz (um LDR ou photoresistor), que pode medir a quantidade de luz

que o atinge e relat-lo como um sinal de que pode ser entendido pelo microcontrolador.
Uma vez que os sensores foram lidos, o dispositivo tem a informao necessria para
decidir como reagir. O processo de tomada de deciso feita pelo microcontrolador, ea
reao realizada por atuadores. Em nossos corpos, por exemplo, os msculos recebem
sinais eltricos do crebro e convert-los em um movimento. No mundo eletrnico, essas
funes

poderiam

ser

desempenhadas

por

uma

luz

ou

um

motor

eltrico.

Nas sees seguintes, voc vai aprender a ler diferentes tipos de sensores e controle de
diferentes tipos de actuadores.
4.3. Piscando um LED
O LED piscando esboo o primeiro programa que voc deve executar para testar se sua
placa Arduno est funcionando e est configurado corretamente. Tambm geralmente o
primeiro exerccio de programao que algum faz quando aprender a programar um
microcontrolador. Um diodo emissor de luz (LED) um pequeno componente eletrnico que
um pouco como uma lmpada, mas mais eficiente e requer menor voltagem para operar.
Sua placa Arduno vem com um LED pr-instalado. marcado como "L". Voc tambm
pode

adicionar

seu

prprio

LED

de

conexo

como

mostrado

na

Figura

4-2.

K indica o catodo (negativo) ou mais curtos, indica um anodo (positivo), ou mais de chumbo.
Depois que o LED est ligado, voc precisa dizer o que fazer Arduno. Isto feito atravs de
cdigo, ou seja, uma lista de instrues que damos o microcontrolador para ele fazer o que
queremos.
Figura 4-2. Ligar um LED para Arduno

Em seu computador, v abrir a pasta onde voc copiou o IDE Arduno. D um duplo clique
no cone do Arduno para inici-lo. Selecione File> New e voc ser solicitado a escolher um
nome de pasta sketch: este o lugar onde o seu esboo Arduno ser armazenado. Nome
que Blinking_LED e clique em OK. Em seguida, digite o seguinte texto (Exemplo 4-1) no
editor de desenho Arduno (a janela principal do IDE Arduno). Voc tambm pode baix-lo
www.makezine.com / getstartedArduno. Ele deve aparecer como mostrado na Figura 4-3.
Exemplo 4-1. Programa LED piscando
#define LED 13 // LED connected to
// digital pin 13
void setup()
{
pinMode(LED, OUTPUT);

// sets the digital

// pin as output
}
void loop()
{
digitalWrite(LED, HIGH);
delay(1000);

// waits for a second

digitalWrite(LED, LOW);
delay(1000);

// turns the LED on


// turns the LED off

// waits for a second

Figura 4-3. O IDE Arduno com o seu primeiro programa carregado

Agora que o cdigo est na sua IDE, voc precisa verificar se ele est correto. Pressione o
boto "Confirmar" (Figura 4-3 mostra a sua localizao), se tudo estiver correto, voc ver a
mensagem "Compiler done" aparecer na parte inferior do IDE Arduno. Esta mensagem
significa que o IDE Arduno traduziu seu desenho em um programa executvel que pode ser
executado pelo driver, um pouco como um arquivo. Exe no Windows ou um arquivo app. Em
um Mac.
Neste ponto, voc pode carreg-lo na placa: pressione o upload para o I / O boto Cmara
(veja a Figura 4-3). Isso ir redefinir a bordo, obrigando-o a parar o que est fazendo e ouvir
as instrues provenientes da porta USB. O IDE Arduno envia o desenho atual do conselho,
que ir armazen-lo em sua memria e, eventualmente, execut-lo.
Voc ver algumas mensagens aparecerem na rea de preto na parte inferior da janela, e
logo acima dessa rea, voc ver a mensagem "Done uploading" parece que voc saiba o
processo foi concludo corretamente. Existem dois LEDs, marcado RX e TX, no conselho,
estes flash toda vez que um byte enviado ou recebido pela diretoria. Durante o processo
de upload, eles continuam piscando.
Se voc no v a piscar LEDs, ou se voc receber uma mensagem de erro, em vez de
"Done uploading", ento h um problema de comunicao entre o computador eo Arduno.
Certifique-se de que voc tenha selecionado a porta serial direito (ver Captulo 3), no menu
Ferramentas> Port Serial. Alm disso, verifique o menu Ferramentas> Cmara para
confirmar que o modelo correto de Arduno selecionado l.
Se voc ainda estiver tendo problemas, consulte o Captulo 7, soluo de problemas.
Uma vez que o cdigo est em sua placa Arduno, ele vai ficar l at voc colocar outro
programa sobre ela. O esquema vai sobreviver se a placa reinicializada ou desligada, um
pouco como os dados no disco do seu computador.
Supondo que o desenho tenha sido carregado corretamente, voc ver o LED "L" ligue para
um segundo e, em seguida, desligar por um segundo. Se voc instalou um LED separadas,
como mostrado na Figura 4-2, que o LED pisca, tambm. O que voc acabou de escrever e
correu um programa de computador, ou esboo, como so chamados os programas
Arduno. Arduno, como eu mencionei antes, um pequeno computador, e ele pode ser

programado para fazer o que quiser. Isso feito usando uma linguagem de programao
para escrever uma srie de instrues do IDE Arduno, que o transforma em um arquivo
executvel para a sua placa Arduno.
Vou mostrar prximo como entender o desenho. Primeiro de tudo, o Arduno executa o
cdigo de cima para baixo, para a primeira linha no topo a primeira leitura, em seguida, ela
se move para baixo, um pouco como a forma como a reproduo de um player de vdeo
como o QuickTime Player ou Windows Media Player move da esquerda para a direita,
mostrando onde o filme estiver.

4.4. Passe-me o queijo parmeso

Observe a presena de chaves, que so usadas para agrupar linhas de cdigo. Estes so
particularmente teis quando voc quer dar um nome a um grupo de instrues. Se voc
estiver no jantar e voc perguntar a algum: "Por favor me passe o queijo parmeso," isto d
incio a uma srie de aes que esto resumidos a pequena frase que voc acabou de dizer.
Como ns somos seres humanos, tudo vem naturalmente, mas todas as aes individual
minsculo necessrio para fazer isso devem ser especificados para o Arduno, porque no
to poderoso como o nosso crebro. Assim, para agrupar uma srie de instrues, voc fura
a (antes de seu cdigo e um) depois.
Voc pode ver que existem dois blocos de cdigo que so definidos dessa forma aqui. Antes
de cada uma delas existe um comando estranho:
void setup ()
Esta linha d um nome a um bloco de cdigo. Se voc fosse escrever uma lista de
instrues

que

ensinam

Arduno

como

passar

parmeso,

voc

escreveria

passTheParmesan (void) no incio de um bloco, e esse bloco se tornaria uma instruo que
voc pode ligar de qualquer lugar do cdigo Arduno. Esses blocos so chamados de
funes. Se depois disto, voc escreve passTheParmesan () em qualquer lugar no seu
cdigo, Arduno ir executar as instrues e continuar de onde parou.

4.5. Arduno no para Quitters


Arduno espera duas funes, existe uma configurao chamada setup() e outra chamada
loop ().
setup () - onde voc coloca todo o cdigo que voc deseja executar uma vez no incio do
seu programa.
loop () - contm o ncleo do seu programa, que executado repetidas vezes. Isso feito
porque Arduno, no como regular o seu computador que pode executar vrios programas
ao mesmo tempo e os programas no podem parar. Quando voc ligar a placa, o cdigo
executado, quando quiser parar, basta deslig-lo.
4.6. Escrevendo comentrios
Qualquer texto que comea com / / ignorado pelo Arduno. Essas linhas so comentrios,
que so as notas que voc deixa no programa por si mesmo, para que voc possa se
lembrar do que voc fez quando escreveu, ou para outra pessoa, para que eles possam
compreender o seu cdigo.
muito comum ao escrever um pequeno cdigo, faa o upload para o dispositivo, e diga:
"Ok, estou nunca vai ter que tocar essa droga de novo!" para realizar somente seis meses
depois que voc precisa para atualizar o cdigo ou corrigir um erro. Neste ponto, voc abrir
o programa, e se voc no incluiu comentrios no programa original, voc vai pensar: "Uau,
que confuso! Onde eu comeo?" medida que avanamos ao longo, voc ver alguns
truques de como fazer seus programas mais legveis e fceis de manter.

4.7. O Cdigo, Passo a Passo


Na primeira, voc pode considerar este tipo de explicao meia desnecessria, um pouco
como quando eu estava na escola e eu tinha que estudar Dante da Divina Comedia (cada
aluno italiano tem que passar por isso, bem como um outro livro chamado I promessi sposi,
ou Os noivos, oh, os pesadelos). Para cada linha dos poemas, havia uma centena de linhas
de comentrio! No entanto, a explicao ser muito mais til aqui como voc passar a
escrever seus prprios programas.

// Exemplo 01 : Piscando um LED


Um comentrio uma forma til para ns a escrever pequenas notas. O comentrio do ttulo
anterior apenas nos lembra que este programa, Exemplo 4-1, piscar um LED.
#define LED 13 // conectar o LED
// para o pino digital 13

#define como uma busca automtica que substitui o seu cdigo, neste caso est dizendo
ao Arduno para escrever o nmero 13 cada vez que a palavra LED aparece. A substituio
a primeira coisa que fez quando voc clicar em verificar ou Upload de I / O Board (voc
nunca v os resultados da substituio, tal como feito nos bastidores). Ns estamos
usando esse comando para especificar que o LED piscando e que est ligado ao pino 13 do
Arduno.
voidsetup ()
Esta linha conta ao Arduno que o prximo bloco de cdigo ser chamado setup(). (Com
essa inaugurao suporte curly, um bloco de cdigo comea).
pinMode(LED, OUTPUT); // sets the digital
// pin as output
Finalmente, uma instruo muito interessante. pinMode conta Arduno como configurar um
pino certo. Pinos Digital pode ser usado como entrada ou sada. Neste caso, precisamos de
um pino de sada para controlar o nosso LED, para que coloque o nmero do PIN e seu
modo dentro dos parnteses. pinMode uma funo, e as palavras (ou nmeros)
especificada dentro dos parnteses so argumentos. Entrada e sada so constantes na
linguagem Arduno. (Como variveis, constantes so atribudos valores, exceto que os
valores constantes so pr-definidas e nunca mudam.)
{ Esse fechamento das Chaves significa o fim da funo setup ().
void loop()
{

loop () onde voc especifica o comportamento principal do seu dispositivo interativo. Vai
ser repetido muitas e muitas vezes at mudar a placa off.
digitalWrite(LED, HIGH); // turns the LED on
Como diz o comentrio, digitalWrite () capaz de ligar (ou desligar) Qualquer pino que foi
configurado como uma sada. O primeiro argumento (neste caso, LED) especifica que o pino
deve ser ligado ou desligado (lembre-se que o LED um valor constante que se refere ao
pino 13, ento este o pino que est ligado). O segundo argumento pode girar o pino
(HIGH) ou desligado (LOW).
Imagine que cada pino de sada uma tomada de energia minsculo, como aqueles que
tm nas paredes de seu apartamento. os europeus so 230 V, as americanas so de 110 V.
O Arduno trabalha em um mais modesto 5 V. mgica aqui quando o software torna-se
hardware. Quando voc escreve digitalWrite(LED, HIGH), ele manda para o pino de sada
o valor de 5 V, e se voc ligar um LED, ele acender. Ento neste momento no seu cdigo,
uma instruo no software faz algo acontecer no mundo fsico, controlando o fluxo de
eletricidade para o pino. Ligar e desligar o pino de agora vamos traduzi-los em algo mais
visvel de um ser humano, o LED o nosso atuador.
delay(1000);

// aguardar por um segundo

Arduno tem uma estrutura muito bsica. Portanto, se voc quer que as coisas aconteam
com certa regularidade, dizemos a ele para se sentar calmamente e no fazer nada at a
hora de ir para a prxima etapa. (atraso), basicamente, faz com que o processador se sentar
l e no fazer nada para a quantidade de milissegundos que voc passar como um
argumento. Milisegundos milhares de segundos, portanto, 1000 milissegundos equivalem a
1 segundo. Assim, o LED permanece em um segundo aqui.
digitalWrite(LED, LOW);

// turns the LED off

Esta instruo agora desliga o LED que estava anteriormente ligado. Por que ns usamos
HIGH e LOW? Bem, uma conveno antiga em eletrnica digital. HIGH significa que o
pino est ligado, e no caso do Arduno, ser de 5 V. LOW significa 0 V. Voc tambm pode
substituir esses argumentos mentalmente ON e OFF.

Aqui, demora um segundo. O LED ficar desligado por um segundo.


} Esta Chave marca o encerramento da funo de loop.
Em suma, este programa faz isto:
nomeia o pino 13 como uma sada (apenas uma vez no incio)
Entra em um loop
Liga o LED conectado ao pino 13
Espera por um segundo
Desliga o LED conectado ao pino 13
Espera por um segundo
Remonta ao incio do loop
Espero que isso no era muito doloroso. Voc aprender mais sobre como o programa para
que voc v atravs dos exemplos mais tarde. Antes de passarmos para a prxima seo,
eu quero que voc jogue com o cdigo. Por exemplo, reduzir o montante de atraso, com
diferentes nmeros de pulsos e fora de forma que voc pode ver diferentes padres de
piscar. Em particular, voc deve ver o que acontece quando voc faz a prazos muito
pequenos, mas o uso atrasos diferentes para dentro e fora. H um momento em que algo
estranho acontece, esse "algo" vai ser muito til quando voc aprender sobre modulao por
largura de pulso mais adiante neste livro.
4.8. O que estaremos construindo
Eu sempre fui fascinado pela luz e pela capacidade de controlar diferentes fontes de luz
atravs da tecnologia. Eu tenho a sorte de trabalhar em alguns projetos interessantes que
envolvem o controle de luz e fazendo-a interagir com as pessoas. Arduno realmente bom
nisso. Ao longo deste livro, vamos trabalhar sobre a forma de projeto "Luzes interativo",
Utilizando Arduno como uma maneira de aprender as noes bsicas de como so

construdos os dispositivos interativos.


Na prxima seo, eu vou tentar explicar os conceitos bsicos de eletricidade de uma forma
que de um engenheiro, mas no vai se assustar com um programa novo no Arduno.
4.9 O que eletricidade
4.10. Usando um boto para controlar o LED
Piscando um LED foi fcil, mas eu no acho que voc ficaria se sane sua luminria de mesa
foram a piscar continuamente quando voc estava tentando ler um livro. Portanto, voc
precisa aprender a control-lo. Em nosso exemplo anterior, o LED era nosso atuador, e
nosso Arduno era control-lo. O que est faltando para completar o quadro um sensor.
Neste caso, vamos usar a forma mais simples de sensor disponvel: um boto.
Se voc fosse para alm de ter um boto, voc ver que um aparelho muito simples: dois
pedaos de metal separados por uma mola e uma tampa de plstico que, quando
pressionadas traz os dois pedaos de metal em contato. Quando os pedaos de metal so
separados, no h circulao de corrente no boto (um pouco como quando uma vlvula da
gua est fechada); quando pression-lo, ns fazemos uma conexo.
Para monitorar o estado de um interruptor, h uma instruo nova

para Arduno que voc

vai aprender: a digitalRead () funo.


digitalRead() verifica se h qualquer tenso aplicada ao pino que voc especificar entre
parnteses, e retorna um valor de alta ou baixa, dependendo das suas concluses. As
outras instrues que temos utilizado at agora no retornou qualquer informao que
apenas executa o que ns pedimos que eles fizessem. Mas esse tipo de funo um pouco
limitado, porque ele vai nos forar a ficar com seqncias de instrues muito previsveis,
sem a entrada do mundo exterior. Com digitalRead (), ns podemos "fazer uma pergunta" ao
Arduno e receber uma resposta que pode ser armazenado em algum lugar na memria e
usada para tomar decises imediatamente ou mais tarde.
Construa o circuito mostrado na Figura 4-6. Para construir isso, voc precisar obter
algumas peas (estes vm a calhar quando se trabalha com outros projetos tambm):

Materiais:
Solderless breadboard: RadioShack www.radioshack.com () Nmero da pea 276-002,
Maker Shed (www.makershed.com) MKKN3 nmero da pea. O Apndice A uma
introduo breadboard solda.
kit fio cortado Pr-jumper: RadioShack 276-173, Maker Shed MKKN4
Um resistor de 10K Ohm: RadioShack 271-1335 (5-pack), SparkFun (www.sparkfun.com)
COM-08374
Momentary boto interruptor ttil: SparkFun COM-00097
Figura 4-6. Ligar um boto

Nota: em vez de comprar fio jumper precut, voc tambm pode comprar 22 AWG fio
conexo solid-core em bobinas pequenas e corte e tir-lo usando cortadores de arame e fio
strippers. Vamos dar uma olhada no cdigo que iremos usar para controlar o LED com o
nosso boto:

Exemplo 4-2. Ligue o LED quando o boto for pressionado


#define LED 13 // the pin for the LED (a varivel LED = a sada 13)
#define BUTTON 7 // the input pin where the (a varivel BUTTON = a sada 7)
// pushbutton is connected
int val = 0;

// val will be used to store the state


// of the input pin

void setup() {
pinMode(LED, OUTPUT);

// tell Arduno LED is an output

pinMode(BUTTON, INPUT); // and BUTTON is an input


}
void loop(){
val = digitalRead(BUTTON); // read input value and store it
// check whether the input is HIGH (button pressed)
if (val == HIGH) {
digitalWrite(LED, HIGH); // turn LED ON
} else {
digitalWrite(LED, LOW);
}
}

No Arduno, selecione Arquivo> Novo (se voc tiver outro sketch aberto, voc pode querer
salvar primeiro). Quando Arduno pede-lhe para o nome da sua pasta de novo desenho,
PushButtonControl tipo. Digite o cdigo do Exemplo 4-2 em Arduno (ou baix-lo
www.makezine.com/getstartedArduno e col-lo na IDE Arduno). Se tudo estiver correto, o
LED acende quando voc pressiona o boto.
4.11. Como isso funciona?
Tenho introduziu dois novos conceitos com este programa exemplo: funes que retornam o
resultado de seu trabalho e se a declarao.
A instruo if possivelmente a mais importante instruo em linguagem de programao,
porque permite que o computador (e lembre-se, o Arduno um pequeno computador) para
tomar decises. Aps a palavra-chave se, voc tem que escrever uma pergunta entre
parnteses, e se a resposta, ou resultado, verdade, o primeiro bloco de cdigo ser

executado, caso contrrio, o bloco de cdigo depois o resto vai ser executado. Repare que
eu usei o smbolo == ao invs de =. O primeiro usado quando duas entidades que so
comparados e retorna TRUE ou FALSE, o ltimo atribui um valor a uma varivel. Certifiquese que voc use o correto, porque muito fcil cometer esse erro e utilizar apenas =, em
que o programa caso voc nunca vai funcionar. Eu sei, porque aps 25 anos de
programao, eu ainda cometia esse erro.
Segurando o dedo no boto enquanto voc precisa de luz no prtico. Embora o faria
pensar em quanta energia voc est desperdiando quando voc anda afastado de uma
lmpada que voc deixou em diante, precisamos descobrir como fazer a vara em boto ".
4.12. Um circuito, um Mil Comportamentos
A grande vantagem de eletrnica digital programvel sobre a eletrnica clssica se torna
agora evidente: Eu vou te mostrar como implementar diversos "comportamentos", utilizando
o mesmo circuito eletrnico como na seo anterior, apenas mudando o software.
Como eu mencionei antes, no muito prtico ter que segurar o dedo no boto para ter a
luz acesa. Por isso, deve programar algum tipo de "memria", sob a forma de um
mecanismo de software que vai se lembrar quando temos apertou o boto e mantiver a luz
acesa mesmo depois de ter liberado.
Para fazer isso, vamos usar o que chamado de varivel. (Ns usamos um j, mas eu no
expliquei.) Uma varivel um lugar na memria do Arduno onde voc pode armazenar
dados. Pense nisso como uma daquelas notas pegajosas que voc usa para lembrar algo,
como um nmero de telefone: voc pega um, voc escrever "Luisa 02 555 1212" nele, e
col-la no seu monitor de computador ou sua geladeira. Na linguagem Arduno, igualmente
simples: voc acabou de decidir que tipo de dados que voc deseja armazenar (um nmero
ou um texto, por exemplo), dar-lhe um nome, e quando voc quiser, voc pode armazenar
os dados ou recuper-la . Por exemplo:
int val = 0;
int significa que a varivel vai armazenar um nmero inteiro, val o nome da varivel, e = 0
atribui um valor inicial de zero.

Uma varivel, como o nome sugere, pode ser modificado em qualquer lugar no seu cdigo,
de modo que, mais tarde, em seu programa, voc pode escrever:
val = 112;
reatribui um novo valor, 112, para a varivel.
Nota: J repararam que em Arduno, todas as instrues, com uma exceo (# define),
termina com um ponto e vrgula? Isso feito para que o compilador (a parte do Arduno que
transforma seu desenho em um programa que o microcontrolador pode ser executado) sabe
que sua declarao est terminado e um novo est comeando. Lembre-se de us-lo o
tempo todo, com excluso de qualquer linha que comea com # define. O # define so
substitudos pelo compilador antes do cdigo traduzido em um arquivo executvel Arduno.
No programa seguinte, Val usado para armazenar o resultado de digitalRead (); qualquer
Arduno comea a partir da entrada termina na varivel e vai ficar l at que uma outra linha
de cdigo alter-lo. Observe que as variveis que uso de um tipo de memria chamada
RAM. muito rpido, mas quando voc desliga o seu conselho, todos os dados
armazenados na RAM so perdidas (o que significa que cada varivel redefinido para seu
valor inicial quando a placa ligada novamente). Seus prprios programas so
armazenados na memria flash, este o mesmo tipo usado por seu telefone mvel para
armazenar nmeros de telefone, que mantm seu contedo mesmo quando a placa for
desligada.
Vamos agora usar outra varivel a se lembrar se o LED tem que ficar ligado ou desligado
depois de soltar o boto. Exemplo 4-3 uma primeira tentativa de conseguir:
Exemplo 4-3. Ligue o LED quando o boto for pressionado e mant-lo depois ele liberado:
#define LED 13 // the pin for the LED
#define BUTTON 7 // the input pin where the
// pushbutton is connected
int val = 0;

// val will be used to store the state


// of the input pin

int state = 0; // 0 = LED off while 1 = LED on

void setup()
{
pinMode(LED, OUTPUT); // tell Arduno LED is an output
pinMode(BUTTON, INPUT); // and BUTTON is an input
}
void loop()
{
val = digitalRead(BUTTON); // read input value and store it
// check if the input is HIGH (button pressed)
// and change the state
if (val == HIGH)
{
state = 1 - state;
}
if (state == 1)
{
digitalWrite(LED, HIGH); // turn LED ON
}
else
{
digitalWrite(LED, LOW);
}
}
Agora vamos testar este cdigo. Voc vai notar que ele funciona um pouco. Voc ver que
a luz muda to rapidamente que voc no pode defini-lo como ligado ou desligado com um
boto.
Vejamos as partes interessantes do cdigo: estado uma varivel que armazena 0 ou 1
para lembrar se o LED est ligado ou desligado. Depois que o boto liberado, temos que
inicializar a 0 (LED desligado).
Mais tarde, lemos o estado atual do boto, e se for pressionado (val == HIGH), mudamos
estado 0-1, ou vice-versa. Fazemos isso usando um pequeno truque, como o estado s

pode ser 1 ou 0. O truque que eu uso envolve uma pequena expresso matemtica baseada
na idia de que 1-0 1 e 1-1 0: state = 1 - state;
A linha pode no fazer muito sentido em matemtica, mas na programao. O smbolo =
significa "atribuir o resultado do que est atrs de mim para o nome da varivel antes de
mim", neste caso, o novo valor de estado atribudo o valor de 1 menos o valor antigo do
estado.
Mais tarde no programa, voc pode ver que ns usamos estado para descobrir se o LED
deve ser ligado ou desligado. Como eu mencionei isso leva a resultados um pouco
esquisitos.
Os resultados so esquisitos por causa da maneira como lemos no boto. Arduno muito
rpido, que executa suas prprias instrues internas a uma taxa de 16 milhes de
execues por segundo que poderia muito bem ser a execuo de alguns milhes de linhas
de cdigo por segundo. Ento isso significa que enquanto o seu dedo est pressionando o
boto, Arduno pode estar lendo a posio do boto de alguns milhares de vezes e alterar o
estado em conformidade. Assim, os resultados acabam por ser imprevisvel, mas pode ser
desligado quando voc queria-o, ou vice-versa. Como at mesmo um relgio quebrado est
certo duas vezes por dia, o programa pode mostrar o comportamento correto de vez em
quando, mas a maior parte do tempo ele vai estar errado.
Como podemos corrigir isso? Bem, preciso detectar o momento exato em que o boto
pressionado, que o nico momento que temos de mudar de estado. Do jeito que eu gosto
de fazer armazenar o valor de val antes de eu ler um novo, o que me permite comparar a
posio atual do boto com o anterior e mudana de estado apenas quando o boto se torna
HIGH aps ser LOW.
Exemplo 4-4 contm o cdigo para fazer isso:

Exemplo 4-4. Ligue o LED quando o boto for pressionado e mant-lo depois de ele
lanado agora com uma frmula nova e melhorada!
#define LED 13 // the pin for the LED
#define BUTTON 7 // the input pin where the
// pushbutton is connected
int val = 0;

// val will be used to store the state


// of the input pin

int old_val = 0; // this variable stores the previous


// value of "val"
int state = 0;

// 0 = LED off and 1 = LED on

void setup() {
pinMode(LED, OUTPUT);

// tell Arduno LED is an output

pinMode(BUTTON, INPUT); // and BUTTON is an input


}
void loop(){
val = digitalRead(BUTTON); // read input value and store it
// yum, fresh
// check if there was a transition
if ((val == HIGH) && (old_val == LOW)){
state = 1 - state;
}
old_val = val; // val is now old, let's store it
if (state == 1) {
digitalWrite(LED, HIGH); // turn LED ON
} else {
digitalWrite(LED, LOW);
}
}

Captulo 5.
Entrada e Sada Avanado
O que voc aprendeu apenas no captulo 4 so as operaes mais elementares que
podemos fazer em Arduno: Sada digital de controle e leitura de entrada digital. Se o
Arduno fosse algum tipo de linguagem humana, estas seriam duas letras do seu alfabeto.
Considerando que existem apenas cinco letras deste alfabeto, voc pode ver quanto mais o
trabalho

que

temos

que

fazer

antes

de

podermos

escrever

poesia

Arduno.

frmula melhorada!
5.1. Tentando Out Em outros sensores / Off
Agora que voc aprendeu a usar um boto, voc deve saber que existem muitos outros
sensores muito bsicos que funcionam segundo o mesmo princpio:
5.1.1. Chaves
Assim como um boto, mas no muda automaticamente o estado quando liberado
5.1.2. Termostatos
Uma opo que se abre quando a temperatura atinge um valor definido
5.1.3. Sensores magnticos (tambm conhecido como " reed switch")
Tem dois contatos que se renem quando esto perto de um m, usado por alarmes para
detectar quando uma janela aberta
5.1.4. Tapete switches (chaves tipo tapete)
tapetes pequenos, que voc pode colocar em um tapete ou um capacho para detectar a
presena de um ser humano (ou gato pesado)

5.1.5. Tilt switches


Um componente eletrnico simples que contm dois contatos e uma bola de metal pouco
(ou uma gota de mercrio, mas eu no recomendo o uso deles) Um exemplo de um
interruptor de inclinao chamado de sensor de inclinao. Figura 5-1 mostra o interior de
um modelo tpico. Quando o sensor na posio vertical, as pontes de bola os dois
contatos, e isso funciona como se voc tivesse pressionado um boto. Quando este sensor
de inclinao, a bola se move, o contato aberto, que como se voc tivesse lanado um

boto. Usando este componente simples, voc pode aplicar, por exemplo, interfaces
gestuais que reagem quando um objeto movido ou agitado.
Figura 5-1. O interior de um sensor de inclinao

Outro sensor que voc pode querer experimentar o sensor de infravermelho como
encontrado em alarmes (tambm conhecido como um sensor infravermelho passivo ou PIR,
ver Figura 5-2). Este pequeno dispositivo dispara quando um ser humano vivo (ou outro ser)
move-se dentro de sua proximidade. uma maneira simples de detectar o movimento.
Figura 5-2. sensor PIR tpica

Voc deve experimentar agora, olhando para todos os possveis dispositivos que tm dois
contatos que fechar, como o termostato que ajusta a temperatura da sala (use um velho que
no mais ligado), ou apenas colocar dois contatos ao lado do outro e soltando gua sobre
elas.

Por exemplo, usando o exemplo final do captulo 4 e um sensor PIR, voc poderia fazer a
sua lmpada responder presena de seres humanos, ou voc poderia usar um switch
inclinao para construir aquele que se desliga quando est inclinado de um lado.
5.2. Controlar a luz com PWM
Com o conhecimento que voc ganhou at agora, voc pode criar um lmpada interativa
que pode ser controlada e no apenas com uma perfurao para ligar / desligar, mas talvez
de uma forma que um pouco mais elegante. Uma das limitaes dos exemplos LED
piscando que temos utilizado at agora que voc pode acender a luz apenas on e off. Uma
lmpada de fantasia interativa deve ser regulvel. Para resolver este problema, podemos
utilizar um pequeno truque que faz um monte de coisas, como a televiso ou cinema
possvel: a persistncia da viso.
Como sugeri, aps o primeiro exemplo no captulo 4, se voc mudar os nmeros na funo
de atraso at que voc no v o LED piscando mais, voc vai notar que o LED parece ser
regulado em 50% do seu brilho normal. Agora mude os nmeros para que o LED est em
cima um quarto do tempo que ele est fora. Execute o desenho e voc ver que o brilho
de aproximadamente 25%. Essa tcnica chamada de modulao de largura de pulso
(PWM), uma maneira elegante de dizer que se voc piscar o LED rpido o suficiente, voc
no v-lo piscar mais, mas voc pode mudar o seu brilho, alterando a relao entre o tempo
e em o tempo fora. Figura 5-3 mostra como isso funciona.
Essa tcnica tambm funciona com outros dispositivos alm de um LED. Por exemplo, voc
pode mudar a velocidade de um motor da mesma maneira.
Ao experimentar, ver que ao piscar o LED colocando atrasos em seu cdigo um pouco
inconveniente, porque assim voc quiser ler um sensor ou enviar dados pela porta serial, o
LED ir piscar enquanto ele est esperando por voc para terminar a leitura do sensor.
Felizmente, o processador usado pela placa Arduno tem um pedao de hardware que
podem controlar muito eficientemente trs LEDs piscando quando seu desenho outra
coisa. Este hardware implementado em pinos 9, 10 e 11, que pode ser controlado pela
instruo analogWrite ().

Figura 5-3. PWM em ao

Por exemplo, escrevendo analogWrite (9128) ir definir o brilho de um LED conectado ao


pino 9 para 50%. Por que 128? analogWrite () espera um nmero entre 0 e 255 como um
argumento, onde 255 significa cheio de brilho e 0 significa desligado.
Nota: Tendo em trs canais muito bom, porque se voc comprar LEDs, vermelho, verde,
azul e voc pode misturar suas luzes e fazer a luz de qualquer cor que voc quiser!
Vamos test-lo. Construa o circuito que voc v na figura 5-4. Note que os LEDs so
polarizados: o pino de longa durao (positivo) deve ir para a direita, eo pino curto (negativo)
para a esquerda. Alm disso, a maioria dos LEDs tem um lado negativo achatado.

Figura 5-4. LED ligado ao pino PWM

Em seguida, crie um novo programa no Arduno e utilizao Exemplo 5-1 (voc tambm
pode fazer download de exemplos de cdigo www.makezine.com/getstartedArduno:
Exemplo 5-1. Fade um LED dentro e para fora como em um computador Apple dormir
#define LED 9 // the pin for the LED
int i = 0;

// We'll use this to count up and down

void setup() {
pinMode(LED, OUTPUT); // tell Arduno LED is an output
}
void loop(){
for (i = 0; i < 255; i++) { // loop from 0 to 254 (fade in)
analogWrite(LED, i);

// set the LED brightness

delay(10); // Wait 10ms because analogWrite


// is instantaneous and we would
// not see any change
}

for (i = 255; i > 0; i--) { // loop from 255 to 1 (fade out)


analogWrite(LED, i); // set the LED brightness
delay(10);

// Wait 10ms

}
}

Agora voc tem uma caracterstica replicada uma fantasia de um computador porttil (talvez
um pouco de um desperdcio usar o Arduno para algo to simples). Vamos usar os
conhecimentos para melhorar a nossa luz.
Adicione ao circuito que foi utilizado para ler um boto (voltar no Captulo 4) para este
breadboard. Veja se voc pode fazer isso sem olhar para a prxima pgina, porque eu quero
que voc comear a pensar no fato de que cada circuito elementar que eu mostro aqui um
bloco de construo para fazer projetos cada vez maiores. Se voc precisa de espreitar o
futuro, no se preocupe, a coisa mais importante que voc gasta algum tempo pensando
sobre como poderia parecer.
Para criar esse circuito, voc ter que combinar o circuito que voc acabou de construir
(mostrado na Figura 5-4) com o circuito de boto mostrado na Figura 4-6. Se voc quiser,
voc pode simplesmente construir ambos os circuitos em diferentes partes da breadboard,
voc tem espao de sobra. No entanto, uma das vantagens da breadboard (ver Anexo A)
que h um par de carris horizontalmente na parte inferior e superior. Um deles de cor
vermelha (para o positivo) e outra azul ou preta (por terra).
Esses trilhos so usados para distribuir energia e terra de onde ela necessria. No caso do
circuito que voc precisa para construir esse exemplo, voc tem dois componentes (ambos
resistores) que precisa ser conectado ao GND (terra) pino do Arduno. Porque o Arduno tem
dois pinos GND, voc pode simplesmente ligar estes dois circuitos exatamente como
mostrado em cada uma das duas figuras, basta ligar os dois at o Arduno, ao mesmo
tempo. Ou, voc pode ligar um fio de ferro da breadboard do terreno para um dos pinos
GND no Arduno, e ento tomar os fios que esto ligados ao GND nos valores e conect-los
ao invs do ferrovirio cho breadboard.
Se voc no est pronto para tentar isso, no se preocupe: basta fio at ambos os circuitos

para o Arduno, como mostrado nas figuras Figura 4-6 e Figura 5-4. Voc ver um exemplo
que usa o solo e os trilhos breadboard positivo no captulo 6.
Voltando para o prximo exemplo, se temos apenas um boto, como que vamos controlar
o brilho de uma lmpada? Estamos indo para aprender ainda uma outra tcnica de design
de interao: detectando quanto tempo um boto foi pressionado. Para fazer isso, eu preciso
atualizar Exemplo 4-5 do captulo 4 para adicionar escurecimento. A idia construir uma
"interface" no qual um release de imprensso e ao acende a luz e desligar, e pressione e
segure o brilho mudanas ao.
Vamos dar uma olhada no esboo:
Exemplo 5-2. Ligue o LED quando o boto for pressionado e mant-lo depois de seu
lanamento, incluindo simples de salto. Se o boto for mantido mudar o brilho.
#define LED 9

// the pin for the LED

#define BUTTON 7 // input pin of the pushbutton


int val = 0;

// stores the state of the input pin

int old_val = 0; // stores the previous value of "val"


int state = 0;

// 0 = LED off while 1 = LED on

int brightness = 128;

// Stores the brightness value

unsigned long startTime = 0; // when did we begin pressing?


void setup() {
pinMode(LED, OUTPUT); // tell Arduno LED is an output
pinMode(BUTTON, INPUT); // and BUTTON is an input
}
void loop() {
val = digitalRead(BUTTON); // read input value and store it
// yum, fresh

// check if there was a transition


if ((val == HIGH) && (old_val == LOW)) {
state = 1 - state; // change the state from off to on
// or vice-versa
startTime = millis(); // millis() is the Arduno clock
// it returns how many milliseconds
// have passed since the board has
// been reset.
// (this line remembers when the button
// was last pressed)
delay(10);
}
// check whether the button is being held down
if ((val == HIGH) && (old_val == HIGH)) {
// If the button is held for more than 500ms.
if (state == 1 && (millis() - startTime) > 500) {
brightness++; // increment brightness by 1
delay(10);

// delay to avoid brightness going

// up too fast
if (brightness > 255) { // 255 is the max brightness
brightness = 0; // if we go over 255
// let's go back to 0
}
}
}
old_val = val; // val is now old, let's store it

if (state == 1) {
analogWrite(LED, brightness); // turn LED ON at the
// current brightness level
} else {
analogWrite(LED, 0); // turn LED OFF
}
}

Agora, experiment-lo. Como voc pode ver, o nosso modelo de interao est tomando
forma. Se voc pressionar o boto e solt-lo imediatamente, voc deixa a lmpada ligada ou
desligada. Se voc mantenha o boto pressionado, as mudanas de brilho, basta deixar ir
quando tiver atingido o brilho desejado.
5.3. Use um sensor de luz em vez do Teclado
Agora vamos tentar um experimento interessante. Tome um sensor de luz, como o retratado
na Figura 5-5. Voc pode obter um pacote com cinco destes da RadioShack (Nmero da
pea 276-1657).
Figura 5-5. resistor dependente da luz (LDR)

Na escurido, a resistncia de um resistor dependente da luz (LDR) bastante elevada.


Quando voc brilhar alguma luz para ele, a resistncia cai rapidamente e torna-se um
condutor de eletricidade razoavelmente bom. assim uma espcie de interruptor de luzativado.
Construa o circuito que acompanha Exemplo 4-2 (consulte "Usando um boto para controlar
o LED" no Captulo 4), em seguida, enviar o cdigo do Exemplo 4-2 para o Arduno.

Agora ligue o LDR para a breadboard em vez do boto. Voc vai notar que se voc cobrir o
LDR com as mos, o LED apaga-se. Descubra a LDR, ea luz passa. Voc apenas construiu
o seu primeiro verdadeiro sensor LED-driven. Isto importante porque pela primeira vez
neste livro, ns estamos usando um componente eletrnico que no um dispositivo
mecnico simples: um sensor rico real.
5.4. Entrada analgica
Como voc aprendeu na seo anterior, Arduno capaz de detectar a existncia de uma
tenso aplicada a um dos seus pinos e relat-lo atravs do digitalRead () funo. Este tipo
de ou / ou resposta muito bem em muitas aplicaes, mas o sensor de luz que usamos s
capaz de dizer-nos no apenas se h luz, mas tambm a quantidade de luz que existe.
Esta a diferena entre uma on / off sensor (que nos diz que se algo est l) e um sensor
analgico, cujo valor muda continuamente. Para ler este tipo de sensor, precisamos de um
tipo diferente de pinos.
Na parte inferior direita da placa Arduno, voc ver seis pinos marcados "Analog In", que
so os pinos especiais que podem dizer-nos no s a existncia de uma voltagem aplicada
a eles, mas se assim for, tambm o seu valor. Ao utilizar o analogRead () funo, podemos
ler a tenso aplicada a um dos pinos. Essa funo retorna um nmero entre 0 e 1023, o que
representa tenses entre 0 e 5 volts. Por exemplo, se h uma tenso de 2,5 V aplicada ao
pino nmero 0, analogRead (0) retorna 512.
Se voc agora construir o circuito que voc v na figura 5-6, com um resistor de 10k, e
executar o cdigo listado no Exemplo 5-3, voc ver a bordo LED (voc pode tambm inserir
o seu prprio LED nos pinos 13 e GND, conforme mostrado em "Piscando um LED" no
Captulo 4) a piscar a uma taxa que dependente da quantidade de luz que atinge o sensor.

Figura 5-6. Um circuito sensor analgico

Exemplo 5-3. Blink LED a uma taxa especificada pelo valor da entrada analgica
#define LED 13 // the pin for the LED
int val = 0; // variable used to store the value
// coming from the sensor
void setup() {
pinMode(LED, OUTPUT); // LED is as an OUTPUT
// Note: Analogue pins are
// automatically set as inputs
}
void loop() {
val = analogRead(0); // read the value from
// the sensor
digitalWrite(13, HIGH); // turn the LED on
delay(val); // stop the program for
// some time
digitalWrite(13, LOW); // turn the LED off
delay(val); // stop the program for
// some time
}

Agora, tente Exemplo 5-4, mas antes que voc faa, voc precisa modificar seu circuito. D
uma olhada na Figura 5-4 e gancho novamente at que o LED de 9 pinos, como mostrado.
Como voc j tem algum material sobre a breadboard, voc precisa encontrar um lugar na
breadboard onde o LED, fios e resistores no coincidir com o circuito de LDR.
Exemplo 5-4. Ajuste o brilho do LED com um brilho determinado pelo valor da entrada
analgica
#define LED 9 // the pin for the LED
int val = 0; // variable used to store the value
// coming from the sensor
void setup() {
pinMode(LED, OUTPUT); // LED is as an OUTPUT
// Note: Analogue pins are
// automatically set as inputs
}
void loop() {
val = analogRead(0); // read the value from
// the sensor
analogWrite(LED, val/4); // turn the LED on at
// the brightness set
// by the sensor
delay(10); // stop the program for
// some time
}

Nota: especificar o brilho que dividindo por 4 val, porque analogRead () retorna um nmero
at 1023, e analogWrite () aceita um mximo de 255.

5.5. Outros sensores analgicos


Utilizando o mesmo circuito que voc viu na seo anterior, voc pode ligar um monte de
outros sensores resistivos que trabalham em mais ou menos da mesma maneira. Por
exemplo, voc poderia conectar um termistor, que um simples dispositivo cuja resistncia
varia com a temperatura. No circuito, eu mostrei-lhe como mudanas na resistncia tornarse mudanas na tenso que pode ser medido pelo Arduno.
Se voc trabalha com um termistor, estar ciente de que no h uma conexo direta entre o
valor que voc ler e medir a temperatura real. Se voc precisar de uma leitura exata, voc
deve ler os nmeros que saem do pino anlogo ao medir com um termmetro real. Voc
pode colocar estes nmeros lado a lado em uma mesa e encontrar uma forma de calibrar os
resultados anlogos para as temperaturas do mundo real.
At agora, temos apenas um LED usado como um dispositivo de sada, mas como podemos
ler os valores reais que Arduno a leitura do sensor? Ns no podemos fazer a placa de
piscar os valores em cdigo Morse (bem, ns poderamos, mas h uma maneira mais fcil
para os seres humanos para ler os valores). Para isso, podemos ter Arduno falar para um
computador atravs de uma porta serial, que descrito na prxima seo.
5.6. Comunicao Serial
Voc aprendeu no incio deste livro que Arduno tem uma conexo USB que utilizado pelo
IDE para carregar cdigo para o processador. A boa notcia que essa conexo tambm
pode ser usado pelos esboos que para escrever ao Arduno para enviar dados de volta
para o computador ou para receber comandos a partir dele. Para este efeito, vamos usar um
objeto de srie (um objeto uma coleo de recursos que so agrupadas para a
convenincia de pessoas a escrever esboos).
Este objeto contm todos os cdigos que ns precisamos para enviar e receber dados.
Agora vamos usar o ltimo circuito que construmos com o photoresistor e enviar os valores
que so lidos para o computador. Digite este cdigo em um novo desenho (voc pode
tambm baixar o cdigo de www.makezine.com / getstartedArduno):

Exemplo 5-5. Enviar para o computador os valores lidos da entrada analgica 0 Certifique-se
de clicar em "Serial Monitor" depois que voc enviar
#define SENSOR 0 // select the input pin for the
// sensor resistor
int val = 0; // variable to store the value coming
// from the sensor
void setup() {
Serial.begin(9600); // open the serial port to send
// data back to the computer at
// 9600 bits per second
}
void loop() {
val = analogRead(SENSOR); // read the value from
// the sensor
Serial.println(val); // print the value to
// the serial port
delay(100); // wait 100ms between
// each send
}

Depois que voc enviou o cdigo para o seu Arduno, pressione o Monitor Serial" boto no
IDE Arduno (o boto mais direita na barra de ferramentas), voc vai ver os nmeros de
rolamento passado na parte inferior da janela. Agora, qualquer software que possa ler a
partir da porta serial pode falar com Arduno. Existem muitas linguagens de programao
que permitem escrever programas em seu computador que pode conversar com a porta
serial. Processing (www.processing.org) um timo complemento para Arduno, porque as
linguagens e IDEs so to semelhantes.

5.7. Conduo cargas maiores (Motors, lmpadas, etc)


Cada um dos pinos em uma placa Arduno pode ser usado para dispositivos de energia que
utilizam at 20 miliamperes: esta uma pequena quantidade de corrente, apenas o
suficiente para conduzir um LED. Se voc tentar algo como uma unidade de motor, o pino ir
imediatamente parar de trabalhar, e poderia queimar o processador todo. Para acionar
cargas maiores, como motores ou lmpadas incandescentes, precisamos usar um
componente externo que pode mudar essas coisas dentro e fora e isso impulsionado por
um pino do Arduno. Um tal dispositivo chamado de transistor MOSFET-ignore o
engraado nome um interruptor eletrnico que pode ser acionado pela aplicao de uma
tenso a um dos seus trs pinos, cada um dos quais chamado de porto. algo como o
interruptor de luz que usamos em casa, onde a ao de um dedo acender a luz e desligar
substitudo por um pino na placa Arduno enviando tenso para a porta do MOSFET.
Nota: MOSFET significa "metal-oxide semiconductor-transistores de efeito de campo". um
tipo especial de transistor que opera com base no princpio de efeito de campo. Tal significa
que a energia fluir atravs de uma pea de material semicondutor (entre o dreno ea fonte de
pinos), quando uma voltagem aplicada ao pino Gate. Como a porta isolada do resto
atravs de uma camada de xido de metal, no h fluxo de corrente do Arduno no
MOSFET, o que torna muito simples a interface. Eles so ideais para ligar e desligar cargas
grandes em altas freqncias.
Na Figura 5-7, voc pode ver como voc deve usar um MOSFET como o IRF520 para ligar e
desligar um pequeno motor acoplado a um ventilador. Voc tambm vai notar que o motor
tem sua fonte de alimentao do conector de 9 V na placa Arduno. Este outro benefcio do
MOSFET: permite-nos dirigir dispositivos cuja alimentao difere da utilizada pelo Arduno.
Como o MOSFET est conectada ao pino 9, tambm podemos usar analogWrite () para
controlar a velocidade do motor atravs de PWM.
5.8. Sensores Complexos
Ns definimos sensores complexos como aqueles que produzem um tipo de informao que
requer um pouco mais de um digitalRead () ou um analogRead () para ser usado. Estes
circuitos so geralmente de pequeno porte com um microcontrolador pequeno dentro que
pr-processando as informaes.
Alguns dos sensores complexos disponveis incluem ultra-rangers, rangers infravermelho, e
acelermetro. Voc pode encontrar exemplos de como us-los em nosso site na seo

"Tutoriais" seo (www.Arduno.cc / pt / Tutorial / homepage).


Fazendo Tom Igoe falar de coisas (O'Reilly) tem uma extensa cobertura destes sensores e
muitos outros sensores complexos.
Figura 5-7. Um circuito de motor para Arduno

Safari Books Open Source Mtodos C Microprocessadores Safari Books Engenharia de Software
Programao Hardware Massimo Banzi O'Reilly Media, Inc. Faa Introduo ao Arduno, 1 Edio

Captulo 6. Conversando com o Cloud

Nos captulos anteriores, voc aprendeu os fundamentos do Arduno e os blocos de


construo fundamentais sua disposio. Deixe-me lembr-lo que compe o "Arduno
Alphabet":
6.1. Sada Digital
6.1.1. Sada Digital
Foi utilizado para controlar um LED, mas, com o circuito adequado, ele pode ser usado para
controle de motores, fazer sons, e muito mais.
6.1.2. Sada Analgica
Isso nos d a capacidade de controlar a luminosidade do LED, no apenas por sua vez
ligado ou desligado. Podemos at mesmo controlar a velocidade de um motor com ele.
6.1.3. Entrada Digital
Isto permite-nos ler o estado de sensores simples, como botes ou interruptores de
inclinao.
6.1.4. Entrada Analgica
Podemos ler os sinais dos sensores que emitem um sinal contnuo, que no apenas ligado
ou desligado, como um potencimetro ou um sensor de luz.
6.1.5. Comunicao Serial
Isso nos permite comunicar com um computador e trocar dados ou simplesmente
acompanhar o que est acontecendo com o desenho que est sendo executado no Arduno.
Neste captulo, vamos ver como montar uma aplicao de trabalho com o que voc
aprendeu nos captulos anteriores. Este captulo deve mostrar como cada nico exemplo
pode ser usado como um bloco de construo de um projeto complexo.
Aqui onde o designer wannabe em mim sai. Estamos indo para fazer a verso vigsimo
primeiro sculo de uma lmpada clssico pelo meu designer italiano favorito, Joe Colombo.
O objeto que vamos construir inspirado por uma lmpada chamada "Aton" a partir de 1964.

Fig. 6.1 A lmpada acabado

A luz, que voc pode ver na Figura 6-1, uma esfera simples, sentadas em uma base com
um grande buraco para manter a esfera de rolar para fora de sua mesa. Este design permite
orientar a luz em diferentes direes.

Em termos de funcionalidade, ns queremos construir um dispositivo que se conectar


Internet, buscar a atual lista de artigos sobre a Marca blog (blog.makezine.com) e contar
quantas vezes as palavras "paz", "amor", e "Arduno" so mencionados. Com esses valores,
vamos gerar uma cor e exibi-lo na lmpada. A lmpada em si tem um boto que podemos
usar para ligar e desligar, e um sensor de luz para ativao automtica.

6.2. Planejamento
Vejamos o que queremos atingir e que pedaos de que precisamos. Primeiro de tudo,

precisamos Arduno para ser capaz de se conectar Internet. Como a placa Arduno tem
apenas uma porta USB, no pode conect-lo diretamente em uma conexo com a Internet,
ento precisamos descobrir como a ponte entre as duas. Normalmente o que as pessoas
fazem executar um aplicativo em um computador que ir se conectar Internet, processar
os dados e enviar Arduno alguns bits de informaes simples destilada.
Arduno um computador simples com uma pequena memria, no pode processar
arquivos grandes com facilidade, e quando ligamos para um feed RSS chegaremos muito
detalhado arquivo XML que exigiria muito mais RAM. Ns vamos implementar um proxy para
simplificar o XML usando a linguagem Processing.
Processamento
O processamento Arduno onde veio. Ns amamos essa linguagem e us-lo para ensinar
programao para iniciantes, bem como a construo de cdigo bonito. Processing e
Arduno so a combinao perfeita. Outra vantagem que o processamento de cdigo
aberto e funciona em todas as principais plataformas (Mac, Linux e Windows). Ele tambm
pode gerar aplicaes standalone, que funcionam nessas plataformas. Alm do mais, a
comunidade de processamento animada e prestativa, e voc pode encontrar milhares de
programas de exemplo do premade.
O proxy funciona o seguinte para ns: ele faz o download do feed RSS do makezine.com e
extratos de todas as palavras do arquivo XML resultante. Em seguida, passando por todas
elas, ele conta o nmero de vezes que a "paz", "amor" e "Arduno" aparecem no texto. Com
esses trs nmeros, vamos calcular um valor de cor e envi-lo a Arduno. O conselho vai
devolver a quantidade de luz medida pelo sensor e mostr-la na tela do computador.
Do lado do hardware, vamos combinar o exemplo de boto, a exemplo do sensor de
luminosidade, o PWM controle de LED (multiplicado por 3!) E comunicao serial.
Como Arduno um dispositivo simples, vamos necessidade de codificar a cor de uma forma
simples. Vamos usar a forma padro que as cores so representadas em HTML: # seguido
de seis dgitos hexadecimais.
Nmeros hexadecimais so teis, porque cada nmero de 8 bits armazenada em
exatamente dois caracteres, com nmeros decimais, isso varia de um a trs caracteres. A

previsibilidade tambm torna o cdigo mais simples: vamos esperar at vermos um #, ento
lemos os seis caracteres que seguem em um buffer (uma varivel usada como uma rea de
armazenagem temporria de dados). Finalmente, voltemo-nos cada grupo de dois
caracteres em um byte que representa o brilho de um dos trs LEDs.
6.3. Codificao
Existem dois desenhos que voc vai ser executado: um esboo de processamento, e um
esboo Arduno. Aqui est o cdigo para o esboo de processamento. Voc pode baix-lo
www.makezine.com / getstartedArduno.
Exemplo 6-1. peas da lmpada Arduno rede do cdigo inspirada por um post de blog por
Tod E. Kurt (todbot.com)
Import processing.serial.*;
String feed = "http://blog.makezine.com/index.xml";
int interval = 10; // retrieve feed every 60 seconds;
int lastTime;
int love

// the last time we fetched the content

= 0;

int peace = 0;
int Arduno = 0;
int light = 0; // light level measured by the lamp
Serial port;
color c;
String cs;
String buffer = ""; // Accumulates characters coming from Arduno
PFont font;
void setup() {
size(640,480);

frameRate(10); // we don't need fast updates


font = loadFont("HelveticaNeue-Bold-32.vlw");
fill(255);
textFont(font, 32);
// IMPORTANT NOTE:
// The first serial port retrieved by Serial.list()
// should be your Arduno. If not, uncomment the next
// line by deleting the // before it, and re-run the
// sketch to see a list of serial ports. Then, change
// the 0 in between [ and ] to the number of the port
// that your Arduno is connected to.
//println(Serial.list());
String ArdunoPort = Serial.list()[0];
port = new Serial(this, ArdunoPort, 9600); // connect to Arduno
lastTime = 0;
fetchData();
}
void draw() {
background( c );
int n = (interval - ((millis()-lastTime)/1000));
// Build a colour based on the 3 values
c = color(peace, love, Arduno);
cs = "#" + hex(c,6); // Prepare a string to be sent to Arduno
text("Arduno Networked Lamp", 10,40);
text("Reading feed:", 10, 100);
text(feed, 10, 140);
text("Next update in "+ n + " seconds",10,450);
text("peace" ,10,200);
text(" " + peace, 130, 200);

rect(200,172, peace, 28);


text("love ",10,240);
text(" " + love, 130, 240);
rect(200,212, love, 28);
text("Arduno ",10,280);
text(" " + Arduno, 130, 280);
rect(200,252, Arduno, 28);
// write the colour string to the screen
text("sending", 10, 340);
text(cs, 200,340);
text("light level", 10, 380);
rect(200, 352,light/10.23,28); // this turns 1023 into 100
if (n <= 0) {
fetchData();
lastTime = millis();
}
port.write(cs); // send data to Arduno
if (port.available() > 0) { // check if there is data waiting
int inByte = port.read(); // read one byte
if (inByte != 10) { // if byte is not newline
buffer = buffer + char(inByte); // just add it to the buffer
}
else {
// newline reached, let's process the data
if (buffer.length() > 1) { // make sure there is enough data
// chop off the last character, it's a carriage return
// (a carriage return is the character at the end of a

// line of text)
buffer = buffer.substring(0,buffer.length() -1);
// turn the buffer from string into an integer number
light = int(buffer);
// clean the buffer for the next read cycle
buffer = "";
// We're likely falling behind in taking readings
// from Arduno. So let's clear the backlog of
// incoming sensor readings so the next reading is
// up-to-date.
port.clear();
}
}
}
}
void fetchData() {
// we use these strings to parse the feed
String data;
String chunk;
// zero the counters
love = 0;
peace = 0;
Arduno = 0;
try {
URL url = new URL(feed); // An object to represent the URL
// prepare a connection
URLConnection conn = url.openConnection();
conn.connect(); // now connect to the Website
// this is a bit of virtual plumbing as we connect

// the data coming from the connection to a buffered


// reader that reads the data one line at a time.
BufferedReader in = new
BufferedReader(new InputStreamReader(conn.getInputStream()));
// read each line from the feed
while ((data = in.readLine()) != null) {
StringTokenizer st =
new StringTokenizer(data,"\"<>,.()[] ");// break it down
while (st.hasMoreTokens()) {
// each chunk of data is made lowercase
chunk= st.nextToken().toLowerCase() ;
if (chunk.indexOf("love") >= 0 ) // found "love"?
love++; // increment love by 1
if (chunk.indexOf("peace") >= 0) // found "peace"?
peace++; // increment peace by 1
if (chunk.indexOf("Arduno") >= 0) // found "Arduno"?
Arduno++; // increment Arduno by 1
}
}
// Set 64 to be the maximum number of references we care about.
if (peace > 64) peace = 64;
if (love > 64)

love = 64;

if (Arduno > 64) Arduno = 64;


peace = peace * 4;
love = love * 4;

// multiply by 4 so that the max is 255,


// which comes in handy when building a

Arduno = Arduno * 4; // colour that is made of 4 bytes (ARGB)


}
catch (Exception ex) { // If there was an error, stop the sketch
ex.printStackTrace();
System.out.println("ERROR: "+ex.getMessage());
}

H duas coisas que voc precisa fazer antes que o esboo de processamento ser
executado corretamente. Primeiro, voc precisa dizer ao processamento para gerar o tipo de
letra que estamos usando para o esboo. Para fazer isso, criar e salvar o desenho. Ento,
com o desenho ainda em aberto, clique no menu Ferramentas de Processamento, selecione
Criar fonte. Selecione o tipo de letra chamado HelveticaNeue-Bold, escolher 32 para o
tamanho da fonte e, em seguida, clique em OK.
Segundo, voc ter de confirmar que o desenho est usando a porta serial correta para falar
com Arduno. Voc precisa esperar at que voc tenha montado o circuito Arduno e enviou
o esboo Arduno antes que voc possa confirmar isto. Na maioria dos sistemas, este
esboo de processamento ir correr bem. No entanto, se voc no v nada acontecendo no
Arduno e voc no v qualquer informao do sensor de luz que aparece na tela, localize o
comentrio rotulado "NOTA IMPORTANTE" no esquema de processamento e siga as
instrues.
Aqui

est

esboo

Arduno

(tambm

disponvel

em

getstartedArduno):
Exemplo 6-2. Arduno Lmpada Networked

#define SENSOR 0
#define R_LED 9
#define G_LED 10
#define B_LED 11
#define BUTTON 12
int val = 0; // variable to store the value coming from the sensor
int btn = LOW;
int old_btn = LOW;
int state = 0;

www.makezine.com

char buffer[7] ;
int pointer = 0;
byte inByte = 0;
byte r = 0;
byte g = 0;
byte b = 0;
void setup() {
Serial.begin(9600); // open the serial port
pinMode(BUTTON, INPUT);
}
void loop() {
val = analogRead(SENSOR); // read the value from the sensor
Serial.println(val);

// print the value to

// the serial port


if (Serial.available() >0) {
// read the incoming byte:
inByte = Serial.read();
// If the marker's found, next 6 characters are the colour
if (inByte == '#') {
while (pointer < 6) { // accumulate 6 chars
buffer[pointer] = Serial.read(); // store in the buffer
pointer++; // move the pointer forward by 1
}
// now we have the 3 numbers stored as hex numbers
// we need to decode them into 3 bytes r, g and b
r = hex2dec(buffer[1]) + hex2dec(buffer[0]) * 16;
g = hex2dec(buffer[3]) + hex2dec(buffer[2]) * 16;
b = hex2dec(buffer[5]) + hex2dec(buffer[4]) * 16;

pointer = 0; // reset the pointer so we can reuse the buffer


}
}
btn = digitalRead(BUTTON); // read input value and store it
// Check if there was a transition
if ((btn == HIGH) && (old_btn == LOW)){
state = 1 - state;
}
old_btn = btn; // val is now old, let's store it
if (state == 1) { // if the lamp is on
analogWrite(R_LED, r); // turn the leds on
analogWrite(G_LED, g); // at the colour
analogWrite(B_LED, b); // sent by the computer
} else {
analogWrite(R_LED, 0); // otherwise turn off
analogWrite(G_LED, 0);
analogWrite(B_LED, 0);
}
delay(100);

// wait 100ms between each send

}
int hex2dec(byte c) { // converts one HEX character into a number
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;

}
}

6.4. Montagem do Circuito


Figura 6-2 mostra como montar o circuito. Voc precisa usar resistores de 10K para todos os
resistores mostrada no diagrama, embora voc poderia comear afastado com menores
valores para os resistores conectados LEDs.
Lembre-se do exemplo PWM no captulo 5 que os LEDs so polarizados: neste circuito, o
pino longo (positivo) deve ir para a direita, eo pino curto (negativo) para a esquerda. (A
maioria dos LEDs tm um lado negativo achatada, como mostrado na figura.)

Figura 6-2. O "Arduno Networked Lamp" circuito

Construa o circuito, conforme mostrado, usando um vermelho, um verde e um LED azul. Em


seguida, carregar os esboos em Arduno e Processing, em seguida, executar os esboos e
experiment-lo. Se voc tiver problemas, consulte o Captulo 7, "Soluo de problemas".
Agora, vamos concluir a construo, colocando a tbua de po em uma esfera de vidro. O
mais simples e mais barata forma de fazer isso comprar um IKEA "FADO candeeiro de
mesa". Agora, vendido por cerca de E.U. $ 14,99 / 14,99 / 8,99 (ahh, o luxo de ser
europeu).
Em vez de usar trs LEDs separado, voc pode usar um nico LED RGB, que tem quatro
leva saindo dela. Voc vai ligar-lo em muito da mesma forma que os LEDs mostrado na
Figura 6-2, com uma mudana: em vez de trs ligaes separadas para o pino terra em
Arduno, voc vai ter uma ligao nica (chamado de "catodo comum"), indo ao cho.
SparkFun vende RGB 4-LED para levar alguns dlares (www.sparkfun.com; Nmero da
pea 00105-COM). Alm disso, ao contrrio de LEDs discreta cor nica, a maior liderana
nesta LED RGB aquele que vai ao cho. Os trs menores leva precisar se conectar a
Arduno pinos 9, 10 e 11 (com um resistor entre os terminais e os pinos, assim como com o
vermelho em separado, verde, azul e LEDs).

6.5. Veja como mont-lo:


Descompacte a lmpada e remova o cabo que vai para a luz do fundo. Voc no ser mais
conectando-a parede.
Strap o Arduno em uma breadboard e cola quente a breadboard para a volta da lmpada.
Solde os fios mais longos para o LED RGB e cola-lo onde a lmpada costumava ser. Ligar
os fios provenientes do LED breadboard (onde foi conectado antes de sua remoo).
Lembre-se que voc s precisa de uma ligao terra, se voc estiver usando uma ligao
RGB de 4 LED.
Quer encontrar um bom pedao de madeira com um buraco que pode ser usado como um

substituto para a rea ou apenas cortar a parte superior da caixa de papelo que veio com a
luz em cerca de 5cm (ou 2 ") e fazer um buraco com dimetro beros da lmpada. Reforar
o interior da caixa de papelo usando cola quente todos ao longo das bordas para dentro, o
que tornar a base mais estvel.
Coloque a esfera na posio e colocar o cabo USB fora do top e conect-lo ao computador.
Incndio fora de seu cdigo de processamento, pressione o boto liga / desliga, e v a luz vir
vida. Como um exerccio, tente adicionar o cdigo que vai acender a lmpada quando a
sala escurece. Outros aperfeioamentos possveis so:
1. Adicionar sensores de inclinao para ativar a luz ligada ou desligada, girando em
direes diferentes.
2. Adicionar um PIR pequeno sensor para detectar quando algum est ao redor e deslig-lo
quando ningum est l para assistir.
3. Crie diferentes modos para que voc possa obter o controle manual da cor ou faz-lo
desaparecer por muitas cores.
4. Pense em coisas diferentes, experimentar e se divertir!

Captulo 7. Soluo de problemas

Chegar um momento em sua experimentao, quando nada vai estar a funcionar e voc
ter que descobrir como corrigi-lo. Soluo de problemas e depurao so artes antigas que
existem algumas regras simples, mas a maioria dos resultados so obtidos por meio de um
monte de trabalho.
Quanto mais voc trabalha com eletrnica e Arduno, mais voc vai aprender e ganhar
experincia, o que acabar por tornar o processo menos doloroso. No desanime com os
problemas que voc vai encontrar, tudo mais fcil do que parece no incio.
Como todo projeto Arduno feita com base tanto de hardware e software, haver mais de
um lugar para olhar, se algo der errado. Embora a procura de um bug, voc deve operar em
trs linhas:

7.1. Compreenso
7.1.1. Compreenso
Tente entender o mximo possvel como as peas que voc est utilizando o trabalho e
como eles esto supostamente contribuir para o projeto acabado. Esta abordagem permitir
definir uma maneira de testar cada componente separadamente.
7.1.2. Simplificao e segmentao
Os antigos romanos costumavam dizer divide et impera: dividir para reinar. Tente quebrar
(mentalmente) o projeto em seus componentes, usando o conhecimento que voc tem e
descobrir onde a responsabilidade de cada componente comea e termina.
7.1.3. Excluso e da segurana
Ao investigar, testar cada componente separadamente, de modo que voc pode estar
absolutamente certos de que cada um trabalha por si s. Voc ir gradualmente aumentar a
confiana sobre quais partes do projeto esto fazendo seu trabalho e que so duvidosas.
A depurao o termo usado para descrever este processo aplicado ao software. A lenda

diz que foi usado pela primeira vez por Grace Hopper na dcada de 1940, quando os
computadores onde a maioria eletromecnica, e um deles parou de funcionar porque os
insetos reais pego nos mecanismos.
Muitos dos erros de hoje no so mais fsicos: eles esto virtual e invisvel, ao menos em
parte. Por isso, eles exigem um processo por vezes moroso e chato de ser identificado.

7.2. Testando a Cmara


E se o primeiro exemplo, "piscar um LED," no funcionou? No que fosse um pouco
deprimente? Vamos descobrir o que fazer.
Antes de comear a culpar o seu projeto, voc deve se certificar de que algumas coisas
esto em ordem, como pilotos de avio fazem quando passam por uma lista de verificao
para se certificar de que o avio estar voando adequadamente antes da decolagem:
Conecte seu Arduno em um plug USB no seu computador.
Verifique se o computador est ligado (sim, isso soa bobo, mas isso j aconteceu). Se a luz
verde acende marcado PWR, isso significa que o computador est alimentando a placa. Se
o LED parece muito fraco, algo est errado com o poder: experimente um cabo USB
diferente e inspecione a porta USB do computador e conecte o Arduno USB para ver se h
algum dano. Se tudo isso falhar, tente outra porta USB no seu computador ou um
computador completamente diferente.
L Se o Arduno novo, o LED amarelo marcado ir piscar com um pouco de um padro de
nervoso, este o programa de teste que foi carregado na fbrica para testar a placa.
Se voc estiver usando uma fonte de alimentao externa e est usando um Arduno idade
(Extreme, NG, ou Diecimila), certifique-se que a alimentao est conectado e que o jumper
marcado SV1 est conectando os dois pinos que esto mais prximas ao exterior conector
de alimentao.
Nota: Quando voc est tendo problemas com outros desenhos e precisa confirmar que a
placa est funcionando, abra o primeiro "piscar um exemplo" LED no IDE Arduno e envi-lo

ao conselho. A bordo LED deve piscar em um padro regular.


Se voc passou por todas essas etapas com sucesso, ento voc pode ter certeza que seu
Arduno est funcionando corretamente.

7.3. Testando o Circuito breadboarded


Agora ligue a bordo de seu breadboard pela execuo de uma ponte a partir do V 5 e GND
para os trilhos positivos e negativos da breadboard. Se o verde PWR LED, retire os fios de
imediato. Isto significa que h um grande erro no seu circuito e voc tem um curto circuito
em algum lugar. Quando isso acontece, o conselho chama muita corrente eo poder
cortada para proteger o computador.
Nota: Se voc uma questo que pode danificar seu computador, lembre-se que em muitos
computadores, a corrente de proteo geralmente muito bom, e responde rapidamente.
Alm disso, a placa Arduno equipado com um PolyFuse ", um dispositivo de proteco de
corrente que redefine a si mesmo quando a culpa removed.If voc realmente paranico,
voc pode conectar a placa Arduno atravs de um hub USB auto-alimentado. Neste caso,
se tudo corre terrivelmente mal, o hub USB a nica que estar empurrando para cima as
margaridas, no o seu computador.
Se voc est recebendo um curto-circuito, voc tem que comear a "simplificao e
segmentao" do processo. O que voc precisa fazer passar por cada sensor no projeto e
conectar apenas um de cada vez.
A primeira coisa a partir sempre a fonte de alimentao (as conexes a partir de 5 V e
GND). Olhe ao redor e se certificar de que cada parte do circuito alimentado corretamente.
Trabalho passo a passo e fazer uma nica modificao em um momento a regra nmero
um para a fixao material. Esta regra foi martelado na minha cabea jovem, meu professor
da escola e primeira entidade patronal, Maurizio Pirola. Toda vez que estou a depurao
algo e as coisas no olham boas (e acredite, isso acontece muito), seu rosto aparece na
minha cabea dizendo "uma modificao de uma vez ... uma modificao em um momento"
e que geralmente quando eu consertar tudo. Isto muito importante, porque voc vai
saber o que resolveu o problema ( muito fcil perder de vista que essas modificaes
realmente resolveu o problema, razo pela qual to importante fazer um de cada vez).

Cada experincia de depurao vai construir em sua cabea uma base de conhecimento
"dos defeitos e possveis correes. E antes que voc perceba, voc vai se tornar um
especialista. Isso far com que voc olha muito legal, porque assim como um newbie diz:
"Isso no funciona!" voc vai dar-lhe um olhar rpido e ter a resposta em uma frao de
segundo.
7.4. Isolamento de problemas
Outra regra importante encontrar uma maneira confivel para reproduzir um problema. Se
o seu circuito se comporta de uma maneira engraada, s vezes aleatrio, tente realmente
difcil descobrir o momento exato o problema ocorre e que est causando isso. Este
processo permitir que voc pensa sobre uma possvel causa. Tambm muito til quando
voc precisa explicar para algum o que est acontecendo.
Descrevendo o problema de forma to precisa quanto possvel, tambm uma boa maneira
de encontrar uma soluo. Tente encontrar algum para explicar o problema, em muitos
casos, uma soluo ir aparecer em sua cabea como se articulam o problema. Brian W.
Kernighan e Rob Pike, em The Practice of Programming (Addison-Wesley, 1999), contam a
histria de um universitrio que "manteve um ursinho de pelcia junto ao help desk. Alunos
com bugs misteriosos foram obrigados a explicar-lhes o urso antes que eles pudessem falar
com um conselheiro do Homem. "
7.5. Problemas com o IDE
Em alguns casos, voc pode ter um problema usando a IDE Arduno, particularmente no
Windows.
Se voc receber uma mensagem de erro quando voc clique duplo no cone do Arduno, ou
se nada acontecer, tente um clique duplo no arquivo run.bat como um mtodo alternativo de
lanar Arduno.
Os usurios do Windows tambm pode executar em um problema se o sistema operativo
atribui um nmero de porta COM de COM10 ou superior a Arduno. Se isso acontecer, voc
geralmente pode convencer Windows para atribuir um menor nmero de porta a Arduno.
Primeiro, abra o Gerenciador de Dispositivos clicando no menu Iniciar, boto direito do
mouse em Computador (Vista) ou o meu computador (XP) e escolha Propriedades. No
Windows XP, clique em Hardware e escolha Gerenciador de dispositivos. No Vista, clique
em Device Manager (ele aparece na lista de tarefas no lado esquerdo da janela).

Procure os dispositivos de srie na lista do "Portas (COM & LPT)". Procurar um dispositivo
de srie que voc no est usando que numerado COM9 ou inferior. Boto direito do
mouse e escolha Propriedades no menu. Em seguida, escolha a porta na guia
Configuraes e clique em Avanado. Definir o nmero da porta COM COM10 ou superior,
clique em OK e clique em OK novamente para fechar a caixa de dilogo Propriedades.
Agora, faa o mesmo com o dispositivo da porta USB de srie que representa Arduno, com
uma mudana: atribuir o nmero da porta COM (COM9 ou inferior) que voc acabou
liberado.
Se essas sugestes no ajudarem, ou se voc est tendo um problema que no descritas
aqui, confira a pgina na soluo de problemas Arduno www.Arduno.cc / pt / / Guia de
problemas.
7.6. Como Obter Ajuda Online
Se voc est preso, no passar os dias correndo sozinho, pedir ajuda. Uma das melhores
coisas sobre o Arduno a sua comunidade. Voc sempre pode ajudar a descobrir se voc
pode descrever o seu problema tambm.
Obtenha o hbito de cortar e colar as coisas em um motor de busca e ver se algum est
falando sobre isso. Por exemplo, quando o IDE Arduno cospe para fora uma mensagem de
erro desagradvel, copiar e col-lo em uma pesquisa no Google e ver o que sai. Faa o
mesmo com pedaos de cdigo que voc est trabalhando ou apenas um nome de funo
especfica. Olhe ao seu redor: tudo j foi inventado e armazenado em algum lugar em uma
pgina web.
Para iniciar uma investigao mais aprofundada, a partir do site principal www.Arduno.cc e
olhar para o FAQ (www.Arduno.cc / pt / Main / FAQ), depois passar para o playground
(www.Arduno.cc / playground), um livremente wiki editvel que qualquer usurio pode
modificar a contribuir documentao. uma das melhores partes da filosofia fonte todo
aberto. Pessoas contribuir documentao e exemplos de qualquer coisa que voc pode
fazer com o Arduno. Antes de iniciar um projeto, pesquisar o playground e voc encontrar
um pouco de cdigo ou um diagrama de circuito para voc comear.
Se voc ainda no consegue encontrar uma resposta dessa maneira, procure o frum
(www.Arduno.cc/cgi-bin/yabb2/YaBB.pl). Se isso no ajudar, envie uma pergunta l. Pick

placa correta para o problema: existem diversas reas de software ou problemas de


hardware e at mesmo fruns em cinco lnguas diferentes. Por favor, postar informaes,
tanto quanto voc pode:
Qual placa Arduno voc est usando?
Que sistema operacional voc est usando para executar o IDE Arduno?
D uma descrio geral do que voc est tentando fazer. Post links para fichas de peas
estranhas que voc est usando.
O nmero de respostas que voc comea depende de quo bem voc formular sua
pergunta.
Suas chances aumentam se voc evitar essas coisas a todo o custo (estas regras so boas
para qualquer fruns online, no apenas Arduno's):
Escrever a sua mensagem toda em maisculas. Isso irrita muito as pessoas e como andar
com um "novato" tatuada em sua testa (em comunidades on-line, digitando em todas as
capitais considerado "gritar").
Postando a mesma mensagem em vrias partes do frum.
"Batendo" sua mensagem, colocando follow-up comentrios perguntando: "Ei, como que
ningum respondeu? ou pior ainda, simplesmente postar o texto "coliso". Se voc no
obtiver uma resposta, d uma olhada no seu anncio. Era clara a respeito? Voc forneceu
uma descrio bem redigida do problema que voc tem? Voc foi bom? Ser sempre
agradvel.
Escrever mensagens como "eu quero construir uma nave espacial usando Arduno como
posso fazer isso". Isso significa que voc quer que as pessoas fazem o seu trabalho para
voc, e esta abordagem no apenas diverso para um tinkerer real. melhor para explicar
o que deseja construir e, em seguida, perguntar uma questo especfica sobre uma parte do
projeto e lev-la de l.

A variao do ponto anterior, quando a questo claramente alguma coisa, o cartaz da


mensagem pago para fazer. Se voc perguntar a pessoas especficas, as perguntas so
felizes em ajudar, mas se voc pedir que eles faam todo o seu trabalho (e no dividir o
dinheiro), a resposta susceptvel de ser menos agradvel.
Enviar mensagens que parecem suspeitas, como trabalhos escolares e pedindo o frum
para fazer sua lio de casa. Os professores gostam de me roam os fruns e tapa esses
alunos com uma truta grande.

Apndice A.
O Breadboard
O processo de obteno de um circuito para o trabalho envolve fazer muitas mudanas at
que ela se comporta de forma adequada, um processo muito rpido, iterativo, que algo
como um equivalente electrnico para desenhar. O projeto se desenvolve em suas mos
como voc tentar combinaes diferentes. Para obter os melhores resultados, use um
sistema que permite que voc altere as conexes entre os componentes mais rpido, mais
prtico, e de forma menos destrutiva. Estes requisitos claramente exclui de solda, que um
processo demorado que coloca os componentes sob tenso cada vez que voc aquec-las
e resfri-los para baixo.
A resposta para esse problema um dispositivo muito prtico chamado solderless
breadboard. Como voc pode ver na Figura A-1, uma pequena placa de plstico cheio de
buracos, cada um dos quais contm um contato de mola. Voc pode empurrar a perna de
um componente em um dos buracos, e vai estabelecer uma conexo eltrica com todos os
outros buracos na mesma coluna vertical de buracos. Cada buraco uma distncia de 2,54
milmetros dos outros.
Porque a maioria dos componentes tem suas pernas (conhecido como techies "pins"),
espaados em que a distncia padro, chips com vrias pernas se encaixam perfeitamente.
Nem todos os contatos em um breadboard so criados iguais, existem algumas diferenas.
As linhas superior e inferior (em vermelho e azul e marcado com + e -) so conectados na
horizontal e so usados para transportar a energia atravs da placa de modo que quando
voc precisar de energia ou terra, voc pode fornec-lo muito rapidamente com um jumper (
um pequeno pedao de fio utilizado para ligar dois pontos no circuito). A ltima coisa que
voc precisa saber sobre Breadboards que no meio, h uma lacuna grande que to
grande como o tamanho de um pequeno chip. Cada linha vertical dos furos interrompido
no meio, de modo que quando voc conecta em um chip, voc no faz um curto-circuito os
pinos que esto nos dois lados do chip. Clever, hein?

Figura A-1. A breadboard solderless

Apndice B. Resistors Leitura e capacitores


Em ordem para usar as peas eletrnicas, voc precisa ser capaz de identific-los, o que
pode ser uma tarefa difcil para um novato. A maioria dos resistores que voc encontrar em
uma loja tem um corpo cilndrico com dois ps que furam para fora e ter estranhas marcas
coloridas ao seu redor. Quando os resistores primeiro comercial foram feitas, no havia
maneira de imprimir os nmeros suficientemente pequena para caber em seu corpo, os
engenheiros decidiram to inteligente que poderia apenas representar os valores com tiras
de tinta colorida.
Hoje os novatos tm que descobrir uma maneira de interpretar estes sinais. A "chave"
bastante simples: geralmente, existem quatro faixas, sendo que cada cor representa um
nmero. Um dos anis geralmente de cor dourada, esta representa a preciso desse
resistor. Para ler as tiras em ordem, segure o resistor de modo que o ouro (ou prata, em
alguns casos) faixa direita. Ento, leia as cores e mape-los para os nmeros
correspondentes. Na tabela a seguir, voc encontrar uma traduo entre as cores e seus
valores numricos.

Por exemplo, laranja, marrom preto, e as marcaes de ouro mdia 103 5%. Fcil, n?
No bem assim, porque h uma peculiaridade: o terceiro anel realmente representa o
nmero de zeros no valor. Portanto 1 0 3 1 0 realmente seguido por trs zeros, ento o
resultado final de 10.000 ohms 5%. geeks Electronics tendem a diminuir os valores
exprimindo-se em ohm quilo (de milhares de ohms) e mega ohms (em milhes de ohms),
ento um resistor ohms 10.000 geralmente reduzido para 10k, enquanto 10 milhes se
10M. Por favor note que, porque os engenheiros gostam de otimizar tudo, sobre alguns
diagramas esquemticos voc pode encontrar valores expressos em 4k7, o que significa 4,7
quilo ohms, ou 4700.
Capacitores so um pouco mais fcil: os capacitores em forma de barril (capacitores
eletrolticos) geralmente tm seus valores impressos sobre eles. O valor de um capacitor
medida em farads (F), mas a maioria dos capacitores que o encontro vai ser medido em
farads micro (F). Ento, se voc ver um capacitor marcado 100 F, de 100 micro farad
capacitor.
Muitos dos capacitores em forma de disco (de cermica) no tm as suas unidades listadas,
e utilizao de um cdigo numrico de trs dgitos que indica o nmero de pico farads
(pF). H um milho PF em um F. Similar aos cdigos de resistor, voc pode usar o terceiro
nmero para determinar o nmero de zeros para colocar aps os dois primeiros, com uma
diferena: se voc v 0-5, que indica o nmero de zeros. 6 e 7 no so usados, e 8 e 9 so
tratadas de maneira diferente. Se voc vir 8, multiplicar o nmero que o constituem dois
primeiros dgitos por 0,01, e se voc ver 9, multiplique por 0,1.

Assim,

um

marcado 104 seria 100000 pF ou 0,1 F. Um capacitor marcado 229 seria 2,2 pF.

capacitor

Apndice C.
Referncia Rpida Arduno
Aqui est uma explicao rpida de todas as instrues padro suportado pela linguagem
Arduno.
Para uma referncia mais detalhada, consulte: Arduno.cc / pt / Referncia / HomePage
C.1. ESTRUTURA
Um sketch Arduno executado em duas partes:
void setup ()
Este o lugar onde voc colocar o cdigo de inicializao as instrues que criou o
conselho antes que o loop principal do desenho iniciado.
loop (void)
Este contm o cdigo principal do seu desenho. Ela contm um conjunto de instrues que
se repetem vrias vezes at a placa desligada.
C.2. Smbolos especiais
Arduno inclui uma srie de smbolos para delinear linhas de cdigo, comentrios e blocos
de cdigo.
C.2.1. ; Ponto e vrgula ()
Cada instruo (linha de cdigo) denunciado por um ponto e vrgula. Esta sintaxe permitelhe formatar o cdigo livremente. Voc pode at mesmo colocar duas instrues na mesma
linha, contanto que voc separe-os com um ponto e vrgula. (No entanto, isso tornaria o
cdigo mais difcil de ler.)
Exemplo:
delay (100);

C.2.2. () (Chaves)
Isto usado para marcar blocos de cdigo. Por exemplo, quando voc escrever um cdigo
para o loop (), voc tem que usar colchetes antes e depois do cdigo.
Exemplo:
void loop () {
Serial.println ("ciao");
}
C.2.3. comentrios

Estes so trechos de texto ignorado pelo processador Arduno, mas so extremamente teis
para se lembrar (ou outros) do que um pedao de cdigo faz.
H dois estilos de comentrios em Arduno:
/ / Linha nica: esse texto ignorado at o fim da linha
/ * Linha mltipla:
voc pode escrever
um poema inteiro aqui
*/

C.3. CONSTANTES

Arduno inclui um conjunto de palavras-chave predefinidas com valores especiais. Alto e


baixo so usadas, por exemplo, quando voc quiser ligar ou desligar um pino Arduno.
Entrada e sada so usados para definir um pino especfico para ser e de entrada ou de
sada , o verdadeiro e o falso indicar exatamente o que seus nomes sugerem: a verdade ou
falsidade de uma condio ou expresso.

C.4. VARIVEIS
Variveis so denominadas reas de memria que o Arduno onde voc pode armazenar
dados que voc pode usar e manipular o seu esboo. Como o nome sugere, pode ser
alterado quantas vezes quiser.
Porque Arduno um processador muito simples, quando voc declara uma varivel que
voc precisa especificar o tipo. Isso significa dizer ao processador o tamanho do valor que
voc deseja armazenar.
Aqui esto os tipos de dados que esto disponveis:
C.4.1. boolean
Pode ter um dos dois valores: verdadeiro ou falso.
C.4.2. char
Possui um carter nico, como A. Como qualquer computador, armazena Arduno lo como
um nmero, mesmo que voc veja o texto. Quando chars so usadas para armazenar
nmeros, elas podem conter valores de -128 a 127.
Nota: Existem dois grandes conjuntos de caracteres disponveis em sistemas de
computador: ASCII e UNICODE. ASCII um conjunto de 127 caracteres que foi usada para,
entre outras coisas, a transmisso de texto entre os terminais de srie e sistemas
informticos de tempo partilhado, como mainframes e minicomputadores. Unicode um
conjunto muito maior de valores usados por computadores modernos sistemas operacionais
para representar caracteres em uma ampla variedade de lnguas. ASCII ainda til para a
troca de bits curto da informao em lnguas como o italiano ou Ingls que usam caracteres
latinos, nmeros arbicos, smbolos e mquina de escrever comum para a pontuao, etc.

C.4.3. byte
Detm um nmero entre 0 e 255. Tal como acontece com caracteres, bytes usar apenas um
byte de memria.

C.4.4. int
Utiliza 2 bytes de memria para representar um nmero entre -32.768 e 32.767, o mais
comum tipo de dados usado no Arduno.
C.4.5. unsigned int
Como int, usa 2 bytes, mas o prefixo unsigned significa que ele no pode armazenar
nmeros negativos, pelo que a sua escala vai de 0 a 65.535.
C.4.6. longo
Este o dobro do tamanho de um int e tem nmeros de -2.147.483.648 a 2.147.483.647.
C.4.7. unsigned long
Unsigned verso do longa, que vai de 0 a 4.294.967.295.
C.4.8. flutuar
Esta muito grande e pode armazenar valores de ponto flutuante, uma maneira elegante de
dizer que voc pode us-lo para armazenar nmeros com um ponto decimal na mesma. Ele
vai comer at 4 bytes de memria RAM preciosos e as funes que podem lidar com eles
consomem muita memria cdigo tambm. Portanto, use com moderao flutua.
C.4.9. duplo
Preciso dupla nmero de ponto flutuante, com um valor mximo de 1,7976931348623157 x
10.308. Uau, isso enorme!
C.4.10. corda
Um conjunto de caracteres ASCII que so usados para armazenar informaes textuais
(voc pode usar uma seqncia de caracteres para enviar uma mensagem atravs de uma
porta serial, ou para exibir em um monitor LCD). Para o armazenamento, eles usam um byte
para cada caractere na seqncia, mais um caractere nulo Arduno para dizer que o fim da
string. A seguir so equivalentes:
char string1 [] = "Arduno"; / 7 chars + 1 nulo char
char string2 [8] = "Arduno" / / Idem

C.4.11. array
A lista de variveis que podem ser acessados atravs de um ndice. Eles so utilizados para
construir tabelas de valores que podem ser facilmente acessados. Por exemplo, se voc
deseja armazenar os diferentes nveis de luminosidade para ser usado quando um LED
sumindo, voc pode criar seis variveis chamado light01, light02, e assim por diante. Melhor
ainda, voc poderia usar um array simples como:
luz int [6] = (0, 20, 50, 75, 100);

A palavra "matriz" no realmente usado na declarao da varivel: os smbolos [] e () fazer


o trabalho.

C.5. Estruturas de controle


Arduno inclui palavras-chave para controlar o fluxo lgico de seu esboo.
C.5.1. se ... mais
Essa estrutura faz com que as decises em seu programa. se deve ser seguido por uma
questo especificado como uma expresso entre parnteses. Se a expresso for verdadeira,
o que segue ser executado. Se for falsa, o bloco de cdigo a seguir o resto vai ser
executado. possvel usar apenas se sem fornecer uma clusula else.
Exemplo:
if (val == 1) {
digitalWrite (LED, HIGH);
}
C.5.2. FOR
Permite repetir um bloco de cdigo um nmero especificado de vezes.
Exemplo:
for (int i = 0; i <10; i + +) {

Serial.print ("ciao");
}

C.5.3. caso switch


A instruo if como uma bifurcao na estrada para o seu programa. caso switch como
uma rotunda enorme. Ele permite que seu programa de assumir uma variedade de sentidos,
dependendo do valor de uma varivel. muito til para manter seu cdigo limpo, uma vez
que substitui as longas listas de declaraes.
Exemplo:
sensorValue switch () {
caso 23:
digitalWrite (13, HIGH);

interrupo;

caso 46:
digitalWrite (12, HIGH);
break;
default: / / se nada partidas este executado
digitalWrite (12, baixo);
digitalWrite (13, baixo);
}

C.5.4. While
Semelhante ao caso, este executa um bloco de cdigo enquanto uma determinada condio
verdadeira.
Exemplo:
/ / LED pisca quando o sensor for inferior a 512
sensorValue = analogRead (1);
while (sensorValue <512) {
digitalWrite (13, HIGH);
delay (100);

digitalWrite (13, HIGH);


delay (100);
sensorValue = analogRead (1);
}

C.5.5. fazer ... enquanto


Assim como, enquanto, exceto que o cdigo executado antes que a condio avaliada.
Essa estrutura usada quando voc deseja que o cdigo dentro do seu bloco para executar
pelo menos uma vez antes de verificar a condio.
Exemplo:
do {
digitalWrite (13, HIGH);
delay (100);
digitalWrite (13, HIGH);
delay (100);
sensorValue = analogRead (1);
} While (sensorValue <512);

C.5.6. Break
Este termo permite que voc deixe um loop e continuar a execuo do cdigo que aparece
aps o loop. tambm usado para separar as diferentes seces de um case switch.
Exemplo:
/ / LED pisca quando o sensor for inferior a 512
do {
/ / Deixa o loop se um boto pressionado
if (digitalRead (7) == HIGH)
break;
digitalWrite (13, HIGH);
delay (100);

digitalWrite (13, HIGH);


delay (100);
sensorValue = analogRead (1);
} While (sensorValue <512);

C.5.7. continuar
Quando usado dentro de um loop, continue lhe permite ignorar o resto do cdigo dentro dele
e forar o estado a ser testado novamente.
Exemplo:
de luz (= 0; luz <255; luz + +)
{
/ / Pular intensidades entre 140 e 200
if ((x> 140) & & (x <200))
continuar;
analogWrite (PWMpin, luz);
atraso (10);
}

C.5.8. return
Pra de funcionar e retorna uma funo dele. Voc tambm pode usar isso para retornar um
valor de dentro de uma funo.
Por exemplo, se voc tem uma funo chamada computeTemperature () e voc deseja
retornar o resultado para a parte do cdigo que invocou a funo que iria escrever algo
como:
computeTemperature int () {
temperatura int = 0;
= temperatura (analogRead (0) + 45) / 100;
temperatura de retorno;
}

C.6. ARITHMETIC e frmulas


Voc pode usar o Arduno para fazer clculos complexos, utilizando uma sintaxe especial. +
E - funcionam como voc aprendeu na escola, e multiplicao representada com um * e
diviso com a /.
Existe um operador adicional chamado "mdulo" (%), que retorna o resto de uma diviso
inteira. Voc pode usar como muitos nveis de parnteses necessrio para expresses
grupo. Ao contrrio do que voc poderia ter aprendido na escola, colchetes e chaves so
reservados para outros fins (dos ndices e blocos, respectivamente).
Exemplos:
a = 2 + 2;
luz = ((12 sensorValue *) - 5) / 2;
remanescente = 3% 2 / / retorna 2 porque 02/03 tem um remanescente

C.7. Operadores de Comparao


Quando voc especificar condies ou testes para que, quando, e por declaraes, estes
so os operadores que voc pode usar:
== Igual a
! = No igual a
<Menos
> Maior
<= Menor ou igual a
> = Maior ou igual a

C.8. Operadores Booleanos


Estes so usados quando voc deseja combinar vrias condies. Por exemplo, se voc
quiser verificar se o valor proveniente de um sensor entre 5 e 10, voc poderia escrever:

if ((sensor => 5) & & (sensor <= 10))

Existem trs operadores: e, representado por & &; ou, representado por | |, e no por ltimo,
representado por!.
C.9. Operadores de
Estes so os operadores especiais usados para tornar o cdigo mais conciso para algumas
operaes muito comuns, como incrementar um valor.
Por exemplo, ao valor de incremento de 1, voc escreveria:
value = valor 1;
mas usando um operador composto, isto se torna:
valor + +;

C.9.1. incremento e decremento (- e + +)


Estes aumentar ou diminuir o valor por 1. Tenha cuidado, porm. Se voc escrever i + +
incrementa esta i em 1 e avalia o equivalente a um i, i + + avalia o valor de i, em seguida,
incrementos i. O mesmo se aplica --.
C.9.2. + =, -=, *= E / =
Estes torn-lo mais curto para escrever certas expresses. As duas expresses seguintes
so

equivalentes:

a = a + 5;
a + = 5;

C.10. Funes de entrada e OUTPUT


Arduno inclui funes para manipulao de entrada e sada. Voc j viu algum destes nos
programas de exemplo em todo o livro.

C.10.1. pinMode (pin, mode)


Reconfigura um pino digital se comportar tanto como entrada ou sada.
Exemplo:
pinMode (7, INPUT); / / pino 7 voltas em uma entrada

C.10.2. digitalWrite (pin, value)


Transforma um pino digital ligado ou desligado. Pinos deve ser feita explicitamente em uma
sada antes de utilizar pinMode digitalWrite ter qualquer efeito.
Exemplo:
digitalWrite (8, HIGH); / gira em torno de 8 pinos digital

C.10.3. digitalRead int (PIN)


L o estado de um pino de entrada, os elevados retornos se o pino sentidos alguma tenso
ou LOW, se no h tenso aplicada.
Exemplo:
val = digitalRead (7) / / l o pino 7 no val

C.10.4. analogRead int (PIN)


L a tenso aplicada a um pino de entrada analgica e retorna um nmero entre 0 e 1,023,
que representa as tenses entre 0 e 5 V.
Exemplo:
val = analogRead (0) / / l a entrada analgica 0 em val

C.10.5. analogWrite (pin, value)


Altera a taxa de PWM em um dos pinos marcados PWM. pino pode ser 11,10, 9, 6, 5, 3.
valor pode ser um nmero entre 0 e 255 que representa a escala entre 0 e 5 V de tenso de
sada.
Exemplo:
analogWrite (9128); / Dim um LED no pino 9 a 50%

C.10.6. shiftOut (dataPin, clockPin, bitOrder, value)


Envia dados para um registrador de deslocamento, os dispositivos que so utilizados para
expandir o nmero de sadas digitais. Este protocolo utiliza um pino para dados e outra para
o relgio. bitOrder indica a ordenao dos bytes (menos significativo ou mais importante) eo
valor real o byte a ser enviado.
Exemplo:
shiftOut (dataPin, clockPin, LSBFIRST, 255);

C.10.7. pulseIn unsigned long (pin, value)


Mede a durao de um pulso vindo em uma das entradas digitais. Isso til, por exemplo,
para ler alguns sensores infravermelhos ou acelermetros que a sada de seu valor como
impulsos de mudana de durao.
Exemplo:
= tempo pulsein (7, HIGH); / / mede o tempo nos prximos
/ / Pulso permanece elevada

C.11. Funes de tempo


Arduno inclui funes para medir o tempo decorrido e tambm para interromper o esboo.

C.11.1. unsigned millis tempo ()


Retorna o nmero de milissegundos que se passaram desde que o desenho comeou.
Exemplo:
= durao millis () lastTime; / / calcula o tempo decorrido desde a "lastTime"

C.11.2. delay (ms)


Interrompe o programa para a quantidade de milissegundos especificado.
Exemplo:
delay (500) / / pra o programa por meio segundo

C.11.3. delayMicroseconds (ns)


Pausa o programa de determinada quantidade de microssegundos.
Exemplo:
delayMicroseconds (1000) / / espera por um milissegundo

C.12. FUNES MATEMTICAS


Arduno comum inclui muitas funes matemticas e trigonomtricas:
C.12.1. min (x, y)
Retorna o menor de xe y.
Exemplo:
val = min (10,20); / val / agora 10

C.12.2. max (x, y)


Retorna o maior de xe y.
Exemplo:
val = max (10,20); / val / agora 20

C.12.3. abs (x)


Retorna o valor absoluto de x, o que torna os nmeros negativos em positivos. Se x 5
retornar 5, mas se x -5, que ainda retornar 5.
Exemplo:
val = abs (-5) / Val / agora 5

C.12.4. constranger (x, a, b)


Retorna o valor de x, constrangido entre A e B. Se x inferior a um, ele ser apenas um
retorno e se x maior que b, ser apenas retornar b.
Exemplo:
val = constranger (analogRead (0), 0, 255); / rejeitar valores maiores que 255

C.12.5. mapa (valor, fromLow, fromHigh, toLow, toHigh)


Mapeia um valor no intervalo e fromLow maxLow ao intervalo e toLow toHigh. Muito til para
processar valores de sensores analgicos.
Exemplo:
Mapa val = (analogRead (0), 0,1023,100, 200); / / mapeia o valor de
Analgico / / 0 para um valor

/ / Entre 100 e 200

C.12.6. pow duplo (base, expoente)


Retorna o resultado de elevar um nmero (base) para um valor (expoente).
Exemplo:
pow double x = (y, 32); / / define X a Y elevado potncia 32

C.12.7. sqrt dobro (x)


Retorna a raiz quadrada de um nmero.
Exemplo:
uma dupla = sqrt (1138); / aproximadamente 33,73425674438

C.12.8. duplo pecado (rad)


Retorna o seno de um ngulo especificado em radianos.
Exemplo:
sin seno dupla = (2); / aproximadamente 0,90929737091

C.12.9. cos duplo (rad)


Retorna o cosseno de um ngulo especificado em radianos.
Exemplo:
cosseno duplo = cos (2); / aproximadamente -,41614685058

C.12.10. tan duplo (rad)


Retorna a tangente de um ngulo especificado em radianos.
Exemplo:
tangente dupla = tan (2); / aproximadamente -2,18503975868

C.13. NMERO funes aleatrias


Se voc precisa gerar nmeros aleatrios, voc pode usar o gerador de nmeros pseudo
Arduno.
C.13.1. randomSeed (semente)
Redefine Arduno gerador de nmeros pseudo-aleatrios. Embora a distribuio dos
nmeros retornados por random () essencialmente aleatrio, a seqncia previsvel.
Assim, voc deve redefinir o gerador para um valor aleatrio. Se voc tem um pino analgico
desligado, ele vai pegar o rudo aleatrio do ambiente circundante (ondas de rdio, raios
csmicos, a interferncia eletromagntica dos telefones celulares e lmpadas fluorescentes,
e assim por diante).
Exemplo:
randomSeed (analogRead (5)) / / usando o rudo aleatrio do pino 5

C.13.2. tempo aleatrio (max) de comprimento aleatrio (min, max)


Retorna um pseudo valor inteiro longo entre min e max - 1. Se min no especificado, o
limite inferior 0.
Exemplo:
randnum longo = random (0, 100); / / um nmero entre 0 e 99
randnum longo = random (11) / / um nmero entre 0 e 10

C.14. COMUNICAO SERIAL


Como voc viu no captulo cinco, voc pode se comunicar com dispositivos em uma porta
USB usando um protocolo de comunicao serial. Aqui esto as funes de srie.
C.14.1. Serial.begin (velocidade)
Arduno prepara para comear a enviar e receber dados seriais. Voc geralmente usa 9600
bits por segundo (bps), com o monitor IDE Arduno serial, mas outras velocidades esto
disponveis, geralmente no mais de 115.200 bps.
Exemplo:
Serial.begin (9600);

C.14.2. Serial.print (dados) Serial.print (dados, codificao)


Envia alguns dados para a porta serial. A codificao opcional, se no for fornecida, os
dados so tratados tanto como texto simples possvel.
Exemplos:
Serial.print (75) / / Imprime "75"
Serial.print (75 de dezembro); / / O mesmo que acima.
Serial.print (75, HEX) / / "4B" (75 em hexadecimal)
Serial.print (75 de outubro); / / "113" (75 em octal)
Serial.print (75, BIN); / / "1001011" (75 em binrio)
Serial.print (75 BYTE); / / "K" (o byte-primas acontece
/ / Se a 75 do conjunto ASCII)

C.14.3. Serial.println (dados) Serial.println (dados, codificao)


Mesmo que Serial.print (), exceto que ele adiciona um retorno de carro e avano de linha (\ r
\ n), como se voc tivesse digitado os dados e, em seguida, pressionado Enter.
Exemplos:

Serial.println (75) / / Imprime "75 \ r \ n"


Serial.println (75 de dezembro); / / O mesmo que acima.
Serial.println (75, HEX) / / \ "4B r \ n"
Serial.println (75 de outubro); / / "113 \ r \ n"
Serial.println (75, BIN); / / "1001011 \ r \ n"
Serial.println (75 BYTE); / / \ K "r \ n"

C.14.4. Serial.available int ()


Retorna quantos bytes esto disponveis lidos na porta serial para leitura atravs do read ()
funo. Depois de ter lido () tudo disponvel, Serial.available () retorna 0 at que novos
dados chegam na porta serial.
Exemplo:
int count = Serial.available ();

C.14.5. Serial.read int ()


Retorna um byte de entrada de dados serial.
Exemplo:
dados int = Serial.read ();

C.14.6. Serial.flush ()
Como os dados podem chegar atravs da porta serial mais rpido do que seu programa
pode process-lo, Arduno mantm todos os dados recebidos em um buffer. Se voc
precisar limpar o buffer e deix-lo encher-se com novos dados, use a funo flush ().
Exemplo:
Serial.flush ();

At agora, usamos ilustraes muito detalhadas para descrever como montar os circuitos,
mas como voc pode imaginar, no exatamente uma tarefa rpida para chamar um desses
para qualquer experincia que voc deseja documentar.
questes idnticas, mais cedo ou mais tarde, em cada disciplina. Na msica, depois de
escrever uma msica agradvel, preciso escrev-lo usando a notao musical.
Engenheiros, sendo as pessoas concretas, desenvolveu uma maneira rpida de capturar a
essncia de um circuito, a fim de ser capaz de document-la e depois reconstru-la ou
pass-lo para outra pessoa.
Na eletrnica, diagramas esquemticos permitem descrever o circuito de uma forma que
compreendido pelo resto da comunidade. Os componentes individuais so representadas
por smbolos que so uma espcie de abstrao de qualquer forma o componente ou a
essncia delas. Por exemplo, o capacitor composto de duas placas metlicas separadas
por ar ou de plstico e, portanto, seu smbolo :

Outro exemplo claro a indutor, que construdo pelo enrolamento de fio de cobre em torno
de uma forma cilndrica, conseqentemente smbolo a seguinte:

As conexes entre os componentes so feitas geralmente usando fios ou trilhas na placa de


circuito impresso e so representados no diagrama, como linhas simples. Quando dois fios
esto conectados, a conexo representada por um grande ponto colocado onde as duas
linhas se cruzam:

Isso tudo que voc precisa entender os esquemas bsicos. Aqui est uma lista mais
abrangente dos smbolos e seus significados:

Voc pode encontrar variaes destes smbolos (por exemplo, ambas as variantes de
smbolos de resistncia so mostradas aqui). Veja en.wikipedia.org / wiki / Electronic_symbol
para aumentar a lista de smbolos eletrnicos. Por conveno, os diagramas so
desenhados da esquerda para a direita. Por exemplo, um rdio seria elaborada a partir da
antena esquerda, seguindo o caminho do sinal de rdio que faz seu caminho para o altofalante (que desenhada direita).
O esquema a seguir descreve o circuito boto mostrado anteriormente nesta traduo:

Os Adaptadores e tradutores.
Pessoal isso foi s uma Adaptaao mais por favor no esqueam da gente em suas
referncias, bem como do Autor original, principamente, citando a sua obra preservando os
direitos autorais.

Cirineu Carvalho fernandes


Gosta
de
reggae,
Maranhense
da
Ilha,
Aficcionado por Tecnologia
e Robtica, gosta de praia.
Atualmente
tentanto
Formar
em
Eng
Mecatroncia, onde est
projentando
o
desenvolvimento do Robo
Rhex
com
tecnologia
Arduino e Zigbee

Geilton Teles Lopes


Tambm formando em
Engenharia Mecatrnica,
est em trabalho conjunto
para o desenvolvimento do
rob RHEX Brasil, utilizando
a Tecnogia Arduino e
Zigbee. Atualmente
desenvolvendo projetos na
rea Industrial de Cimento.

Você também pode gostar