You are on page 1of 16

Antes de Iniciar

Independentemente de você ser novo no Arduino ou um construtor ocasional, este


projeto tem algo para você. Não há nada mais satisfatório do que criar um objeto
físico interativo sabendo que se ele quebrar ou precisar de modificação, você vai
saber onde estão todas as peças 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 básico de eletrônicos (você deve saber
o que é um resistor, mas não precisa conhecer a ciência por trás disso) e ter um
entendimento sobre programação (você deve saber o que são loops e variáveis, mas
não precisa estar preparado para analisar uma Notação do Grande O). Não tenha
medo de começar.

Sobre Esta Série

Nesta série, nós utilizamos a tecnologia Arduino para criar jogos de laser interativos
básicos chamados 'Duino tag:
Parte 1: Aprender os princípios básicos do Arduino, esboçar o projeto e fazer uma
experiência 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ê não precisa ter nenhuma experiência com eletroeletrônicos,
embora a experiência com o trabalho com componentes eletroeletrônicos 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 experiência. Acima de tudo, você deve estar disposto a ampliar
suas habilidades. O trabalho com eletroeletrônicos e microcontroladores pode ser
uma experiência compensadora. Muitos engenheiros de software não têm a chance
de gravar código para dispositivos que criam uma interface com o mundo físico, e o
Arduino fornece um ponto de entrada de baixo custo para o trabalho com
dispositivos interativos.

Este tutorial, Parte 1, em uma série de três partes, "Construindo um Jogo de Laser
Baseado no Arduino", se concentra nos princípios básicos do Arduino. Vamos fazer
uma introdução ao uso do Arduino e examinar os princípios básicos de linguagem e
API. Vamos preparar o projeto 'Duino tag, incluindo princípios básicos de design e a
criação de uma lista de peças. Vamos aprender sobre como solicitar peças on-line,
onde procurar e quais peças são necessárias. Por fim, utilizando alguns
componentes em estoque e alguns códigos de teste básicos, demonstraremos os
princípios básicos que controlam como funciona a arma.

Requisitos do Sistema

Para este tutorial, precisamos de algumas ferramentas e suprimentos:


Computador com porta USB
Embora tecnicamente não seja verdade (muitos tipos de hardware Arduino criam
interfaces através de portas seriais de estilo antigo), esta série é gravada supondo
que você esteja utilizando um modelo que se comunica através de USB. Existe um
software Arduino disponível para Microsoft® Windows®, Mac OS X e Linux® (32 bits
e AMD 64 bits).
Arduino Diecimila
Este é o modelo específico 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 básico
Talvez você já tenha um ou pode encontrar um na Radio Shack ou com um
revendedor on-line.
Lanterna elétrica
Quanto mais clara, melhor.
Software Arduino
Consulte Recursos para fazer o download do software Arduino.
Guias de instalação e configuração para Arduino
Consulte Recursos para fazer o download do guia de instalação do Arduino.

Introdução ao Arduino

Nesta seção, apresentamos os princípios básicos 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


minúsculo com vários pinos de entrada e de saída. Utilizando estes pinos, você pode
criar inúmeros dispositivos interativos, que vão 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 Milão. Consulte Recursos para ler um
artigo da revista Wired que traça 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 programação). Ambas as partes da plataforma são software livre. Se você quiser,
é possível fazer o download de esquemáticos para o Arduino, comprar todas as
peças individuais necessárias, cortar a placa de circuito e começar do zero. Existem
inúmeros projetos diferentes, como Freeduino, que fizeram isso. Os esquemáticos e
os arquivos CAD foram liberados sob a licença Creative Commons Share-Alike. O
software utilizado para programar o Arduino também é um software livre. Ele foi
escrito em linguagem de programação Java™ e liberado sob GPL (existem algumas
bibliotecas de microcontrolador C/C++ que foram liberadas sob LGPL).

Existem várias plataformas de microcontroladores disponíveis, e muitas delas estão


concentradas no mesmo objetivo: facilitar a programação e a criação 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
benefícios adicionais:
Baixo custo
Uma pessoa pode construir uma placa Arduino do zero com pouco dinheiro, e as
unidades pré-montadas são baratas. Um Arduino Diecimila custa em torno de $35.
Software para várias plataformas
Obtenha o software Arduino para Microsoft Windows, Mac OS X e Linux.
Linguagem simples
Os desenvolvedores do Arduino tentam manter sua linguagem fácil de usar para
iniciantes, mas flexível o bastante para usuários avançados.
Software livre
O Arduino é completamente um software livre. Se quiser construir seu próprio
software ou modificar um, você é livre para isso. Além disso, o Web site oficial do
Arduino contém um wiki extensivo no qual amostras de código e exemplos são
compartilhados livremente.

Existe uma grande quantidade de informações disponíveis sobre o Arduino. O


melhor lugar para se começar é no Web site oficial (consulte Recursos). Leia uma
excelente introdução nesse site.

Introdução

Para se criar uma interface com o hardware Arduino, você precisa instalar o
software. Faça o download para o seu sistema operacional e siga o guia de
instalação e configuração 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
Faça o upload de um exemplo

Nós não cobriremos cada etapa detalhadamente, já que elas são diferentes de um
ambiente para outro. Vamos discutir o software e o exemplo Blink.

Nota: Na linguagem Arduino, programas e scripts individuais são referidos como


"esboços."

Após ativarmos o software e carregarmos o exemplo Blink (de acordo com as


instruções no Guia de Introdução), você verá algo semelhante à Figura 1.

Resumindo a interface, a linha superior de botões controla tarefas básicas como


compilar, criar e salvar arquivos, fazer o upload de código para a placa Arduino e
ativar ou desativar o Serial Monitor (falaremos sobre isso mais tarde). A área de
janela do meio contém todo o código para o exemplo Blink e a área de janela inferior
exibe a saída do console, erros de compilação e mensagens seriais (quando Serial
Monitor estiver ativado). Por enquanto, vamos nos concentrar na área de janela do
meio e discutir a linguagem Arduino.

Princípios Básicos da Linguagem Arduino

A linguagem Arduino é baseada em C/C++, e se você tiver utilizado esta linguagem


antes, os construtores e recursos lhe serão familiares. Embora uma revisão 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 básico se você já estiver acostumado a trabalhar com código, portanto, se
você preferir, pegue um manual e entre de cabeça; sinta-se livre para se aprofundar
na referência de linguagem estendida (consulte Recursos para conhecer a referência
de linguagem estendida).

Primeiro, consulte o grande bloco de comentários. Os comentários sobre a


linguagem Arduino são 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 variável: int ledPin = 13;.

Esta linha diz a você imediatamente quais linhas na linguagem Arduino terminam
com ponto e vírgula. Além disso, ela diz quase tudo que precisamos saber sobre a
declaração de variáveis na linguagem Arduino. A sintaxe: Declarar o tipo de variável,
declarar o nome da variável, configurar o valor inicial da variável. Além 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 Referência de Linguagem Arduino, mas observe também o tipo array. Cada
método mostrado na Listagem 3 é aceitável quando se declara uma array.

Listagem 3. Métodos 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. Não se preocupe. Elas farão mais sentido quando
começarmos a utilizá-las.

Nota: Arrays têm índice de zero.

A Listagem 4 mostra a função setup.

Listagem 4. Função setup


void setup()
{
pinMode(ledPin, OUTPUT);
}
Esta função será executada uma vez quando a placa Arduino for reconfigurada.
Cada esboço deve ter uma função setup, mesmo se a função estiver vazia. Nesse
caso, a função setup será utilizada para configurar o modo para um dos pinos do
hardware Arduino. Ignore a instrução pinMode por enquanto e observe a estrutura da
função. Funções são declaradas através de seu tipo de retorno (nesse caso, void
indica que a função não retornará nenhum valor) e do nome da função. Seguindo o
nome da função, quaisquer parâmetros necessários são declarados dentro de
parênteses. A função setup não aceita parâmetros, mas se quisermos criar uma
função que aceite um ou mais parâmetros, declararemos os parâmetros como se
estivéssemos declarando uma variável.

Listagem 5. Declarando Parâmetros


void someFunction(int a, int b=2)

Finalmente, podemos ver que o código de função está entre chaves.

A seguinte função setup é outra função chamada loop.

Listagem 6. Função loop


void loop()
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

Após a função setup ser executada, a função loop é chamada, indefinidamente, até a
placa Arduino ser desligada ou algum evento cataclísmico criar uma lacuna no
espaço e no tempo. É na função loop que, normalmente, fazemos a maior parte do
nosso trabalho, atendendo à entrada do sensor e acionando alguma forma de saída.
Assim como com a função setup, cada esboço deve ter uma função loop, mesmo
que a função esteja vazia.

Além do que aprendemos do exemplo Blink, existem outras coisas que devemos
mencionar resumidamente sobre a linguagem Arduino:
Estruturas de controle mais familiares são suportadas (if, while, for, switch, etc.).
Operadores aritméticos, de comparação, booleanos, bit a bit e compostos são todos
padrão.
A linguagem suporta nativamente certas funcionalidades matemáticas,
trigonométricas, de número aleatório e de comunicação serial.
Podemos incluir bibliotecas externas utilizando instruções #include na parte superior
do esboço.

Além de toda essa funcionalidade padrão, existem inúmeros elementos de


linguagem exclusivos do Arduino. Esses construtores (como as funções pinMode e
digitalWrite que você viu acima) referem-se principalmente ao trabalho com vários
pinos de entrada e de saída no Arduino. Existe um guia de linguagem extensivo no
site do Arduino (consulte Recursos).
OK — Temos materiais introdutórios 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 início. E é. Este
projeto apresenta vários desafios interessantes para se superar. Mas este projeto
será igualmente recompensador — tanto pessoalmente quanto socialmente. Vamos
dar uma olha nesses desafios e recompensas. Nesta seção, começaremos criando a
arma do 'Duino tag.

Por que Construir uma Arma do 'Duino tag?

A página oficial do Arduino é carregada com projetos de amostra, sendo que a


maioria deles é mais fácil do que se aprofundar em algo como uma arma de tag a
laser. A construção de uma arma do 'Duino tag apresentará alguns desafios únicos,
além de oferecer alguns benefícios adicionais impressionantes.

Para darmos um exemplo específico, o trabalho com o infravermelho é complicado.


(Lamentamos muito, mas não 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
código que precisa lidar com milhões de pedidos por segundo. Outra coisa
completamente diferente é tentar lidar com uma fonte de interferência do mundo real
como o sol. As mesmas abordagens de solução de problemas utilizadas durante a
composição do código podem ser úteis em uma tentativa de se trabalhar com os
problemas do mundo real.

Além disso, quando estiver preparado para começar a trabalhar com o


infravermelho, você abre um amplo leque de possíveis projetos que talvez nunca
tenha considerado — desde algo tão simples quanto interagir com sua TV até criar
dispositivos interativos e baratos que se comuniquem uns com os outros através de
IR para controlar diferentes partes de seu computador utilizando um controle remoto
projetado por você.

Além 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 legítima de infravermelho. Haverá um pequeno desafio quando você for lidar
com este problema em particular, e você verá alguns benefícios (e, ainda bem, um
certo prazer) em trabalhar com os vários elementos deste desafio específico.

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 impossível construir apenas um.
Ao envolver amigos, você facilita seu próprio trabalho. Você tem mais sensores para
atirar e mais armas para testar seu próprio sensor. Isso leva à inevitável conclusão: é
divertido. Quando o 'Duino tags estiver ativo e em execução, você será obrigado a
disparar contra seus amigos imediatamente.

E, por fim, em vez de comprar um dispositivo inexplorável e pronto para uso de uma
loja, você terá feito coletivamente sua própria criação. Se não 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. Não é 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 eletroeletrônico?

Projetando a Arma do 'Duino Tag

Antes de podermos começar a projetar a arma, precisamos falar sobre como


queremos que a coisa funcione. Fiz algumas instruções e suposições 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 também 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 munição 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 — são dois sons).

Existem mais variações de regras que poderiam ser incluídas aqui, mas aqui é o
lugar ideal para começarmos. No código, nós escreveremos e estabeleceremos o
seguinte conjunto de regras:
Cada arma possui seis tiros seguros. Não há recarga. Esses tiros podem ser
disparados sem perigo.
Cada jogador pode fazer seis acertos. Após fazer seis acertos, o jogador será
eliminado.
Cada tiro que um jogador disparar após o sexto aumentará a possibilidade de uma
falha catastrófica da arma. No caso dessa falha catastrófica da arma, o jogador será
eliminado.

Falando português claro, você pode sofrer seis disparos e pode disparar seis vezes.
Após 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 instruções dadas antes neste
tutorial, podemos estabelecer alguns princípios básicos 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 durável.

Este tutorial não gastará muito tempo falando sobre como encaixotar sua arma do
'Duino tag. Após os eletroeletrônicos funcionarem, falaremos sobre as opções para
se criar ou adequar diferentes caixas para o projeto. Agora que o comportamento já
foi traçado, é hora de especificar o hardware. Mas não podemos ir muito longe sem
falar um pouco sobre como os sensores infravermelhos funcionam.

Trabalhando com Infravermelhos

Conforme mencionado, a radiação infravermelha está ao nosso redor. O sol a emite,


assim como as lâmpadas, as TVs e os animais (o termo "pit" em pit viper [víbora em
inglês] refere-se à forma do sensor que esta família de cobras possui e utiliza para
encontrar suas presas). Se nós configurássemos um sensor para ser acionado
sempre que algum infravermelho fosse detectado, ele seria acionado
constantemente e, assim, seria virtualmente inútil.

Portanto, se esse for o caso, como funcionam os controles remotos infravermelhos?


O controle remoto para sua TV contém um sensor projetado especificamente que foi
construído para detectar o infravermelho sendo emitido a uma certa frequência. 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 frequência, a TV pode ignorar o
infravermelho que não está vindo do controle remoto. O controle remoto transmite
códigos diferentes para a TV pulsando o sinal de IR.

É assim que a arma do 'Duino tag funciona em sua essência. Esse meio requer um
determinado tipo de sensor de IR. Nós discutiremos isso agora, conforme falamos
sobre as peças que são necessárias e onde elas podem ser obtidas.

Peças

Conforme mencionado, precisamos de uma placa Arduino. Vejamos o que mais será
necessário.
LED infravermelho
Não há nada de especial no LED. Usei um LED de IR de três-quartos T1 da All
Electronics.
Sensor infravermelho
Esta série foi escrita utilizando um Sensor Infravermelho TSOP2138YA (também da
All Electronics).
Comutador transitório de um pólo
É o acionador, portanto, queremos algo que não seja muito pequeno e nem muito
grande.
Elemento Piezo
Utilizamos para emitir sons. Sugiro o uso de um pequeno e revestido.
fiação solid ou stranded com 22 calibradores
Precisamos de duas cores. Não precisamos de muito — um metro no máximo.
Resistores
Precisamos de dois resistores diferentes. Um resistor de 100Ω (100 ohm ou marrom-
preto-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 três quartos a uma polegada de diâmetro) — na
primeira vez, você pode utilizar aquela lente de plástico barata que ganhou como
lembrancinha em uma festa.
Tubo
Um pequeno cano de PVC ou outro tubo rígido.

Essas peças custam $5 ou menos, dependendo de onde você comprar.

Onde Encontrar as Peças

Você deve estar preparado para andar na Radio Shack e encontrar tudo que precisa
para concluir esta série. Se você preferir comprar de um revendedor on-line, veja
aqui três recomendações:
Digi-Key
Oferece uma variedade de componentes eletrônicos com preços razoáveis
Mouser
Outra excelente fonte de componentes eletrônicos on-line
All Electronics Corp.
A seleção é 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 também apresentará várias opções. Se você decidir
comprar em outro lugar, lembre-se destas quatro questões:
Consulte o tempo de entrega, principalmente quando comprar de um vendedor da
eBay. Você pode encontrar vários componentes eletrônicos de vendedores da eBay,
mas muitas vezes os itens são enviados diretamente da China, o que pode levar
uma ou duas semanas.

Não compre nada que não tenha uma folha de especificações. Todos os
componentes eletrônicos possuem o que é conhecido como folha de especificações
que lista diversas informações vitais sobre voltagem, fiação, etc. Se você não tiver
estas informações em mãos, o trabalho com seus componentes pode se transformar
em um desafio.
Pechinche. Os preços dos componentes variam muito. Não tenha medo de fazer
uma referência cruzada dos preços oferecidos em sites diferentes. A menos que
esteja fazendo um pedido muito grande, não fará muito sentido comprar sensores
em um site e LEDs em outro. Mas ainda assim você deve verificar se está
comprando por um preço competitivo.
Seja preciso com números de modelos, principalmente com o sensor de IR. Isso
pode parecer óbvio se você já tiver trabalhado com eletroeletrônicos antes, mas
pode parecer pouco óbvio se você for novo nesta área. Os sensores de IR têm
vários fabricantes e modelos, além de terem aparência semelhante, mas suas
frequências são diferentes. A frequência é importante.
Enquanto espera as peças chegarem, vamos fazer algo interessante com o Arduino.
Isso ajudará a aguçar sua vontade de começar o projeto, bem como a introduzir uma
capacidade pouco conhecida do LED. Esta experiência não terminará como parte do
projeto concluído, mas vai ajudar você a ter um melhor entendimento de como
funciona a frequência. Além disso, ela permitirá que você se envolva completamente
com o software e o hardware Arduino.

Fazendo uma Experiência com o Arduino

Vamos fazer uma pequena experiência que nos ensine algo novo sobre o LED e que
nos ajude a entender tudo sobre frequência.

Um Truque Interessante para Aguçar sua Vontade

Anteriormente, dissemos que precisamos de um LED e de uma lanterna elétrica 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. Além de piscar, brilhar e
apagar, o LED pode ser utilizado para detectar a presença de luz. Para obter os
melhores resultados, utilize um LED colorido (como vermelho) e uma lanterna
elétrica 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
cátodo (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 código para escutar o pino 0 Analog e fazer
a leitura para o monitor serial (eu avisei que voltaríamos 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()
{
// Faça uma leitura no Pino Analog
val = analogRead(recvPin);
// Emita o valor detectado
Serial.print("DETECT : ");
Serial.println(val);
// Aguarde para fazer a próxima leitura.
delay(wait);
}

Você pode ver que não há muita coisa neste código. Nós configuramos algumas
variáveis, inicializamos a interface serial e fizemos leituras a partir da entrada
analógica uma vez por segundo. É um script simples, mas com efeito super
interessante. Salve o script e faça seu upload para o hardware Arduino. Após o
upload ser concluído, clique no botão Serial Monitor na parte superior da janela do
Arduino. Isso vai reconfigurar a placa Arduino e, a partir daí, você começará 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 número 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 elétrica 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 analógica, que percorre uma escala de 0-1,023, pulou
para quase 90 quando a lanterna elétrica iluminou o LED. Mais uma vez, os números
podem variar muito, dependendo da luz ambiente, da escolha do LED e da força da
lanterna elétrica. Mas basicamente, isso se refere a sensores de luz.

Agora, para fazer uma comparação, acenda várias 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 números 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 elétrica 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 diferenças numéricas ficariam muito mais sutis. Para ilustrar isso, configure o
Arduino de uma maneira que você possa direcionar a luz da lanterna elétrica para o
LED do outro lado da sala e examine os resultados.

Além de mostrar uma nova forma interessante de se usar o LED básico, este
exemplo ajuda a ilustrar a dificuldade inerente ao trabalho com luz ambiente visível e
detecção de luz. Você pode imaginar quão complicado este problema pode se tornar
quando o trabalho envolve algo como infravermelho, que é quase onipresente e
invisível a olho nu.

Agora que o sensor de luz está funcionando, modifique o código e utilize-o como
uma oportunidade para aprender um pouco sobre frequência. Conforme aprendemos
anteriormente, o infravermelho está em todo lugar, portanto, os sensores precisam
filtrar tudo que não está sendo transmitido a uma frequência específica. Vamos
demonstrar nesta seção, de maneira rudimentar, como funciona a transmissão de
frequência. Isto aqui não deve ser uma experiência científica abrangente, mas pode
ajudar a ilustrar o conceito.

Modificando o Código

Nós alteraremos o código para que, quando a leitura de luz aumentar mais de 5 por
cento da linha de base, seja iniciado um ciclo que examine as próximas duas
leituras, emitindo um código específico baseado nos códigos detectados. Primeiro,
declararemos algumas variáveis adicionais. Precisamos de uma variável para
determinar quantas leituras devem ser feitas para se estabelecer o número da linha
de base da luz ambiente, uma variável para conter o saldo de leitura mínimo
esperado, um agente iterativo, uma array para conter os códigos diferentes e um
rastreio int para nos informar onde estamos no ciclo.

Listagem 8. Declarando Variáveis


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 configuração, fazer uma


média e determinar o que significa 5 por cento. Com base em minha experiência, a
primeira leitura é sempre anormalmente alta, por isso a descartamos.

Listagem 9. Fazendo uma Série 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á necessário
salvar o código, e se você tiver recebido todo o código, emita um resultado. Se não
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()
{
// Faça 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 código (é necessário ativar o monitor serial após
cada upload), você deverá ver quando as leituras estão sendo feitas. Ao acender
uma lanterna elétrica sobre o LED, você pode acionar um ciclo. As duas próximas
leituras (uma segunda separada) determinam qual código final é emitido. Você pode
acionar as diferentes saídas ligando e desligando a lanterna elétrica alternadamente
a uma frequência de uma vez por segundo. Por exemplo, se você acender a lanterna
elétrica sobre o LED por apenas três segundos, será necessário emitir a mensagem
"Explodir". Se você ligar a lanterna elétrica por um segundo, desligar por um
segundo e ligar por um segundo, você deverá acionar o código "Desligar". Aqui está
uma amostra da saída.

O que você está fazendo aqui é sinalizando uma mensagem binária a uma
frequência muito baixa. Isso se assemelha ao que faz a arma do 'Duino tag, embora
ela o faça a uma frequência muito mais alta.

Agora você deve estar preparado para mergulhar na criação e no teste da arma do
'Duino tag, que serão descritos no restante das séries.

Resumo
Antes de ir para a Parte 2, você deve reunir alguns suprimentos:
Um ferro de solda e um pouco de solda. Você não precisa ter nenhuma idéia, já que
não fará nenhuma soldagem simples ou complexa.
Um par de cortadores/desencapadores de fios. Aviso: Não use seus dentes para
desencapar os fios.
Os componentes eletrônicos descritos anteriormente.

Explore o site do Arduino e trabalhe em alguns destes tutoriais. Examine o código 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 fácil para você) se houver outras pessoas envolvidas.
Parte 2
Recursos

Aprender
Visite o site oficial do Arduino.

Leia Introdução ao Arduino.

Consulte os Guias de instalação e configuração do Arduino.

Certifique-se de ler Referência de Linguagem do Arudino.

Freeduino é uma versão de forma livre do Arduino não desenvolvida sob um


processo de design centralizado.

"Build It. Share It. Profit. Can Open Source Hardware Work?" é uma introdução da
revista Wired ao Arduino e ao perfil dos desenvolvedores por trás dele.

Saiba mais sobre radiação infravermelha (IR).

Leia Um estudo analítico dos sinais de IR utilizados por um controle remoto da


Sony .

Leia radiação infravermelha explicada.

Obtenha todo tipo de informação sobre LED.

Para ouvir entrevistas e discussões interessantes para desenvolvedores de software,


consulte podcasts do developerWorks.

Mantenha-se atualizado com Eventos Técnicos e Webcasts do developerWorks.

Consulte novas conferências, exposições, webcasts e outros Eventos em todo o


mundo que são extremamente interessantes para desenvolvedores de software livre
da IBM.

Visite a Zona de Software Livre do developerWorks para obter instruções sobre


como fazer as coisas, ferramentas e atualizações 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 funções de produto


com os demos On Demand gratuitos do developerWorks.

Obter produtos e tecnologias


Faça o download do software Arduino.

Saiba onde Comprar uma Placa Arduino.

Digi-Key.com oferece uma variedade de componentes eletrônicos com preços


razoáveis.
Mouser Electronics é outra excelente fonte de componentes eletrônicos.

A seleção 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 próximo projeto de desenvolvimento de software livre com software de


teste da IBM, disponível para download ou em DVD.

Faça o download das versões de avaliação do produto IBM e tenha em mãos 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.

You might also like