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 a 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 e 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 e atuadores" por Usman Haque e 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 o driver com o "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); } void loop() { digitalWrite(LED, HIGH); delay(1000); delay(1000); } digitalWrite(LED, LOW); // turns the LED on // turns the LED off // waits for a second // waits for a second // sets the digital // pin as output

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 o 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 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): para Arduno que voc

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); } 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); } } // tell Arduno LED is an output pinMode(BUTTON, INPUT); // and BUTTON is an input

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; void setup() { pinMode(LED, OUTPUT); } 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); } } // tell Arduno LED is an output pinMode(BUTTON, INPUT); // and BUTTON is an input // 0 = LED off and 1 = LED on

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 // Stores the brightness value

int brightness = 128;

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 = 0; // the last time we fetched the content

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; // multiply by 4 so that the max is 255, // which comes in handy when building a if (Arduno > 64) Arduno = 64; peace = peace * 4; love = love * 4; } catch (Exception ex) { // If there was an error, stop the sketch ex.printStackTrace(); System.out.println("ERROR: "+ex.getMessage()); }

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

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 o esboo Arduno (tambm disponvel em www.makezine.com /

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;

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); } 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; // wait 100ms between each send

} }

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 capacitor marcado 104 seria 100000 pF ou 0,1 F. Um capacitor marcado 229 seria 2,2 pF.

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); caso 46: digitalWrite (12, HIGH); break; default: / / se nada partidas este executado digitalWrite (12, baixo); digitalWrite (13, baixo); } interrupo;

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 a = a + 5; a + = 5; equivalentes:

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