Laser Arduino

Você também pode gostar

Você está na página 1de 16

Antes de Iniciar Independentemente de voc ser novo no Arduino ou um construtor ocasional, este projeto tem algo para voc.

No h nada mais satisfatrio do que criar um objeto fsico interativo sabendo que se ele quebrar ou precisar de modificao, voc vai saber onde esto todas as peas e como tudo funciona. A arma do 'Duino tag um grande projeto para se trabalhar sozinho ou com amigos. Para concluir este projeto, voc deve ter pelo menos um entendimento bsico de eletrnicos (voc deve saber o que um resistor, mas no precisa conhecer a cincia por trs disso) e ter um entendimento sobre programao (voc deve saber o que so loops e variveis, mas no precisa estar preparado para analisar uma Notao do Grande O). No tenha medo de comear. Sobre Esta Srie Nesta srie, ns utilizamos a tecnologia Arduino para criar jogos de laser interativos bsicos chamados 'Duino tag: Parte 1: Aprender os princpios bsicos do Arduino, esboar o projeto e fazer uma experincia que ajudar voc a entender como funciona o Infravermelho. Parte 2: Construir e testar a parte receptora da arma do 'Duino Tag, incluindo o teste. Parte 3: Construir o transmissor e concluir a arma do 'Duino Tag. Sobre este Tutorial Para prosseguir, voc no precisa ter nenhuma experincia com eletroeletrnicos, embora a experincia com o trabalho com componentes eletroeletrnicos certamente possa ajudar muito. O mesmo pode ser dito sobre o trabalho com um microcontrolador. Se tiver trabalhado com microcontroladores, voc j estar em vantagem, mas lembre-se de que a plataforma Arduino totalmente adequada para pessoas sem essa experincia. Acima de tudo, voc deve estar disposto a ampliar suas habilidades. O trabalho com eletroeletrnicos e microcontroladores pode ser uma experincia compensadora. Muitos engenheiros de software no tm a chance de gravar cdigo para dispositivos que criam uma interface com o mundo fsico, e o Arduino fornece um ponto de entrada de baixo custo para o trabalho com dispositivos interativos. Este tutorial, Parte 1, em uma srie de trs partes, "Construindo um Jogo de Laser Baseado no Arduino", se concentra nos princpios bsicos do Arduino. Vamos fazer uma introduo ao uso do Arduino e examinar os princpios bsicos de linguagem e API. Vamos preparar o projeto 'Duino tag, incluindo princpios bsicos de design e a criao de uma lista de peas. Vamos aprender sobre como solicitar peas on-line, onde procurar e quais peas so necessrias. Por fim, utilizando alguns componentes em estoque e alguns cdigos de teste bsicos, demonstraremos os princpios bsicos que controlam como funciona a arma. Requisitos do Sistema Para este tutorial, precisamos de algumas ferramentas e suprimentos: Computador com porta USB Embora tecnicamente no seja verdade (muitos tipos de hardware Arduino criam interfaces atravs de portas seriais de estilo antigo), esta srie gravada supondo

que voc esteja utilizando um modelo que se comunica atravs de USB. Existe um software Arduino disponvel para Microsoft Windows, Mac OS X e Linux (32 bits e AMD 64 bits). Arduino Diecimila Este o modelo especfico do hardware Arduino utilizado neste tutorial. Voc pode substituir um Arduino Duemilanove. Solicite o seu de um revendedor on-line respeitado. Consulte Recursos para conhecer os links. Cabo A-B USB igual aquele que, provavelmente, voc conectou sua impressora. Light-Emitting Diode (LED) vermelho de 5 mm bsico Talvez voc j tenha um ou pode encontrar um na Radio Shack ou com um revendedor on-line. Lanterna eltrica Quanto mais clara, melhor. Software Arduino Consulte Recursos para fazer o download do software Arduino. Guias de instalao e configurao para Arduino Consulte Recursos para fazer o download do guia de instalao do Arduino. Introduo ao Arduino Nesta seo, apresentamos os princpios bsicos do Arduino, como configur-lo e como programar o software com um pequeno manual de linguagem. O que Arduino? Para simplificar, uma placa Arduino um microcontrolador um computador minsculo com vrios pinos de entrada e de sada. Utilizando estes pinos, voc pode criar inmeros dispositivos interativos, que vo desde uma simples luz piscando at dispositivos complexos que utilizam uma grande variedade de entrada para criar comportamentos complexos utilizando servos e motores. O primeiro Arduino foi produzido em janeiro de 2005 por dois professores, David Cuartielles e Massimo Banzi no Interaction Design Institute em Milo. Consulte Recursos para ler um artigo da revista Wired que traa o perfil dos desenvolvedores do Arduino. A plataforma Arduino composta por duas partes: o hardware (incluindo o microcontrolador, uma placa de circuito, etc.) e o software (a linguagem e a interface de programao). Ambas as partes da plataforma so software livre. Se voc quiser, possvel fazer o download de esquemticos para o Arduino, comprar todas as peas individuais necessrias, cortar a placa de circuito e comear do zero. Existem inmeros projetos diferentes, como Freeduino, que fizeram isso. Os esquemticos e os arquivos CAD foram liberados sob a licena Creative Commons Share-Alike. O software utilizado para programar o Arduino tambm um software livre. Ele foi escrito em linguagem de programao Java e liberado sob GPL (existem algumas bibliotecas de microcontrolador C/C++ que foram liberadas sob LGPL). Existem vrias plataformas de microcontroladores disponveis, e muitas delas esto concentradas no mesmo objetivo: facilitar a programao e a criao de interface com o microcontrolador, colocar tudo dentro de um pacote, etc. Da mesma forma, o Arduino busca uma interface simples e um pacote integrado, enquanto tenta oferecer benefcios adicionais:

Baixo custo Uma pessoa pode construir uma placa Arduino do zero com pouco dinheiro, e as unidades pr-montadas so baratas. Um Arduino Diecimila custa em torno de $35. Software para vrias plataformas Obtenha o software Arduino para Microsoft Windows, Mac OS X e Linux. Linguagem simples Os desenvolvedores do Arduino tentam manter sua linguagem fcil de usar para iniciantes, mas flexvel o bastante para usurios avanados. Software livre O Arduino completamente um software livre. Se quiser construir seu prprio software ou modificar um, voc livre para isso. Alm disso, o Web site oficial do Arduino contm um wiki extensivo no qual amostras de cdigo e exemplos so compartilhados livremente. Existe uma grande quantidade de informaes disponveis sobre o Arduino. O melhor lugar para se comear no Web site oficial (consulte Recursos). Leia uma excelente introduo nesse site. Introduo Para se criar uma interface com o hardware Arduino, voc precisa instalar o software. Faa o download para o seu sistema operacional e siga o guia de instalao e configurao passo a passo apropriado (consulte Requisitos do sistema). Eles seguem as mesmas etapas: Descompacte o software Instale o driver USB para o Arduino Conecte a placa Ative o software Faa o upload de um exemplo Ns no cobriremos cada etapa detalhadamente, j que elas so diferentes de um ambiente para outro. Vamos discutir o software e o exemplo Blink. Nota: Na linguagem Arduino, programas e scripts individuais so referidos como "esboos." Aps ativarmos o software e carregarmos o exemplo Blink (de acordo com as instrues no Guia de Introduo), voc ver algo semelhante Figura 1. Resumindo a interface, a linha superior de botes controla tarefas bsicas como compilar, criar e salvar arquivos, fazer o upload de cdigo para a placa Arduino e ativar ou desativar o Serial Monitor (falaremos sobre isso mais tarde). A rea de janela do meio contm todo o cdigo para o exemplo Blink e a rea de janela inferior exibe a sada do console, erros de compilao e mensagens seriais (quando Serial Monitor estiver ativado). Por enquanto, vamos nos concentrar na rea de janela do meio e discutir a linguagem Arduino. Princpios Bsicos da Linguagem Arduino A linguagem Arduino baseada em C/C++, e se voc tiver utilizado esta linguagem antes, os construtores e recursos lhe sero familiares. Embora uma reviso integral

da linguagem esteja fora do escopo deste tutorial, vamos deixar o exemplo Blink um pouco de lado para saber um pouco mais sobre a linguagem. Isso pode parecer muito bsico se voc j estiver acostumado a trabalhar com cdigo, portanto, se voc preferir, pegue um manual e entre de cabea; sinta-se livre para se aprofundar na referncia de linguagem estendida (consulte Recursos para conhecer a referncia de linguagem estendida). Primeiro, consulte o grande bloco de comentrios. Os comentrios sobre a linguagem Arduino so escritos em dois estilos. Listagem 1. Estilo de Bloco */ * Estilo de bloco como este */ Ou podem ser escritos no estilo sequencial. Listagem 2. Estilo Sequencial // sequencial como este Em seguida, observe que declaramos uma varivel: int ledPin = 13;. Esta linha diz a voc imediatamente quais linhas na linguagem Arduino terminam com ponto e vrgula. Alm disso, ela diz quase tudo que precisamos saber sobre a declarao de variveis na linguagem Arduino. A sintaxe: Declarar o tipo de varivel, declarar o nome da varivel, configurar o valor inicial da varivel. Alm do tipo int, a linguagem Arduino suporta int sem sinal, Boolean, char, char sem sinal, byte, long, long sem sinal, float, double, string e array. Encontre detalhes sobre cada tipo de dado em Referncia de Linguagem Arduino, mas observe tambm o tipo array. Cada mtodo mostrado na Listagem 3 aceitvel quando se declara uma array. Listagem 3. Mtodos para se Declarar uma Array int fourlong[4]; // creates an empty array, 4 elements long int nolength[] = {8,18,32,64}; // the compiler will figure out how long this array is int setboth[4] = {8,18,32,64}; // This creates a 4 element array // and sets the initial value char someword[7] = "fizbin"; // You need to add one extra element for a null character Se voc tiver um desenvolvimento da Web em segundo plano, essas arrays podem parecer um pouco estranhas. No se preocupe. Elas faro mais sentido quando comearmos a utiliz-las. Nota: Arrays tm ndice de zero. A Listagem 4 mostra a funo setup. Listagem 4. Funo setup void setup() { pinMode(ledPin, OUTPUT); }

Esta funo ser executada uma vez quando a placa Arduino for reconfigurada. Cada esboo deve ter uma funo setup, mesmo se a funo estiver vazia. Nesse caso, a funo setup ser utilizada para configurar o modo para um dos pinos do hardware Arduino. Ignore a instruo pinMode por enquanto e observe a estrutura da funo. Funes so declaradas atravs de seu tipo de retorno (nesse caso, void indica que a funo no retornar nenhum valor) e do nome da funo. Seguindo o nome da funo, quaisquer parmetros necessrios so declarados dentro de parnteses. A funo setup no aceita parmetros, mas se quisermos criar uma funo que aceite um ou mais parmetros, declararemos os parmetros como se estivssemos declarando uma varivel. Listagem 5. Declarando Parmetros void someFunction(int a, int b=2) Finalmente, podemos ver que o cdigo de funo est entre chaves. A seguinte funo setup outra funo chamada loop. Listagem 6. Funo loop void loop() { digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(1000); } Aps a funo setup ser executada, a funo loop chamada, indefinidamente, at a placa Arduino ser desligada ou algum evento cataclsmico criar uma lacuna no espao e no tempo. na funo loop que, normalmente, fazemos a maior parte do nosso trabalho, atendendo entrada do sensor e acionando alguma forma de sada. Assim como com a funo setup, cada esboo deve ter uma funo loop, mesmo que a funo esteja vazia. Alm do que aprendemos do exemplo Blink, existem outras coisas que devemos mencionar resumidamente sobre a linguagem Arduino: Estruturas de controle mais familiares so suportadas (if, while, for, switch, etc.). Operadores aritmticos, de comparao, booleanos, bit a bit e compostos so todos padro. A linguagem suporta nativamente certas funcionalidades matemticas, trigonomtricas, de nmero aleatrio e de comunicao serial. Podemos incluir bibliotecas externas utilizando instrues #include na parte superior do esboo. Alm de toda essa funcionalidade padro, existem inmeros elementos de linguagem exclusivos do Arduino. Esses construtores (como as funes pinMode e digitalWrite que voc viu acima) referem-se principalmente ao trabalho com vrios pinos de entrada e de sada no Arduino. Existe um guia de linguagem extensivo no site do Arduino (consulte Recursos).

OK Temos materiais introdutrios suficientes sobre o Arduino. Vamos dar uma olhada neste projeto, o que voc vai aprender com ele e quais desafios voc vai enfrentar. Preparando-se para Criar a Arma do 'Duino tag Se voc nunca trabalhou com o Arduino ou qualquer outro microcontrolador, ele pode parecer um grande projeto para se utilizar como ponto de incio. E . Este projeto apresenta vrios desafios interessantes para se superar. Mas este projeto ser igualmente recompensador tanto pessoalmente quanto socialmente. Vamos dar uma olha nesses desafios e recompensas. Nesta seo, comearemos criando a arma do 'Duino tag. Por que Construir uma Arma do 'Duino tag? A pgina oficial do Arduino carregada com projetos de amostra, sendo que a maioria deles mais fcil do que se aprofundar em algo como uma arma de tag a laser. A construo de uma arma do 'Duino tag apresentar alguns desafios nicos, alm de oferecer alguns benefcios adicionais impressionantes. Para darmos um exemplo especfico, o trabalho com o infravermelho complicado. (Lamentamos muito, mas no utilizaremos lasers reais durante o curso deste tutorial.) O infravermelho mais complicado do que se imagina (certamente, mais complicado do que pensei quando trabalhei com este projeto pela primeira vez). Por exemplo, a luz infravermelha est em todo lugar e afeta tudo ao seu redor (se voc j emitiu o sinal de um controle remoto para uma parede ou quadro, voc j sabe disso). Uma coisa lidar com um algoritmo de dados complexos ou trabalhar em um cdigo que precisa lidar com milhes de pedidos por segundo. Outra coisa completamente diferente tentar lidar com uma fonte de interferncia do mundo real como o sol. As mesmas abordagens de soluo de problemas utilizadas durante a composio do cdigo podem ser teis em uma tentativa de se trabalhar com os problemas do mundo real. Alm disso, quando estiver preparado para comear a trabalhar com o infravermelho, voc abre um amplo leque de possveis projetos que talvez nunca tenha considerado desde algo to simples quanto interagir com sua TV at criar dispositivos interativos e baratos que se comuniquem uns com os outros atravs de IR para controlar diferentes partes de seu computador utilizando um controle remoto projetado por voc. Alm de lidar com as complexidades do infravermelho, voc ver que existe um problema de tempo em jogo. O objetivo construir um dispositivo que aja como uma arma que emita infravermelho e como um detector que registre acertos de outra fonte legtima de infravermelho. Haver um pequeno desafio quando voc for lidar com este problema em particular, e voc ver alguns benefcios (e, ainda bem, um certo prazer) em trabalhar com os vrios elementos deste desafio especfico. Socialmente falando, este um grande projeto para se trabalhar com amigos. Adoro criar dispositivos em minha oficina, mas s vezes divertido sentar ao redor de uma mesa com alguns amigos para trabalharmos juntos. Como esses dispositivos destinam-se a interagir uns com os outros, quase impossvel construir apenas um.

Ao envolver amigos, voc facilita seu prprio trabalho. Voc tem mais sensores para atirar e mais armas para testar seu prprio sensor. Isso leva inevitvel concluso: divertido. Quando o 'Duino tags estiver ativo e em execuo, voc ser obrigado a disparar contra seus amigos imediatamente. E, por fim, em vez de comprar um dispositivo inexplorvel e pronto para uso de uma loja, voc ter feito coletivamente sua prpria criao. Se no gostar da forma como ele funciona, voc altera o dispositivo ou altera suas regras. Voc pode terminar gastando um pouco mais do que gastaria comprando uma unidade de prateleira barata, mas, no final, voc ter algo que pode desmontar, reprogramar e que realizar a todas as suas vontades. No simplesmente algo voc pode comprar de sua cadeia de lojas de brinquedos nacional favorita. Agora que voc j confia no projeto, vamos falar sobre a arma do 'Duino tag. O que ela far? Como ela funcionar? De quais componentes voc vai precisar? Como voc encaixotar o eletroeletrnico? Projetando a Arma do 'Duino Tag Antes de podermos comear a projetar a arma, precisamos falar sobre como queremos que a coisa funcione. Fiz algumas instrues e suposies ao longo do trajeto, agora vamos esclarecer as coisas. Vamos falar sobre como esta arma funciona: Quando o jogador puxa um gatilho, um nico tiro disparado. Quando a arma disparada, ela deve emitir um som moderado como "PEW PEW." A arma tambm ser utilizada para detectar acertos. Quando um acerto for detectado, a arma dever emitir um som moderado diferente, como "KZZKH KZZKH." Cada arma possui uma certa quantidade de tiros que pode ser disparada. Quando a arma estiver sem munio e o jogador puxar o gatilho, a arma deve emitir um terceiro som, como "EEERK EEERK." Quando o jogador for eliminado, a arma deve reproduzir um som final, como "BOOM KAPOW" (OK so dois sons). Existem mais variaes de regras que poderiam ser includas aqui, mas aqui o lugar ideal para comearmos. No cdigo, ns escreveremos e estabeleceremos o seguinte conjunto de regras: Cada arma possui seis tiros seguros. No h recarga. Esses tiros podem ser disparados sem perigo. Cada jogador pode fazer seis acertos. Aps fazer seis acertos, o jogador ser eliminado. Cada tiro que um jogador disparar aps o sexto aumentar a possibilidade de uma falha catastrfica da arma. No caso dessa falha catastrfica da arma, o jogador ser eliminado. Falando portugus claro, voc pode sofrer seis disparos e pode disparar seis vezes. Aps ter utilizado seus seis disparos seguros, cada vez que voc disparar um tiro, as chances de sua arma falhar aumentam. Se sua arma falhar, voc ser eliminado. Com base nessas regras simples e em algumas instrues dadas antes neste tutorial, podemos estabelecer alguns princpios bsicos sobre o hardware:

'Duino tag baseada em infravermelho. A arma age como um emissor e um sensor. A arma precisa de algum tipo de acionador. A arma emite sons. A arma deve ser durvel. Este tutorial no gastar muito tempo falando sobre como encaixotar sua arma do 'Duino tag. Aps os eletroeletrnicos funcionarem, falaremos sobre as opes para se criar ou adequar diferentes caixas para o projeto. Agora que o comportamento j foi traado, hora de especificar o hardware. Mas no podemos ir muito longe sem falar um pouco sobre como os sensores infravermelhos funcionam. Trabalhando com Infravermelhos Conforme mencionado, a radiao infravermelha est ao nosso redor. O sol a emite, assim como as lmpadas, as TVs e os animais (o termo "pit" em pit viper [vbora em ingls] refere-se forma do sensor que esta famlia de cobras possui e utiliza para encontrar suas presas). Se ns configurssemos um sensor para ser acionado sempre que algum infravermelho fosse detectado, ele seria acionado constantemente e, assim, seria virtualmente intil. Portanto, se esse for o caso, como funcionam os controles remotos infravermelhos? O controle remoto para sua TV contm um sensor projetado especificamente que foi construdo para detectar o infravermelho sendo emitido a uma certa frequncia. A Sony, por exemplo, padroniza suas interfaces de infravermelho a 40 KHz. Em outras palavras, o LED infravermelho ativado e desativa 40.000 vezes por segundo. Sentindo apenas a entrada em uma determinada frequncia, a TV pode ignorar o infravermelho que no est vindo do controle remoto. O controle remoto transmite cdigos diferentes para a TV pulsando o sinal de IR. assim que a arma do 'Duino tag funciona em sua essncia. Esse meio requer um determinado tipo de sensor de IR. Ns discutiremos isso agora, conforme falamos sobre as peas que so necessrias e onde elas podem ser obtidas. Peas Conforme mencionado, precisamos de uma placa Arduino. Vejamos o que mais ser necessrio. LED infravermelho No h nada de especial no LED. Usei um LED de IR de trs-quartos T1 da All Electronics. Sensor infravermelho Esta srie foi escrita utilizando um Sensor Infravermelho TSOP2138YA (tambm da All Electronics). Comutador transitrio de um plo o acionador, portanto, queremos algo que no seja muito pequeno e nem muito grande. Elemento Piezo Utilizamos para emitir sons. Sugiro o uso de um pequeno e revestido. fiao solid ou stranded com 22 calibradores Precisamos de duas cores. No precisamos de muito um metro no mximo.

Resistores Precisamos de dois resistores diferentes. Um resistor de 100 (100 ohm ou marrompreto-marrom), um resistor de 10k (10000 ohm ou marrom-preto-laranja) e um resistor de 82 (82 ohm ou cinza-vermelho-preto). Capacitores Precisamos de um capacitor de 0.1uF. Lente Uma pequena lente de aumento (de trs quartos a uma polegada de dimetro) na primeira vez, voc pode utilizar aquela lente de plstico barata que ganhou como lembrancinha em uma festa. Tubo Um pequeno cano de PVC ou outro tubo rgido. Essas peas custam $5 ou menos, dependendo de onde voc comprar. Onde Encontrar as Peas Voc deve estar preparado para andar na Radio Shack e encontrar tudo que precisa para concluir esta srie. Se voc preferir comprar de um revendedor on-line, veja aqui trs recomendaes: Digi-Key Oferece uma variedade de componentes eletrnicos com preos razoveis Mouser Outra excelente fonte de componentes eletrnicos on-line All Electronics Corp. A seleo um pouco mais limitada do que das outras duas, mas fiquei satisfeito como cliente Consulte Recursos para conhecer esses varejistas on-line. Como alternativa, uma simples procura na Web tambm apresentar vrias opes. Se voc decidir comprar em outro lugar, lembre-se destas quatro questes: Consulte o tempo de entrega, principalmente quando comprar de um vendedor da eBay. Voc pode encontrar vrios componentes eletrnicos de vendedores da eBay, mas muitas vezes os itens so enviados diretamente da China, o que pode levar uma ou duas semanas. No compre nada que no tenha uma folha de especificaes. Todos os componentes eletrnicos possuem o que conhecido como folha de especificaes que lista diversas informaes vitais sobre voltagem, fiao, etc. Se voc no tiver estas informaes em mos, o trabalho com seus componentes pode se transformar em um desafio. Pechinche. Os preos dos componentes variam muito. No tenha medo de fazer uma referncia cruzada dos preos oferecidos em sites diferentes. A menos que esteja fazendo um pedido muito grande, no far muito sentido comprar sensores em um site e LEDs em outro. Mas ainda assim voc deve verificar se est comprando por um preo competitivo. Seja preciso com nmeros de modelos, principalmente com o sensor de IR. Isso pode parecer bvio se voc j tiver trabalhado com eletroeletrnicos antes, mas pode parecer pouco bvio se voc for novo nesta rea. Os sensores de IR tm vrios fabricantes e modelos, alm de terem aparncia semelhante, mas suas frequncias so diferentes. A frequncia importante.

Enquanto espera as peas chegarem, vamos fazer algo interessante com o Arduino. Isso ajudar a aguar sua vontade de comear o projeto, bem como a introduzir uma capacidade pouco conhecida do LED. Esta experincia no terminar como parte do projeto concludo, mas vai ajudar voc a ter um melhor entendimento de como funciona a frequncia. Alm disso, ela permitir que voc se envolva completamente com o software e o hardware Arduino. Fazendo uma Experincia com o Arduino Vamos fazer uma pequena experincia que nos ensine algo novo sobre o LED e que nos ajude a entender tudo sobre frequncia. Um Truque Interessante para Aguar sua Vontade Anteriormente, dissemos que precisamos de um LED e de uma lanterna eltrica para concluir este tutorial. J utilizamos o LED durante o exemplo Blink. Vamos utilizar o mesmo LED para detectar a luz. Sim, para detectar luz. Alm de piscar, brilhar e apagar, o LED pode ser utilizado para detectar a presena de luz. Para obter os melhores resultados, utilize um LED colorido (como vermelho) e uma lanterna eltrica de luz branca normal (quanto mais clara, melhor). Comece pegando o LED e conectando o anodo (o lado positivo normalmente, a extremidade mais longa) no pino 0 Analog In na parte inferior da placa. Conecte o ctodo (o lado negativo normalmente, a extremidade mais curta) em um dos dois pinos Terra (marcados como "GND") na parte inferior da placa. Em seguida, vamos gravar um pequeno cdigo para escutar o pino 0 Analog e fazer a leitura para o monitor serial (eu avisei que voltaramos nisso). Listagem 7. Escutando o Pino 0 Analog e Fazendo a Leitura para Monitores Seriais /* Sensor de Luz do LED * por Duane O'Brien * para IBM Developer Works */ int recvPin = 0; int wait = 1000; int val = 0; void setup() { // Inicialize a Interface Serial Serial.begin(9600); } void loop() { // Faa uma leitura no Pino Analog val = analogRead(recvPin); // Emita o valor detectado Serial.print("DETECT : ");

Serial.println(val); // Aguarde para fazer a prxima leitura. delay(wait); }

Voc pode ver que no h muita coisa neste cdigo. Ns configuramos algumas variveis, inicializamos a interface serial e fizemos leituras a partir da entrada analgica uma vez por segundo. um script simples, mas com efeito super interessante. Salve o script e faa seu upload para o hardware Arduino. Aps o upload ser concludo, clique no boto Serial Monitor na parte superior da janela do Arduino. Isso vai reconfigurar a placa Arduino e, a partir da, voc comear a ver algumas leituras aparecendo na rea de janela na parte inferior. Diminua as fontes de luz e observe as leituras. Elas devem ser semelhantes Figura 2. O nmero real relatado pode variar muito, dependendo da quantidade de luz ambiente que existe, do tipo de LED que voc est utilizando, etc. Em seguida, ligue uma lanterna eltrica e ilumine o LED. Voc deve observar um aumento marcado no valor detectado. Na primeira captura de tela, as leituras vieram em cerca de 167-168. Mas veja as leituras na Figura 3. Voc pode ver que a entrada analgica, que percorre uma escala de 0-1,023, pulou para quase 90 quando a lanterna eltrica iluminou o LED. Mais uma vez, os nmeros podem variar muito, dependendo da luz ambiente, da escolha do LED e da fora da lanterna eltrica. Mas basicamente, isso se refere a sensores de luz. Agora, para fazer uma comparao, acenda vrias luzes em torno do hardware Arduino, de modo que haja bastante luz ambiente, e observe como as linhas de base aumentam. Voc pode ver que os nmeros de linha de base aumentaram cerca 40, ocasionando um salto menos distinto quando o LED entra em contato com outras fontes de luz. Nesse exemplo, ainda podemos dizer quando a lanterna eltrica est iluminando diretamente o LED. Mas se voc tivesse que trabalhar com muito mais luz ambiente, ou se precisasse lidar com algo que dispersasse a fonte de luz (como uma luz muito distante do LED), as diferenas numricas ficariam muito mais sutis. Para ilustrar isso, configure o Arduino de uma maneira que voc possa direcionar a luz da lanterna eltrica para o LED do outro lado da sala e examine os resultados. Alm de mostrar uma nova forma interessante de se usar o LED bsico, este exemplo ajuda a ilustrar a dificuldade inerente ao trabalho com luz ambiente visvel e deteco de luz. Voc pode imaginar quo complicado este problema pode se tornar quando o trabalho envolve algo como infravermelho, que quase onipresente e invisvel a olho nu. Agora que o sensor de luz est funcionando, modifique o cdigo e utilize-o como uma oportunidade para aprender um pouco sobre frequncia. Conforme aprendemos anteriormente, o infravermelho est em todo lugar, portanto, os sensores precisam

filtrar tudo que no est sendo transmitido a uma frequncia especfica. Vamos demonstrar nesta seo, de maneira rudimentar, como funciona a transmisso de frequncia. Isto aqui no deve ser uma experincia cientfica abrangente, mas pode ajudar a ilustrar o conceito. Modificando o Cdigo Ns alteraremos o cdigo para que, quando a leitura de luz aumentar mais de 5 por cento da linha de base, seja iniciado um ciclo que examine as prximas duas leituras, emitindo um cdigo especfico baseado nos cdigos detectados. Primeiro, declararemos algumas variveis adicionais. Precisamos de uma varivel para determinar quantas leituras devem ser feitas para se estabelecer o nmero da linha de base da luz ambiente, uma varivel para conter o saldo de leitura mnimo esperado, um agente iterativo, uma array para conter os cdigos diferentes e um rastreio int para nos informar onde estamos no ciclo. Listagem 8. Declarando Variveis int recvPin = 0; int wait = 1000; int val = 0; int readings = 5; int jump = 0; int i = 0; int code[2]; int incycle = 0;

Em seguida, precisamos fazer algumas leituras durante a configurao, fazer uma mdia e determinar o que significa 5 por cento. Com base em minha experincia, a primeira leitura sempre anormalmente alta, por isso a descartamos. Listagem 9. Fazendo uma Srie de Leituras void setup() { // Inicialize a Interface Serial Serial.begin(9600); Serial.print("establishing baseline... "); val = analogRead(recvPin); // descarte a primeira, pois geralmente ela muito alta. delay(wait); for (i = 0; i < readings;i++) { jump += analogRead(recvPin); delay(wait); } jump = (jump / readings)*1.05; Serial.println(jump); // Emita o valor detectado delay(wait); }

Por fim, durante o loop, voc l o pino. Se voc estiver em um ciclo, ser necessrio salvar o cdigo, e se voc tiver recebido todo o cdigo, emita um resultado. Se no estiver em um ciclo, e a leitura estiver 5 por cento acima da linha de base, voc inicia um ciclo. A Listagem 10 poderia ser mais compacta, mas ela descrita de uma forma mais detalhada para que voc veja o que est acontecendo. Listagem 10. Lendo o Pino void loop() { // Faa uma leitura do Pino Analog val = analogRead(recvPin); switch (incycle) { case 0: if (val > jump) { Serial.println("In Cycle"); incycle = 1; } else { Serial.println("Out Of Cycle"); } break; case 1: if (val > jump) { code[0] = 1; } else { code[0] = 0; } incycle = 2; Serial.println("Read One"); break; case 2: if (val > jump) { code[1] = 1; } else { code[1] = 0; } incycle = 3; Serial.println("Read Two"); break; case 3: if (code[0] == 0 && code[1] == 0) { Serial.println("Reset"); } else if (code[0] == 1 && code[1] == 0) { Serial.println("Turn On");

} else if (code[0] == 0 && code[1] == 1) { Serial.println("Turn Off"); } else if (code[0] == 1 && code[1] == 1) { Serial.println("Explode"); } code[0] = 0; code[1] = 0; incycle = 0; break; } delay(wait); } Se voc salvou e fez upload deste cdigo ( necessrio ativar o monitor serial aps cada upload), voc dever ver quando as leituras esto sendo feitas. Ao acender uma lanterna eltrica sobre o LED, voc pode acionar um ciclo. As duas prximas leituras (uma segunda separada) determinam qual cdigo final emitido. Voc pode acionar as diferentes sadas ligando e desligando a lanterna eltrica alternadamente a uma frequncia de uma vez por segundo. Por exemplo, se voc acender a lanterna eltrica sobre o LED por apenas trs segundos, ser necessrio emitir a mensagem "Explodir". Se voc ligar a lanterna eltrica por um segundo, desligar por um segundo e ligar por um segundo, voc dever acionar o cdigo "Desligar". Aqui est uma amostra da sada. O que voc est fazendo aqui sinalizando uma mensagem binria a uma frequncia muito baixa. Isso se assemelha ao que faz a arma do 'Duino tag, embora ela o faa a uma frequncia muito mais alta. Agora voc deve estar preparado para mergulhar na criao e no teste da arma do 'Duino tag, que sero descritos no restante das sries. Resumo Antes de ir para a Parte 2, voc deve reunir alguns suprimentos: Um ferro de solda e um pouco de solda. Voc no precisa ter nenhuma idia, j que no far nenhuma soldagem simples ou complexa. Um par de cortadores/desencapadores de fios. Aviso: No use seus dentes para desencapar os fios. Os componentes eletrnicos descritos anteriormente. Explore o site do Arduino e trabalhe em alguns destes tutoriais. Examine o cdigo do sensor de luz do LED e veja o que mais voc pode fazer com ele. E talvez o mais importante, recrute alguns amigos para concluir este projeto com voc. Ser mais recompensador (e mais fcil para voc) se houver outras pessoas envolvidas.

Parte 2 Recursos Aprender Visite o site oficial do Arduino. Leia Introduo ao Arduino. Consulte os Guias de instalao e configurao do Arduino. Certifique-se de ler Referncia de Linguagem do Arudino. Freeduino uma verso de forma livre do Arduino no desenvolvida sob um processo de design centralizado. "Build It. Share It. Profit. Can Open Source Hardware Work?" uma introduo da revista Wired ao Arduino e ao perfil dos desenvolvedores por trs dele. Saiba mais sobre radiao infravermelha (IR). Leia Um estudo analtico dos sinais de IR utilizados por um controle remoto da Sony . Leia radiao infravermelha explicada. Obtenha todo tipo de informao sobre LED. Para ouvir entrevistas e discusses interessantes para desenvolvedores de software, consulte podcasts do developerWorks. Mantenha-se atualizado com Eventos Tcnicos e Webcasts do developerWorks. Consulte novas conferncias, exposies, webcasts e outros Eventos em todo o mundo que so extremamente interessantes para desenvolvedores de software livre da IBM. Visite a Zona de Software Livre do developerWorks para obter instrues sobre como fazer as coisas, ferramentas e atualizaes de projetos para ajud-lo a desenvolver tecnologias de software livre e us-las com produtos IBM. Assista e aprenda sobre a IBM e tecnologias de software livre e funes de produto com os demos On Demand gratuitos do developerWorks. Obter produtos e tecnologias Faa o download do software Arduino. Saiba onde Comprar uma Placa Arduino. Digi-Key.com oferece uma variedade de componentes eletrnicos com preos razoveis.

Mouser Electronics outra excelente fonte de componentes eletrnicos. A seleo em All Electronics Corp. um pouco mais limitada que da Digi-Key ou Mouser, mas ainda assim muito boa. Maker Shed oferece um excelente kit inicial de Arduino. Inove seu prximo projeto de desenvolvimento de software livre com software de teste da IBM, disponvel para download ou em DVD. Faa o download das verses de avaliao do produto IBM e tenha em mos as ferramentas de desenvolvimento de aplicativos e os produtos de middleware do DB2, Lotus, Rational, Tivoli e WebSphere. Discutir Participe de blogs do developerWorks e se envolva na comunidade do developerWorks.

Você também pode gostar