You are on page 1of 83

Mrcio Gomes

Assessoria de Incluso Digital


SMED Porto Alegre - RS

Conceitos, referncias
e pr o gr a m a e s
bsicas com Arduino

Agosto 2014
O contedo deste material publicado sob a licena Creative Commons. Voc
tem a liberdade de compartilhar, copiar, distribuir, transmitir e criar obras
derivadas ainda que para fins comerciais, contanto que o crdito seja atribudo
ao autor e que essas obras derivadas sejam licenciadas sob os mesmos termos.

Material elaborado para uso exclusivamente educativos.

Dados Internacionais de Catalogao na Publicao (CIP)


G633c

Gomes, Mrcio Luciano Santos Silva.


Conceitos, referncias e programaes bsicas com Arduino /
Mrcio Gomes. Porto Alegre : SMED, 2014.
83 p. : il.
E-book disponvel em:
<http://websmed.portoalegre.rs.gov.br/escolas/robotica/ebook.htm>

1. Educao. 2. Robtica. 3. Arduino. I. Ttulo.


CDU 37:681.3
Catalogao elaborada pela Biblioteca da Secretaria Municipal de Educao de Porto Alegre/SMED

SUMRIO
CONCEITOS BSICOS......................................................................................................... 5

O que ARDUINO?...............................................................................................................5
Porque usar ARDUINO? ........................................................................................................5
O hardware do ARDUINO... ..................................................................................................6
Como programado o ARDUINO? .......................................................................................7
Como trabalhar com a protroboard? .......................................................................................9
O que so nveis lgicos?......................................................................................................11
PROJETOS INICIAIS........................................................................................................... 13

Programar um LED pisca-pisca ............................................................................................13


Utilizando variveis ..............................................................................................................21
Trabalhando com um boto ..................................................................................................25
Emitindo som com arduino...................................................................................................31
Lendo a intensidade luminosa...............................................................................................34
PROJETOS MAIS COMPLEXOS ........................................................................................ 39

Protegendo o arduino ............................................................................................................39


Acionando um rel................................................................................................................42
Usando um potencimetro ....................................................................................................49
Movimentando um Motor.....................................................................................................58
Movimentando um Motor DC ..............................................................................................60
Movimentando um Servo Motor...........................................................................................70
Sensor ultrasnico HC-SR04 ................................................................................................76

APRESENTAO
A robtica pedaggica um importante vis no universo de ensino-aprendizagem
empreendido na rede municipal de ensino de Porto Alegre. O trabalho desenvolvido ao longo
de anos demonstra quo significativo a aprendizagem mediada pela robtica, quo eficaz e
abrangente se manifesta como ferramenta concreta na relao com o contedo educacional,
quo importante na abrangncia e amplitude de habilidades e competncias desenvolvidas,
quo motivadora ela para todos os envolvidos, quer discentes, quer docentes, ou quaisquer
dos membros da comunidade escolar.
Desenvolver um rob em nossas oficinas algo instigante para todos, pois envolve a
criatividade na manipulao de diversos componentes, impulsiona o pensar sobre
possibilidades de montagens, incita o desenvolvimento de estratgias para atingir objetos,
encoraja a elaborar simples e complexas programaes, induz ao dilogo com as mais
diferentes reas do conhecimento, apresenta um resultado palpvel e concreto a partir das
prprias possibilidades dos envolvidos.
A medida em que os alunos e alunas percebem-se capazes de projetar, montar e programar
aes com seus robs, tambm fortalecem sua autopercepo de maneira positiva consoante
ao desenvolvimento de suas prprias habilidades.
A robtica provoca a necessidade da apropriao e incorporao de tecnologias que no
fizeram parte da formao da imensa maioria dos profissionais que atuam na educao. Nosso
desafio enquanto docentes de aprender, junto com os alunos, algumas tcnicas e formas de
melhor trabalharmos na construo, montagem e programao dos robs, vencendo o receio
paralisante que geralmente as tecnologias impactam aos no iniciados.
O presente ebook quer auxiliar nesta tarefa, ao ajudar nas questes tcnicas relacionadas a
programao do Arduino com a sua IDE original. Este ebook ser sucedido com outras
publicaes que potencializem o carater pedaggico do que est apresentado nesta edio.

CONCEITOS BSICOS
o QUE ARDUINO?
fonte de pesquisa:
http://arduino.cc/
http://opentapajos.org/?p=741
http://www.labdegaragem.com.br/wiki/index.php?title=Sobre_Arduino
A palavra "Arduino" nome prprio italiano
que tem origem germnica. composto pelas
palavras hard/hart (forte - brave, hardy,
strong) e win (amigo em saxo antigo)
formando Hardwin (Grande Amigo), que foi
latinizado para Ardovinus, e depois para o
italiano Arduino.

O Arduino uma plataforma de prototipagem eletrnica, criado na Itlia, que teve como
objetivo ser um ambiente de desenvolvimento o mais flexvel e acessvel para as pessoas
que no tinham experincia com programao. destinado a artistas, designers,
entusiastas e qualquer pessoa interessada em criar objetos ou ambientes interativos.

Por que usar ARDUINO?


Recomenda-se o uso do Arduino porque permite o desenvolvimento de inmeros projetos
como sistemas interativos, robs, automao residencial, prottipos industrias ou amadores,
com baixo custo e com nvel de aprendizado acessvel.
Pelo fato de todo material ser disponibilizado em cdigo aberto (open-source) no preciso

gastar com licenas nem ao adquirir o hardware, a placa Arduino, tampouco para usar a
interface de programao, o software. O software disponibilizado para vrias plataformas:
windows, Linux e Mac OS.
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. Os
desenvolvedores do Arduino tentam manter sua linguagem fcil de usar para iniciantes,
mas flexvel o bastante para usurios avanados.
possvel construir manualmente sua prpria placa Arduino. H um esquema detalhado no
prprio site do projeto: http://arduino.cc/en/uploads/Main/ArduinoSeverinoManual2.pdf.

o hardware do ARDUINO...
A base do Arduino o microcontrolador. Um microcontrolador um CI (circuito eletrnico
miniaturizado, tambm conhecido como chip) que incorpora vrias funcionalidades. Alguns
vezes os microcontroladores so chamados de computador de um nico chip. So
utilizados em diversas aplicaes de sistemas embarcados, tais como: carros,
eletrodomsticos, avies, automao residencial, etc.

E esse chip que possui todo hardware para obter dados externos, processar esses dados
e devolver para o mundo externo. Os desenvolvedores do Arduino optaram em usar a linha
de micro controladores da empresa ATMEL. A linha utilizada a ATMega. Existem placas

Arduino oficiais com diversos modelos desta linha, mas os mais comuns so as placas com
os chips ATMega8, ATMega162 e ATMega328p.

h s um tipo de ARDUINO?
H vrios tipos diferentes de Arduino desenvolvidos pelos seus idealizadores, alm de
muitas outras verses clones ou derivadas desses.
Dependendo do tipo de projetos h formatos e configuraes de hardware especficas. O
Arduino Uno um dos modelos mais utilizados, mas Arduino Mega, por exemplo, possui
muito mais portas de entrada, possibilitanto a criao de dispositivos maiores e mais
complexos.
J o Arduino LilyPad foi desenvolvida para vestimentas e tecidos inteligentes. Ele pode ser
costurado diretamente sobre tecido e de modo similar ser conectado com fontes de
alimentao, sensores e atuadores com linha condutiva.
H
uma
verso
gacha
do
Arduino,
o
Mateduino
(http://matehackers.org/doku.php?id=mateduino) desenvolvido pela MateHackers.

Como programado o ARDUINO?


O Arduino tem seu prprio ambiente de programao, Arduino Integrated Development
Environment
(IDE),
que
pode
ser
baixado
gratuitamente
no
site:
http://arduino.cc/en/Main/Software. Esse ambiente de desenvolvimento do Arduino um
compilador gcc (C e C++) que usa uma interface grfica construda em Java. A linguagem
de programao utilizada no arduino derivada dos projetos Processing
(http://www.processing.org/) e Wiring (http://wiring.org.co/).
Alm do ambiente de programao para o Arduino, existem outros softwares que podem
facilitar o entendimento e documentao dessa tecnologia:

Fritzing [http://fritzing.org/] um ambiente de desenvolvimento de software dentro do


projeto Arduino. Possibilita que os usurios possam documentar seus prottipos e,
principalmente, que possam ilustrar a implementao de um projeto real de uma
maneira fcil e intuitiva de ser entendida por outros usurios.
Minibloq [http://blog.minibloq.org/] um ambiente de desenvolvimento grfico para
Arduino onde a programo feita conectando blocos. O principal objetivo auxiliar
o ensino de programao e, em especial, o ensino de robtica em nvel de ensino
mdio.
Scratch for Arduino - S4A [http://s4a.cat/] outro ambiente de desenvolvimento
grfico para Arduino, uma modificao do programa Scratch.
Ardublock [www.ardublock.com] - uma aplicao desenvolvida em java que roda
dentro da IDE do Arduino. Ela semelhante ao S4A, sendo outro ambiente de
desenvolvimento grfico.
A funo do Arduino IDE , alem de escrever o cdigo do programa, compilar esse
programa e envi-lo para a placa do Arduino.

Imagem da abertura do programa do Arduino.

como programar com ARDUINO IDE?


Depois de ter baixado e instalado o programa IDE necessrio configurar o drive, caso voc
esteja utilizando o windows. H documentao na internet explicando passo a passo a
instalao como neste link: http://renatoaloi.blogspot.com.br/2011/10/instalando-arduinoguia-completo.html.
A programao do Arduino fcil de ser compreendida, mesmo para pessoas que nunca
tiveram contato com linguagem de programao anteriormente. A seguir listaremos uma
srie de experimentos simples que usaremos para aprender a programar no Arduino.

como trabalhar com a protroboard?


Baseados http://www.eletronicadidatica.com.br/equipamentos/protoboard/protoboard.htm

Antes de iniciarmos os experimentos vamos entender como funciona a protoboard. Uma


protoboard, tambm conhecida como matriz de contatos, utilizada para fazer montagens
provisrias, teste de projetos, alm de inmeras outras aplicaes.

A protoboard montada por uma base de plstico com vrias entradas destinadas
insero dos terminais dos componentes permitindo que seja possvel montar um circuto
eltrico sem a necessidade de solda.
Internamente existem ligaes determinadas que interconectam os orifcios, permitindo a
montagem de circuitos eletrnicos sem a utilizao de solda.

Acima temos uma figura com um recorte da protoboard. Na figura bem acima temos uma
lista azul e outra vermelha. Na primeira fileira, cada entrada, orifcio, est conectado ao
outro na horizontal e apenas na horizontal. Na segunda fileira, tambm. Ali conectado a
alimentao da protobord, sendo o azul o negativo e o vermelho, o positivo.

Na mesma figura observamos os nmeros que representam as colunas e as letras que


representam as fileiras horizontais. Nesta parte da protoboard, os orifcios esto
interconectados por colunas.
A imagem abaixo ilustra melhor:

Se ligarmos os terminais de vrios componentes na mesma coluna eles entraro em curto.


Os terminais de um componente devem ser colocados em colunas diferentes. Vamos
analisar a figura abaixo:

O led est posiciona com um terminal na linha C dentro da coluna 5, e com o outro terminal
na coluna 6 da mesma linha. O led no acender embora todos os componentes estejam na
mesma linha. Isso porque, entre a coluna 6 e 7 no h passagem de corrente.

o que so nveis lgicos?


Baseado http://www.eletronicadigital.com/site/curso-eletronica-digital/8-licao2.html?start=1

Um outro conhecimento importante o conceito de nvel lgico. um conceito simples, mas


importante para realmente entendermos o que estamos programando.
Como j vimos anteriomente, o arduino trabalha com pinos analgicos e digitais, atravs
deles faz a leitura ou escrever valores baseados na corrente eltrica. Por padro os pinos
digitais trabalham com duas condies possveis: com corrente eltrica ou sem corrente
eltrica significativa. Quando escrevemos em um pino digital colocando ele em nvel alto,
ele passa a fornecer uma corrente de 5v. Quando escrevemos nele colacando em nvel
baixo e no passa mais corrente.
Ento a presena de uma tenso ser indicada como nvel 1 ou HIGH (nvel alto) enquanto
que a ausncia de uma tenso ser indicada por nvel 0 ou LOW (nvel baixo). Esses so
os nveis lgicos.
Importante dizer que os nveis lgicos esto presentes em outros equipamentos eletrnicos.
O 0 ou LOW ser sempre uma tenso nula, ou ausncia de sinal num ponto do circuito, mas
o nvel lgico 1 ou HIGH pode variar de acordo com o circuito analisado. Nos computadores
desktop, a tenso usada para a alimentao de todos os circuitos lgicos, por exemplo, de
5 V. Assim, o nvel 1 ou HIGH de seus circuitos ser sempre uma tenso de 5 V. Nos
notebooks usada uma tenso de alimentao menor, da ordem de 3,2 V, portanto, nestes

circuitos um nvel 1 ou HIGH sempre corresponder a uma tenso desse valor.

PROJETOS INICIAIS
Programar um LED pisca-pisca
fonte de pesquisa:
http://ferpinheiro.wordpress.com/2011/05/18/arduino-controlando-leds-pelo-teclado/
http://www.ladyada.net/learn/arduino/lesson3.html

Componentes necessrios:

1 placa Arduino

1 cabo USB

1 Led
1 resistor 220r (vermelho, vermelho, marrom)

1 protoboard

Fios diversos - jumpers

Conectando os componentes:
Sempre conecte componentes com a placa Arduino desligada
Primeiro, certifique-se de que seu Arduino esteja desligado, desconectando-o do cabo USB. Agora, pegue sua
protoboard, o LED, o resistor e os fios, e conecte tudo como mostra a figura.

Lembrando que o terminal positivo do Led deve ser encaixado junto ao terminal do resistor, do contrrio no
acender. O terminal mais longo o positivo, o anodo do led.

Digitando o cdigo na IDE:


Ao decorrer dos experimentos vamos explicando como trabalhar com a IDE do Arduino. Neste primeiro exemplo
apresentaremos o funcionamento bsico da programao.
Vamos iniciar nossa programao escrevendo um comentrio. Deixar comentrio no cdigo nos ajuda na
organizao do mesmo, principalmente para projetos muito extensos.

Comeamos digitando duas barras //, sem as aspas. Tudo o que escrevermos em uma linha que iniciar
com // interpretado como comentrio e vai ser ignorado pelo compilador. No exemplo acima foi escrito um
comentrio na 1 linha de programao e outro na 2 linha.
Mas poderia ser assim:

/* Tudo o que ficar entre o asterisco e a barra ser considerado comentrio pelo compilador. */

Agora vamos digitar o seguinte cdigo:

Depois clique em Verificar

, verify. Se o cdigo estiver correto no ir apontar nenhum erro. Depois, com o

Arduino conectado ao computador, clique em


deve comear a piscar.

, upload. A programao ser enviada para o Arduino e o Led

Comprendendo o cdigo na IDE - explicao:


H duas funes que so obrigatrias na IDE do Arduino. So elas a setup e a loop. Independente de sua
programao essas funes precisaro serem digitadas.

A funo setup, de configurao. Quando passamos a programao para o Arduino, essa parte ser
executada apenas uma nica vez diferente da funo loop que, como o prprio nome diz, ser executada
infinitamente.
Mas o que uma funo? Funo uma procedimento, um cdigo, que criado para algum fim e que ser
utilizado mais de uma vez. Ento, para no precisarmos digitar um cdigo repetidamente, criamos uma funo
que armazena esse bloco de cdigo. O arduino j vem com funes, digamos, pr-programadas. Esse o caso
da loop e da setup, mas podemos criar as nossas prprias funes. Vamos ver isso mais adiante.

Utilizamos na funo a estrutura mostrada na imagem acima. Os Parmetros: (Ficam entre parenteses) So
separados por vrgulas. O Corpo, os blocos de cdigo: {Ficam entre chaves} So separados por ponto e
vrgula.
Vale ressaltar que o cdigo no arduino sensvel a caixa, isso significa que considera diferentes letras
maisculas e minscula. Na prtica o Arduino interpreta isso VOID, diferente disso void, ou disso Void, ou disso
vOid embora sejam a mesma palavra!

Identificando os parmetros no cdigo estudado:

Identificando o corpo no cdigo estudado:

Sempre comeamos o cdigo pela funo setup. Esta funo do tipo void. H vrias outras tipologias, mas a
void significa que no vai haver um retorno para esta funo, ela apenas ser executada. Mais tarde isso ser
melhor explicado. No momento importante saber que deve ser colocado o tipo void antes do setup e do loop.
Existem vrias outras funes que fazem parte da biblioteca do arduino. Elas nos auxiliam a poupar o trabalho
de programar tudo do zero. A referncia de todas as funes da biblioteca arduino podem ser vistas no site
oficial do projeto em: http://arduino.cc/en/Reference/HomePage.

No exemplo da nossa programao, temos dentro do corpo da funo setup uma outra funo: pinMode.
Declaramos a pinMode para dizer que vamos utilizar o pino 12 da placa arduino. E vamos utiliz-la como sada
(por isso OUTPUT), ou seja, ns vamos fornecer corrente eltrica j que queremos acender um Led.

Mas poderamos, em um outro projeto, querer saber se o Led estivesse acesso, ou se um boto/interruptor
estivesse pressionado. Neste caso gostaramos de fazer a leitura da corrente eltrica. Neste outro caso, iramos
declarar a pinMode, com entrada (ou INPUT).
As portas digitais tem 2 estados, ligada ou desligada. No arduino usamos HIGH ou 1 para assinalar que a porta
dever entrar no estado ligado. Usamos LOW ou 0 (zero) para assinalar que o estado da porta ser desligado.
LOW,

A funo digitalWrite exerce, nesta programao, o atributo de ligar ou desligar o pino digital. Esta primeira linha
da programao est liberando a corrente eltrica para o pino 12.

A funo delay define o tempo, que neste caso de 1 segundo (ou 1000 milisegundos). Depois chamada a
funo digitalWrite que est retendo a corrente eltrica no pino 12. E novamente a funo delay que define
mais 1 segundo de espera.
Na prtica, o led que est no pino 12 acende durante 1 segundo e depois permanece apagado por outro
segundo. Como este bloco de programao est dentro do corpo da funo loop, ser repetido indefinidamente
dando o efeito de pisca-pisca.

O que est acontecendo eletronicamente?


Na programao estamos dizendo para o arduino que ele deve ativar o pino 12 atravs da funo pinMode. Os
demais pinos continuaram inativos. E que ele ser ativado em modo de escrita, ou seja, para fornecer uma
corrente eltrica (OUTPUT).
Na funo loop estamos dizendo que a forma de escrita deve ser digital (digitalWrite). Existem outros tipos de
leitura e escritas no arduino (analgico, pwm, interrupes) mas no vamos tratar desses recursos neste
momento!
Estamos dizendo que o Arduino deve escrever HIGH no pino 12 deixando em nvel alto (HIGH) durante 1000
milisegundos (1 segundo). O que significa que este pino deixara passar 5 volts durante 1 segundo. E depois
estamos informando que o Arduino escrever LOW no pino 12 deixando-o em nvel baixo (LOW) durante outros
1000 milisegundos.

Utilizando variveis
fonte de pesquisa:
http://renatoaloi.blogspot.com.br/2011/11/variaveis-do-arduino.html
http://multilogica-shop.com/Referencia

Componentes necessrios:
Utilizaremos os mesmos componentes do projeto anterior.

Aprimorando o cdigo - usando Variveis e Constantes - Escopo:


O uso da varivel um recurso importante na programao. A varivel dentro do cdigo funciona como se fosse
uma caixa onde se guarda uma informao para ser usada posteriormente. A informao armazenada
depender do tipo de varvel que criaremos.
Exemplos de declarao de uma varivel:
int pinodoled; // aqui iniciamos um varivel sem um valor
int pinodoled = 12; // aqui j iniciamos uma varivel determinando um valor
Usaremos uma varivel para armazenar o pino na qual o led dever estar conectado, ento onde tem escrito o
pino 12, dever ser escrito o nome da varivel criada.
Antes de declarar um varivel importante ter a noo de qual lugar ela dever ser declarada. Uma varavel
para ser reconhecida, ser visvel, em qualquer lugar da programao dever ser declara no escopo correto.
Mas o que um escopo? Na programao escopo o contexto, o limite mximo na qual poder ser utilizado
um recurso.

A figura acima exemplifica como funciona o escopo. Se criarmos uma varivel no contexto global ela ir valer,
vai ser visvel, em toda a programao. Diferente se criarmos uma varivel no contexto do setup ou do loop,
pois ela s ser visvel dentro de um ou de outro destes escopos.

No exemplo da figura abaixo, declarada uma varivel no escopo do setup. O problema que ela chamada
no contexto do loop, mas isso resultar em erro.

Quando tentarmos passar a programao, resultar no erro exposto na figura abaixo. A varivel no ser
reconhecida pois foi declarada em um escopo diferente.

.
A soluo, neste caso declarar a varivel no escopo global, para que ela seja visvel pelo outros escopos. Veja

a figura:

Aprimorando o cdigo - usando Variveis e Constantes - tipos:


No exemplo anterior, declaramos uma varivel int de nome pinodoled e declaramos seu valor como 12. Vamos
entender melhor cada parte da declarao de uma varivel e seus tipos.

Na figura acima declaramos a varivel e j determinamos o seu valor. Mas poderamos apenas declar-la, sem
nenhum valor.
A primeira parte da instruo da declarao da varivel o tipo. Variveis podem ser de vrio tipos. Usamos um
tipo de varivel de acordo com a informao que queremos armazenar dentro dela. No exemplo anterior usamos
o tipo int o que significa que podemos armazernar um nmero inteiro. Mas tambm poderamos usar no lugar de
int uma outra varivel chamada byte.

A varivel de tipo byte pode armazenar nmeros de 0 at 255, utilizando, como o prprio nome sugere, apenas 1
byte de memria. um tipo ideal para armazenar, por exemplo, os pinos digitais que usamos no arduino que
so do 0 at o 13. Na imagem acima alguns exemplos de tipos de variveis.
Vamos deixar o nosso cdigo da seguinte forma:

Trabalhando com um boto


fonte de pesquisa:
http://www.arduinoecia.com.br/2013/05/ligando-uma-lampada-com-rele.html
http://fritzing.org/projects/acionamento-de-um-rele-com-o-arduino

Componentes necessrios:

1 placa Arduino

1 cabo USB

1 protoboard

Fios diversos - jumpers

1 Chave toque | push button | interruptor momentneo | boto de presso|chave tactil (=>nomes
correlatos)

1 Led
1 resistor 220r (vermelho, vermelho, marrom)

Uma primeira observao: nos kits que compramos pela internet geralmente vem junto o boto (push button)
de 4 pinos de contato. Se for usar esse boto neste nosso projeto, fique atento a forma como ele deve ser ligado.
Veja o esquema abaixo:

Fonte: http://www.dreaminc.com.br/sala_de_aula/9b-interruptores-mini-botao-de-pressao/

Observe que no boto de 4 pinos, na parte de baixo dele h um pequeno sulco. De um lado deste sulco ento os
pino 1 e 2 que so interconectados tal como demonstra a figura acima. Do outro lado os pino 3 e 4.
Uma segunda observao: os pinos do arduino alm de fornecer energia fazem tambm a leitura da variao
da corrente eltrica como j foi mencionado anteriormente. No caso de um boto ou de um sensor o que faz um
microcontrolador como o que tem no arduino, no enxergar, no sentir, o boto em si, mas sim interpretar
a energia fornecida.

A montagem:
A montagem na protoboard bem simples. Conectamos o led na coluna 6 da linha J tal como mostra a figura. A
perninha do polo positivo do led ficar na coluna 7.

Adicionamos o resistor com uma perninha na coluna 7, na linha H

Depois colocamos o boto. Neste exemplo estamos utilizando o boto com 4 pinos. Caso tenha alguma dvida
sobre isso releia o tpico anterior. Vamos coloc-lo na linha F com um pino na coluna 13 e o outro na coluna 15.

Vamos alimentar a linha azul da protoboard com um fio vindo do GND do Arduino. Usamos outro fio para
alimentar a coluna 6 e outro para a coluna 15.

Por ltimo conectamos o pino 10 a coluna 11 no resistor (fio vermelho) e pino 8 a coluna 13.

O cdigo:
Digite o seguinte cdigo na IDE do arduino, teste e passe a programao:

Compreendendo o cdigo...
Esse cdigo apresenta uma funo diferente e trabalha um dos operadores lgicos que ainda no vimos. Alm
disso, para esse tipo de montagem com boto, utilizamos na programao o conceito de resistores de elevao
(PULL-UP). Esse conceito ser explicado depois.
No setup dizemos para o arduino que usaremos o pino 8 como sada (OUTPUT). Esse pino ter a funo de
ligar e desligar o led. Colocamos o pino 10 como entrada configurando-o para leitura do boto. E escrevemos no
pino 10 o valor 1. Poderamos ter escrito HIGH que teria o mesmo efeito. Com isso estamos ativando o resistor
de elevao para esse pino (conceito que ser explicado posteriormente).
Dentro da funo loop criamos uma varivel chamada leitura. Atribumos como valor para essa varivel o que
est sendo lido no pino 10.

A funo digitalRead, faz exatamente o oposto da digitalWrite. Enquanto a digitalWrite escreve um valor, a
funo digitalRead l um valor em determinado pino.
Depois geramos uma condicional com a funo if dando um parmetro para verificar se verdadeiro. Neste caso
o parmetro (o que est entre as aspas) a comparao com o valor da varivel leitura. comparada se ela
igual a zero.

Ou seja, s ser efetivada o que esta dentro do corpo desta funo (o que est dentro das chaves{ }) se a
condio do parmetro for verdadeira. Do contrrio a programao segue para a a funo else.
No parmetro da funo if quando comparamos a varivel leitura so utilizados dois sinais de igual ( ==). Isso
porque nesta linguagem de programao usamos s um sinal de igual (=) quando queremos atribuir um valor,
mas quando queremos comparar, fazer um teste de igualdade, usamos dois sinais de igual (= =). Mais adiante
explicaremos sobre operadores de comparao.
Na funo else estamos dizendo ao arduino para escrever no pino digital 8 o valor LOW.

Emitindo som com arduino


fonte de pesquisa:
http://electronicpiece.blogspot.com.br/2012/02/buzzer-arduino.html
http://www.comofazerascoisas.com.br/projeto-arduino-como-emitir-sons-com-o-buzzer.html
http://www.criandorobocomarduino.com/2013/09/como-usar-o-buzzer-som-no-arduino.html
http://www.arduinoecia.com.br/2013/06/sons-no-arduino.html

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 resistor 220r (vermelho, vermelho, marrom)

1 buzzer

A montagem:
A montagem na protoboard muito simples. O nico detalhe que o buzzer um componente que tem
polaridade, mas fcil de identificar qual o seu fio positivo pois ele indicado com o sinal +. Conectamos o
positivo do buzzer no resistor. E conectamos o resistor no pino 8 do arduino. O outro pino do buzzer deve ser
ligado no GND.

O cdigo:

Compreendendo o cdigo...
Esse cdigo apresenta duas funes novas. Na biblioteca do arduino encontramos a funo tone e noTone. A
primeira responsvel por gerar sons a partir da frequncia de 31Hz (som muito grave) at sons inaldveis ao
ouvido humano.
A funo tone tem a seguinte estrutura:

Em pino escrever o pino do arduino que ser conectado o buzzer, no caso colocamos a varivel buzzer que
continha o valor do pino que estamos usando: 8. Na frequncia colocamos um nmero com valor entre 31 e
10.000. Acima de 10.000 o som j comea a ficar imperceptvel dependendo do tipo de buzzer. Na nossa
programao colocamos o valor de 1.500. Convm testar os valores. Temos a opo de colocar ou no a
durao, o tempo que o som ir tocar em milisegundos.. Nesta programao optamos por no colocar nada.

J a funo noTone simplesmente para a gerao do som executado pela funo tone. O nico parmetro para
esta funo o pino que deve ser desativado.

Lendo a intensidade luminosa


fonte de pesquisa:
http://robotpig.net/UAVs-blogs/arduino-and-processing-_1772
http://communityofrobots.com/tutorial/kawal/how-use-ldr-arduino
http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-a-mini-fotocelula-ldr
http://www.comofazerascoisas.com.br/projeto-arduino-sensor-de-luz-ldr-com-leds.html

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 resistor de 10K

1 LDR

A montagem:
Nesta montagem usaremos os pinos analgicos do arduino.

Vamos instalar primeiro o componente LDR. Vamos coloc-lo na linha C com um terminal na coluna 3 e o outro
na coluna 6. Tal como demonstra a figura abaixo:

Na sequencias colocaremos o resistor de 10k na linha E com um dos terminais na coluna 6, onde j tem um dos
terminais do LDR, e o outro terminal na coluna 10. importante que um dos terminais, tanto do LDR, quanto do
resistor, estejam na mesma coluna, neste caso a 6.

Por ltimo fazemos as ligaes entre os pinos e o arduino com os jumpers. A coluna 3 no GND, a coluna 6 no
pino analgico A0 e a coluna 10 no 5v.

O cdigo:
O cdigo tambm trs elementos novos:

Agora clique no Serial Monitor para visualizar o valor da intensidade luminosa. O cone do Serial Monitor fica no
canto direito, conforme mostra a figura. Tambm possvel acess-lo digitando ctrl+shift+M.

Ao aproximar a mo do LDR, impedindo sua exposio a luz, veremos uma alterao dos valores que so
gerados.

Compreendendo o cdigo...
Comeamos declarando uma varivel de tipo inteira (int) chamada de ldr_value e determinamos seu valor
como zero.

Dentro da setup inicializamos a porta de comunicao serial com o Serial. begin informando ao arduino que
queremos utilizar a comunicao serial com a taxa de transferncia de 9600 bits por segundo.

Aqui cabe entendermos o que Serial:


Serial um tipo de comunicao de dados usados entre dois dispositivos eletrnicos. Por exemplo: entre dois
computadores, ou entre um computador e uma impressora, ou entre dois celulares. O nome serial se deve a
natureza deste tipo de comunicao que envia e recebe informao em fila, em srie, os bits so enviados um de
cada vez. Para quem est acostumado com o uso do RCX sabe que precisa ligar a torre na porta serial do
computador, na verdade a uma porta padro RS-232. Esse tipo de conexo foi sendo substitudo pelo USB, que
tambm serial, alis, USB significa Universal Serial Bus.
Pesquise sobre o assunto em http://pt.wikipedia.org/wiki/Comunica%C3%A7%C3%A3o_serial .

Porta serial padro RS-232 de um computador.


A comunicao serial possibilita o Arduino se comunicar com um computador ou com outros dispositivos.
Usamos ela para diversas aplicaes simples e complexas. Podemos utiliz-la para fazer comunicao via
bluetooth por exemplo. A comunicao ocorre atravs dos pinos digitais 0 (RX) e 1 (TX), assim como uma
conexo USB. Por tanto, toda fez que usamos a funo Serial os pinos 0 e 1 no podero ser utilizados.
Algums funes que usamos para declarar a comunicao serial:
1.

Serial.begin(velocidade) - Essa uma funo de configurao. a primeira funo a ser utilizada


quando vai trabalhar com a comunicao serial. Geralmente utilizamos o valor 9600 como parmetro.
Essa a taxa de transferncia em bits por segundo (baud) para transmisso de dados pelo padro
serial. Para comunicao com um computador use uma destas taxas: 300, 1200, 2400, 4800, 9600,
14400, 19200, 28800, 57600, 115200.

2.

Serial.print(dado) - Essa funo envia um determinado dado pela porta serial. Esse dado pode ser uma
varivel, pode ser uma expresso, um nmero.

3.

Serial.println(dado) - Essa funo faz o mesmo que a Serial.print com o diferencial enviar tambm
para a porta serial a indicao de mudana de linha.

4.

Serial.read() - Essa funo l os dados que esto entrando pela porta serial.

Voltando ao cdigo:

Mudamos o valor da varivel ldr_value dizendo que ela deve armazenar a leitura do pino analgico A0.
IMPORTANTE: Agora estamos usando a funo analogRead porque estamos lendo os pinos analgicos e no
os digitais. Na sequncia explicaremos com mais detalhes.

Executamos a funo Serial.println para enviar pela porta serial a varivel ldr_value que, como foi explicado

anteriormente, contm o valor da leitura do LDR instalado na porta analgica A0.

A funo delay, nesta programao, indica o tempo de espera at ser feita uma nova leitura do LDR.

PROJETOS MAIS COMPLEXOS


Protegendo o arduino
fonte de pesquisa:
https://www.youtube.com/watch?v=j3kn4-po5hs
http://www.dreaminc.com.br/sala_de_aula/entendendo-o-atomo/

Recordando conceitos de eletrnica


Disponvel em: http://www.dreaminc.com.br/

Todo componente eletrnico precisa de cuidados especiais obedecendo os limites das suas caractersticas e
composio. Com o arduino no diferente. O arduino Uno, que a referncia para este tutorial, tem um limite
de tenso e corrente que no podemos esquecer!

O arduino pode fornece o mximo de 40mA em uma porta! Isso quer significa que no possvel
ligar componentes eletrnicos que demandem mais corrente que isso! Isso extremamente importante observar
para que o Arduino no seja danificado. O microcontrolador do arduino vai esquentar e queimar. Para termos a
exata ideia do que isso representa vejamos as ilustraes abaixo:

Podemos alimentar diretamente o led em um arduino porque ele demanda 20mA de corrente, como demonstra
na figura acima (alguns leds consomem apenas 7mA). Mas esse rel que esta na segunda figura, no pode ser
alimentado diretamente pelos pinos digitais arduino porque precisa de 96mA o dobro que ele pode fornecer

sem danificar o arduino. E um motor jamais pode ser alimentado pelos pinos do arduino porque demanda uma
corrente muito elevada! Dependendo do motor pode ultrapassar 1A.
Como saberei a corrente de um componente? As especificaes tcnicas dos componentes eletrnicos so
encontradas nos datasheets. Datasheet um documento que apresenta de forma resumida, todos os dados e
caractersticas tcnicas de um equipamento ou produto. Veja o exemplo do datasheet de um rel:
http://www.metaltex.com.br/downloads/A.pdf.

Outro fato importe: embora o arduino possa oferecer 40mA em uma porta, temos que ter o cuidado
de no utilizar mais do que 200mA no conjunto. Um exemplo no podemos usar mais do que 5 portas digitais do
arduino, fornecendo uma corrente de 40mA cada uma delas por que excederia os 200mA. As portas digitais do
arduino so usadas para controlar os dispositivos e no como fonte de alimentao.
Mas e os pinos de alimentao?

Os pinos de alimentao do arduino fornecem 3,3v e 5v de tenso, mas tem como limite 200mA de corrente.
Neste caso um rel pode ser conectado pelos pinos de alimentao por que precisa de 96mA para funcionar.
Mas o motor jamais poder ser alimentado diretamente ao pino de alimentao por exceder o limite da corrente.
Ento como ligamos componentes eletrnicos que necessitam de corrente maior do que o arduino pode
fornecer? Criando um circuito de proteo e ativao.

Circuito de proteo e circuito de ativao


Utilizamos um circuito de proteo para impedir que o arduino seja danificado por uma determinada montagem.
Ao ativar um motor dc, por exemplo, temos que pensar de que forma a corrente reversa no vai danificar o
arduino. H dispositivos que precisam ser acionados com auxlio de um circuito de ativao, alm do circuito de
proteo. Veja o esquema abaixo:

Como montamos um circuito de proteo? Fazemos um circuito de proteo com um transistor. O transistor
funciona como uma espcie de chave que vai mediar a interao entre o arduino e o circuito de ativao ou o
dispositivo a ser acionado. Veja um
exemplo:

Nesta montagem estamos usando o transistor bc546 (nmero 1, indicado pela seta) que est intermediando o
fornecimento de energia para o led. A fonte de energia do led so as pilhas a direita, desta forma o led no entra
em contato diretamente com a porta do arduino. Por isso, mesmo se houvesse um curto circuito, o transistor
que seria danificado e no o arduino. A porta 6 do arduino vai ativar o transistor e este que deixar passar
corrente permitindo ligar o led.
Mas, e se fosse um motor que demanda mais corrente que um led? Teramos que usar um outro componente,
isso porque esse transistor (bc546) tambm queimaria se ligassemos um motor diretamente nele. Para isso
que usamos o circuito de ativao. Que poderia ser um circuito contendo um rel.

Acionando um rel
fonte de pesquisa:
http://www.arduinoecia.com.br/2013/05/ligando-uma-lampada-com-rele.html
http://fritzing.org/projects/acionamento-de-um-rele-com-o-arduino

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers

Rele 5v

1 Diodo 1N4007 (ou similar)

1 Transistor BC548 (ou equivalente NPN)

2 resistores de 10 K

1 Led

Esquema de funcionamento de um rel


Disponvel em: http://2.bp.blogspot.com/-CiyHe8KfW0Q/UUr0FpHF1VI/AAAAAAAAAQE/99JAj-EA2bg/s1600/figura_1_testando_reles.jpg

Um rel funciona como se fosse uma chave. Uma bobina ao ser percorrida por uma corrente, gera um campo
magntico no seu ncleo que atrai um ou vrios contatos eltricos, permitindo ligar, desligar ou comutar um
circuito eltrico externo.

Acima temos uma representao do que acontece com os rels. O rel que usaremos tem 5 pinos | terminais.
Quando deixamos passar corrente entre os terminais da bobina (3 e 4) ela ativada, transformando-se em um
eletroma que puxa a placa metlica, a armadura, fazendo passar corrente entre o comum (1) e o terminal NA
(2).

Ativando o rel com o Arduino


Disponvel em: http://4.bp.blogspot.com/-KZSHBJTXZrY/UYfGO2ueq8I/AAAAAAAAAO8/saFsT32QTfE/s1600/Rele+e+transistor_LED.jpg

Faa a montagem dos componentes na protoboard tal como dispe a figura abaixo. A montagem deve ser
exatamente igual para funcionar corretamente.
Primeiro coloque o trransistor na linha E com a parte arredondada virada para trs e a parte plana voltada
para frente. Cuidado para posicionar corretamente o transistor! Ele deve ficar encaixado nas colunas 7, 8 e 9.

Acrecente o diodo na linha B conforme indica a figura abaixo. O perninha do catodo deve estar conectado na
coluna 3 e o anodo na 7 na mesma coluna que a primeira perninha do transistor. Relembrando: A, anodo, + e
positivo so sinnimos. Da mesma forma, K, catodo, - e negativo, tambm so sinnimos. O catodo fica no lado
onde tem uma linha.

Colocamos um dos resistores na linha C no terminal 8 e no 12.

Agora colocamos o led na linha C com o catodo na coluna 29 e o anodo na coluna 30. O resistor colocamos na
linha B com uma perinha na coluna 25 e a outra na coluna 29, a mesma do catodo do led.

Agora vamos trabalhar com o rel. Esse componente tem 5 pinos. Vamos usar apenas 4. Caso tenha dificuldade
com os pinos, releia sobre os rels, logo acima. Vamos enrolar uma ponta de fio no pino NA do rel e ligar a
outra ponto na coluna 30, a mesma do anodo do led.

Agora conecte um fio na coluna 7 da protoboard at o terminal da bobina do rel. Conecte outro fio da linha
vermelha da protoboard para o outro terminal da bobina do rel, conforme mostra a figura.

Conecte um fio na linha vermelha da protoboard ao terminal comum do rel. Tambm conecte um fio entre a

coluna 9 e a linha azul da protoboard e um outro entre a coluna 25 e a linha azul. Veja as indicaes das setas
na figura abaixo.

Por fim vamos colocar um fio saindo do 4 do arduino para a coluna 12 da protoboard. Alm disso, alimentamos a
protoboard colocando o GND do arduino na linha azul da protoboard e o 5v na linha vermelha.

Vamos explicar a funo de cada um dos componentes deste circuito: A funo do diodo impedir uma corrente
reversa que poderia danificar o arduino. O transistor, funciona como um chave que ser ativada quando

mandarmos energia do arduino para ele, atravs do pino 4. Entre o fio amarelo (que vem do pino 4) e o
transistor, temos um resistor de 10k. A funo deste resistor limitar a corrente que ir para o transistor.
Embaixo temos o rel. Logo acima dele, temos um outro resistor e um led. Este resistor tem a funo de limitar a
corrente para no queimar o led.

O cdigo:
O cdigo para ligar um rel muito simples. Ele praticamente igual ao cdigo para ligar o led pisca-pisca. A
diferena maior o valor do delay. Digite o cdigo abaixo na IDE do arduino e faa o teste.

Usando um potencimetro
fonte de pesquisa:
http://www.ajudino.com/2013/04/3-utilizando-potenciometro-no-arduino.html
http://www.comofazerascoisas.com.br/projeto-arduino-como-controlar-um-led-com-potenciometro.html
http://deivson-robotica.blogspot.com.br/2012/01/ligar-led-com-valor-do-potenciometro.html
http://www.pnca.com.br/index.php?option=com_content&view=article&id=67:pwm&catid=42:saiba-mais&Itemid=150

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 led
1 resistor de 150 (150 ohms)

(marrom, verde, marrom)

1 potencimetro 10K

A montagem:
Essa montagem no difcil. Os 3 pinos do potencimetro se encaixam perfeitamente na protoboard. Mas fique
atento para verificar exatamente em qual coluna eles realmente esto encaixados por que eles somem debaixo
do potencimetro. O pino que fica no meio do potencimetro dever ser conectado a pino analgico A0. O pino
da esquerda ligado ao GND e o pino da direita ao 5v.
A montagem do led j foi feita. Relembrando: colocar o anodo do led conectado ao resistor e deste para o pino
digital 6. O Catodo no led vai para o
GND.

O 1 cdigo - programando um pisca-pisca:


Vamos utilizar nesta montagem 2 diferentes cdigos. Comeamos com o mais fcil de entender:

Compreendendo o 1 cdigo...
Iniciamos este cdigo declarando trs variveis de tipo int. A varivel led para indicar o pino digital onde o led
estar conectado. A varivel potenciometro que indicar o pino analgico onde o potencimetro est
conectado. E a varivel tempo que armazenar o valor de leitura do potencimetro.

Depois configuramos o pino que ser conectado o led como pino de sada de dados, dentro do setup:

Dentro do loop, primeiro determinamos que o valor da varivel tempo seja alterado para o que o pino analgico
est lendo. Lembrando que o pino analgico a varivel que est dentro do parnteses:

Na sequncia entra a programao do led pisca-pisca. Escrevemos no pino (representado pela varivel led) o
valor HIGH deixando-o em nvel alto o que acende o led. Determinamos que o tempo de espera, o delay, ser a
leitura do potenciometro (que est armazenado na varivel tempo). Depois escrevemos no pino led o valor
LOW deixando-o em nvel baixo o que apaga o led. E mais uma vez determinamos o tempo conforme a leitura
do potencimetro.

H um conceito importante subentendido nesta programao: a diferena entre pinos analgicos e


pinos digitais. Em que consiste esta diferena?
Como j foi descrito no incio desta publicao, os pinos digitais trabalham por padro com duas
condies possveis sendo colocados em nvel alto (true ou HIGH ou 1 com uma sada de 5v) ou em
nvel baixo (false ou LOW ou 0 com uma sada de 0v). Fogem a esse padro os pinos digitais PWN
que explicaremos adiante.

Algumas vezes necessitamos que o Arduino interprete com mais preciso a tenso aplicada a um pino. Para isso
utilizamos a Leitura Analgica. Os pinos analgicos permitem que o Arduino traduza a tenso em valores que
variam de 0 at 1023. Isso realizado por um circuito interno, chamado Conversor Analgico Digital (CAD).

Os pinos analgicos tem uma sensibilidade e uma preciso muito maior para vrios tipos de projetos. Nesta
programao estamos usando essa sensibilidade para fazer o ajuste do tempo.
Quando giramos o mbolo do potencimetro totalmente para a direita, no sentido horrio, ajustamos o tempo em

1024 milionsimos de segundo fazendo com que o led pisque neste intervalo de tempo. A medida que fazemos o
giro no sentido contrrio diminumos esse intervalo de tempo aumentando a velocidade das piscadas do led.

O 2 cdigo - programando a intensidade do led com PWN:


Vamos escrever um novo cdigo utilizando a mesma montagem. Desta vez utilizaremos do conceito de PWN
que explicaremos a seguir. Primeiro o cdigo:

Compreendendo o 2 cdigo...
Iniciamos este cdigo declarando trs variveis de tipo int exatamente como fizemos no cdigo anterior, apenas
substituindo a varivel tempo pela valor. Relembrando: a varivel led para indicar o pino digital onde o led estar
conectado. A varivel potenciometro que indicar o pino analgico onde o potencimetro est conectado. E a
varivel valor que armazenar o valor de leitura do potencimetro.
Ento configuramos o pino que ser conectado o led como pino de sada de dados, dentro do setup exatamente
igual como o cdigo anterior.
Dentro da funo loop programamos para que a varivel valor armazene o que est sendo lido pelo
potencimetro:

Depois vem a novidade.

Usamos a funo analogWrite que vai escrever um valor analgico em um pino. Nesta linha de programao
estamos acionando a funo analogWrite determinando que no pino 6 (que o valor da varivel led, portanto
onde est led leia-se 6) deve ser escrito o resultado de uma operao matemtica valor /4.
Poder parecer estranho em um primeiro momento, mas no estamos dividindo a palavra valor por 4. o
contedo do que est armazenado na varivel valor que ser dividido por 4. A varivel valor armazena a leitura
do potencimetro que est no pino analgico.

Mas porque estamos usando uma funo analgica, analogWrite, em um pino digital? Porque
estamos usando um pino PWN.
A Modulao por Largura de Pulso, ou PWM (do ingls Pulse Width Modulation), utilizada em
alguns pinos digitais do arduino. No arduino Uno os pinos que permitem o PWM so os de nmero 3,
5, 6, 9, 10 e 11. Esses pinos esto identificados na placa do arduino com um sinal de ~ ou com a
sigla pwm.
J vimos que o padro dos pinos digitais permitirem apenas 2 estados: em nvel alto (true ou HIGH
ou 1 com uma sada de 5v) ou em nvel baixo (false ou LOW ou 0 com uma sada de 0v). Tambm
vimos que os pinos analgicos permitem 1024 estados. O pinos PWN permitem 255 estados. So os
mesmos pinos digitais mas que oferecem uma sada de tenso varivel, ao invs de 5v ou nada.
PWN? Me explica melhor o que isso?
Para entender melhor o funcionamento do PWN vamos imaginar um circuito formado por um pack de
4 pilhas, um motor e um interruptor com uma velocidade muito rpida de acionamento. Neste, temos
um interruptor que quando acionado faz com que o motor receba 6v e funcione com 100% de
potncia. Quando o interruptor no est precionado, o motor no recebe energia e simplesmente no
funciona.

Vamos supor que consigamos pressionar e soltar o interruptor um grande nmero de vezes por
segundo com intervalos regulares, de tal forma que metade do tempo ele fica ligado e metade
desligado. O resultado seria uma onda quadrada como mostra a figura abaixo:

No exemplo o tempo t1 corresponde ao tempo que o interruptor fica precionado e t2 o tempo que ele
fica livre. Como neste caso t1 igual a t2, durante a metade do tempo o motor recebe a tenso de 6v
e na outra metade ele recebe 0v. A tenso mdia, desta figura, aplicada ao motor neste caso de
3v, ou seja, 50% da tenso vinda da bateria.

claro que no possvel usar um interruptor em um circuito com PWM, pois no conseguiramos
pression-lo na velocidade necessria. O arduino executa esta tcnica gerando os pulsos que so
entregues sempre com uma mesma taxa (aproximadamente 500 por segundo).

No arduino, ou em outro circuito que trabalhe com pwn, para diminuir a velocidade do motor,
reduzido a largura dos pulsos, mantendo-o menos tempo ligado, conforme a figura a seguir. O ciclo
ativo de 30% por que o tempo ativo corresponde a 30% do perodo da onda. O resultado prtico
disso que a mdia da tenso recebida pelo motor fica em 1,8v.

J na prxima figura o ciclo ativo de 80% e o motor ir girar mais rpido que no exemplo anterior
porque permanece mais tempo ligado no 6v.

Para entender melhor sobre PWM pesquise nos sites:


http://www.pnca.com.br/index.php?option=com_content&view=article&id=67:pwm&catid=42:saibamais&Itemid=150
http://googolplex.com.br/arduino/entendendo-pwm-no-arduino
http://books.google.com.br/books?id=C2U3AgAAQBAJ&pg=PA90&lpg=PA90&dq=pulsos+por+segun
do+arduino+pwn&source=bl&ots=GK7s_uFwpq&sig=GKZcPXIJ8jPz86YltspN-6NeOjg&hl=ptBR&sa=X&ei=iTmoU6nMB6i0sQSi7YHADw&ved=0CF4Q6AEwCDgK#v=onepage&q=pulsos%20por
%20segundo%20arduino%20pwn&f=false
http://www.newtoncbraga.com.br/index.php/robotica/5169-mec071a

O 3 cdigo - utilizando a funo map para converter valores analgicos em


PWN:
Este cdigo ampliaremos nosso conhecimento sobre a programao do arduino com a funo map:

Compreendendo o 3 cdigo...
Este cdigo aproveita a estrutura existente do anterior. Declaramos apenas uma outra varivel l no incio
chamada de luminosidade. A setup permanece idntica ao cdigo anterior. A diferena est na loop. Aqui
usamos a funo map.
No cdigo anterior utilizamos um clculo matemtico dividindo a varivel valor por quatro. Relembrando:

Porque fizemos isso? Porque a varivel valor contm a leitura do pino anolgico onde est conectado o
potenciometro. E, como j vimos, uma leitura anlogica tem valores entre 0 e 1023 - 1024 estados, mas o pino
pwm trabalha entre 0 e 255 - 256 estados. Ou seja o pinos anlogicos tem 4 vezes mais estados que os pwm.
Por isso dividimos a leitura do pino analgico por 4, para equiparar os valores em relao ao pino pwm.
Mas desta vez usamos a funo map que remapeia um nmero a partir de uma faixa, para outra.

Aqui estamos dizendo ao arduino que o valor da varivel luminosidade o resultado mapeamento do que do
pino anlogico A0.

Mais sobre a funo map em http://renatoaloi.blogspot.com.br/2013/12/funcao-map-do-arduino.html

Melhorando o 3 cdigo...
Para compreender melhor o que faz na prtica a funo map vamos implementar uma comunicao serial para
visualizar a leitura e a converso dos valores analgicos em pwm. Digite o cdigo, passe para o arduino e abre o
serial monitor para ver o resultado:

Movimentando um Motor
Que tipo de motores usaremos...
Com o arduino temos vrias possibilidades em nossas montagens com motores. H projetos que usam at
mesmo motores de eltricos de corrente alternada. Vamos usar em nossos experimentos motores DC e
servomotores pela facilidade de uso.

Os motores DC. Os motores de corrente contnua (CC) ou


motores DC (Direct Current), como tambm so chamados,
so dispositivos que operam aproveitando as foras de
atrao e repulso geradas por eletroms e ims
permanentes. So os motores facilmente encontrados em
brinquedos e nos mais diversos eletrnicos.
As velocidades de operao dos pequenos motores so
elevadas e para os casos em que necessitados de mais fora
e de um movimento mais lento, precisamos contar com
recursos para a chamada reduo. Essa reduo feita com polias ou com engrenagens.

Os servo motores. Servomotores so motores de posio frequentemente usados em aeromodelos,


automodelos, e outros veculos radio-controlados em
escala reduzida e tambm so muito utilizados em
automao e robtica. Por este motivo, so fceis de
serem encontrados no mercado especializado de radiocontroles.
Um servomotor tipo RC consiste essencialmente em um
motor de corrente contnua com um circuito de controle de
posio acoplado. Os servomotores no do uma volta
completa em seu eixo, eles possuem uma faixa ou de 90
ou 180 graus em seu eixo. Em contraste com os motores
contnuos que giram indefinidamente, o eixo dos servo
motores possui a liberdade predeterminada, mas so
precisos quanto a posio.
Do servomotor sai trs cabos geralmente nas cores: preto,
vermelho e branco ou amarelo. Os cabos preto e vermelho so para alimentao e o branco ou
amarelo o cabo de controle. Na estrutura do servo motor j esta acoplada uma caixa de reduo
que lhe permite um bom torque.

Os motores de passo. Motores de passo um tipo de motor eltrico inventado por Marius Lavet. e
usado quando algo tem que ser posicionado muito precisamente ou rotacionado em um ngulo exato.
Neste tipo de motor a rotao do balancete controlado por uma srie de campos eletromagnticos
que so ativados e desativados eletronicamente.
Motores de passo no usam escovas ou comutadores e possuem um nmero fixo de plos
magnticos que determinam o nmero de passos por revoluo. Os motores de passo mais comuns

possuem de 3 a 72 passos/revoluo, significando que ele leva de 3 a 72 passos para completar uma
volta. Controladores avanados de
motores de passo podem utilizar
modulao por largura de pulso para
realizarem micropassos, obtendo uma
maior resoluo de posio e operao
mais macia, em detrimento de outras
caractersticas.
So usados em larga escala em
impressoras, plotters, scanners, drivers
de disquetes, discos rgidos e muitos
outros aparelhos. Existem vrios
modelos de motores de passos
disponveis no mercado que podem ser
utilizados para diversos propsitos. Poderemos utiliz-los para mover robs, cmeras de vdeo,
brinquedos ou mesmo uma cortina.
Esses tipos de motores tem no mnimo 4 fios.

Saiba mais em:


http://www.rogercom.com/pparalela/IntroMotorPasso.htm
http://www.telecom.uff.br/pet/petws/downloads/tutoriais/stepmotor/stepmotor2k81119.pdf

Movimentando um Motor DC
1 montagem - controlando o motor com potencimetro
fonte de pesquisa:
http://arduinolivre.wordpress.com/2013/03/13/transistor-motor-dc-arduino-parte-2/
http://labdegaragem.com/profiles/blogs/tutorial-utilizando-arduino-e-transistor-para-controlar-motor-dc
http://www.comofazerascoisas.com.br/controlando-a-velocidade-de-um-motor-cc-no-arduino-com-potenciometro.html
http://www.funnyrobotics.com/2011/03/arduino-with-l298n-based-dual-motor.html

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 resistor de 1 K (1000 ohms)

1 potencimetro 10K

1 motor DC

1Transistor Darlington TIP122

1 Clip de bateria 9v

1 bareria 9v

(marrom, preto, vermelho)

A montagem:
Vamos colocar o TIP122 na linha J nas colunas 7, 8 e 9. A parte mais saliente do transistor deve ficar para
frente. De Maneira que a base fique na coluna 7, o coletor na coluna 8 e o emissor na coluna 9. Se tiver dvidas
releia a apostila anterior sobre eletrnica bsica ou consulte o site: http://www.electronica-pt.com/componenteseletronicos/transistor-tipos. Veja a datasheet do transistor TIP122 em http://www.adafruit.com/datasheets/TIP120.pdf.

O potenciometro colocamos na linha B nas colunas 1, 3 e 5.

Colocamos um resistor com seus terminais na coluna 3 e 7 na linha I e alimentamos a protoboard com a bateria
de 9v

Alimentamos o pino direito(coluna 1) e o pino esquerdo (coluna 5) do potencimetro, com o positivo e o negativo
da bateria. O pino do meio, o da coluna 3, deve ficar livre. Alimentamos tambm a coluna 9 do TIP122 com o
negativo vindo da bateria de 9v.

Conectamos a coluna 7, o pino base do TIP122, no pino 6 do arduino. E o terminal do meio do potencimetro no
pino analgico A0 do arduino.

Por fim conectamos o motor conforme a figura:

Compreendendo a eletrnica
J estudamos anteriormente que o o motor no pode ser ligado diretamente no arduino porque demanda uma
corrente muito maior que a porta do arduino pode fornecer. Relembrando: as portas do arduino individualmente
suportam no mximo de 40mA e coletivamente no mximo 200mA. Dependendo do motor dc teremos veremos
que demanda acima de 600mA at mais do que 1A.
J estudamos tambm que para solucionar tal impasse usamos o circuito de proteo. No caso desta montagem
o circuito de proteo formado pelo resistor e pelo TIP122. O TIP122 funciona como uma chave e impede que
o arduino seja danificado pelo motor. S que ele pode demandar uma corrente de at 100mA e por isso que
se usa o resistor que limita a corrente que chega no TIP 122 mas no impede seu funcionamento.
Pesquise o datasheet para saber mais sobre esse componente =>
http://www.adafruit.com/datasheets/TIP120.pdf

O cdigo
Aqui vem algo interessante no arduino. possivel utilizar o mesmo cdigo para diversos tipo de montagem
eletrnicas. Neste caso, podemos simplesmente repetir o cdigo anterior:

Podemos melhorar o cdigo renomeando as variveis, j que no estamos trabalhando com um led.
No lugar da varivel luminosidade poderamos colocar velocidade. Mas o efeito o mesmo!!!

2 montagem - controlando o motor com botes push button


fonte de pesquisa:
http://robotfeliciano.blogspot.com.br/2012/03/botoes-e-resistores-pull-down-e-pull-up.html
http://googolplex.com.br/arduino/resistores-pull-uppull-down
http://labdegaragem.com/profiles/blogs/tutorial-utilizando-arduino-e-transistor-para-controlar-motor-dc

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 resistor de 1 K (1000 ohms)

(marrom, preto, vermelho)

2 Chaves toque | push button | interruptor momentneo | boto de presso|chave tactil (=>nomes correlatos)

1 motor DC

1Transistor Darlington TIP122

1 Clip de bateria 9v

1 bareria 9v

A montagem:
Vamos colocar os botes na linha F nas colunas. Um boto com seus terminais nas colunas 1 e 3 e o outro nas
colunas 4 e 6. O resistor alocamos nas colunas 6 e 11 da linha H. O TIP122 na linha J com seus terminais nas
colunas 11, 12 e 13. Lembrando que ele deve ficar com sua parte mais saliente para frente e a parte mais plana
para trs. Observe a figura:

Ligamos as colunas 3 e 4 na linha azul da protoboard que ser alimentada pelo negativo. Da mesma forma
ligamos a coluna 13 na linha azul. Veja a figura:

Alimentamos a protoboard com a bateria de 9v conforme demostra a figura.

Conectamos o pino digital 11 do arduino na coluna 1 da protoboard. O pino 10 do arduino na coluna 6 da


protoboard. O pino digital 6 do arduino na coluna 7 da protoboard. Veja a figura:

Por fim conectamos o motor. Um terminal na coluna 12 da protoboard e o outro terminal no positivo da bateria.

O cdigo
Digite o seguinte cdigo:

Compreendendo o cdigo...
Comeamos por declarar trs variveis do tipo int, ou seja, do tipo inteiras e outras duas varivies do tipo byte.
Utilizamos o tipo byte porque s sero armazenados dois tipos de valor: o 1 quando o boto estiver pressionado
ou o 0 quando o boto estiver solto, desligado.

Dentro do setup fizemos 5 configuraes. Determinamos que o pino do led (o pino 6) ser de sada, transmitir
energia. Determinamos que os pinos ligados aos botes sero de entrada, recebero energia. E ativa o resistor
interno de elevao para os pinos dos botes. Explicaremos logo a seguir sobre pull-up e pull-down.

Iniciamos dentro da funo loop fazendo a leitura e o armazenamento do estado dos botes, ou seja, se esto
pressionados ou no.

Agora ns temos uma condicional. Embora j tenhamos abordado essa funo, destacamos desta vez o uso de
um operador boleano e outro de comparao. Operadores de comparao, com j sugere o nome, usado para
testar a comparao de dois valores. J os operadores boleanos so usados para relacionar dados de uma
pesquisa.

A forma mais prtica de entender o funcionamento destes operadores usando-os nas programaes. Por isso
vamos voltar ao estudo desta programao e mais adiante a ilustraremos com outros exemplos.
Na prtica estamos determinando como parmetro para essa condicional que o boto 1 tem que estar
pressionado, ligado, e o boto 2 tem que estar desligado

Sendo verdadeira essa condio executado o que est dentro do corpo dela:

No sendo a condio verdeira executada a funo else, que escreve o valor de 0 mantendo o led apagado.

Na sequencia da programao escrevemos novamente um condio que faz exatamente o inverso do que j
vimos. Ela testa se o 2 boto est pressionado, pesquisa se o 1 boto no est pressionado, e, se esta duas
condies forem verdadeiras, acende o led com baixa potncia. Do contrrio, mantem o led apagado.

Movimentando um Servo Motor


1 montagem - controlando o motor com potencimetro
fonte de pesquisa:
http://blog.filipeflop.com/motores-e-servos/micro-servo-motor-9g-sg90-com-arduino-uno.html
http://www.seucurso.com.br/index.php?option=com_content&view=article&id=218:controlando-um-servo-motor-comarduino&catid=901:arduino&Itemid=65
http://www.ajudino.com/2013/05/4-utilizando-servo-motor-no-arduino_11.html
http://sirleech.wordpress.com/2010/06/05/hello-coke-bot-arduino-servo-test/
http://electronicpiece.blogspot.com.br/2012/03/arduino-knob-servo-e-potenciometro.html

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers

1 potencimetro 10K

1 Micro Servo Motor

datasheet: http://alturn-usa.com/products/PDF/AAS-309BB.pdf

1 suporte para 4 pilhas AA

4 pilhas AA (1,5v)

A montagem:
A montagem deste projeto bem simples. Comeamos colocando o terminais do potencimetro na linha A, nas

colunas 1, 2 e 3 como mostra a figura.

Depois alimentamos as linhas azul e vermelha da protoboard com, respectivamente, o negativo e positivo das
pilhas.

Vamos alimentar os fios do Servomotor. O fio vermelho vai conectado ao positivo da protoboard e o fio marrom
no negativo. Observe a figura que ilustra a conexo dos fios do Servomotor:

A montagem na protoboard ficar desta forma:

Conectamos a coluna 1 da linha no positivo e a coluna 5 no negativo da protoboard:

Conectamos o pino central do potencimetro no arduino: ligamos um fio na coluna 3 da protoboard para o pino
analgico A0 do arduino. E conectamos o fio do sinal do Servomotor ao pino digital 6 do arduino.

O cdigo:
Este cdigo trar um novidade: a utilizao da biblioteca. Vamos comear o nosso cdigo inserindo a biblioteca
para podermos controlar o servomotor.O jeito mais prtico de inserir sem erros uma biblioteca atravs do menu
Sketch. Clique no menu Sketch, depois em Import Library e depois em Servo. Conforme demonstra a figura:

Vai ser inserido o seguinte cdigo:


Agora vamos escrever as outras linhas do cdigo:

Entendendo o cdigo:
O ambiente de programao do Arduino pode ser estendido atravs da utilizao de bibliotecas, assim como a
maioria das plataformas de programao. Bibliotecas podem fornecer funcionalidades extras para, por exemplo,
trabalhar com hardware especfico (como o caso do servomotor) ou manipulao de dados. Uma srie de
bibliotecas j vm instalados com o IDE, mas tambm podemos fazer download de outras ou criar a nossa
prpria biblioteca. Para aprofundar sobre o assunto acesse este site:
http://renatoaloi.blogspot.com.br/2012/11/criando-bibliotecas-no-arduino.html. Ou esse em ingls:
http://arduino.cc/en/Reference/Libraries.

Essa linha de comando est dizendo para o compilador importar a biblioteca


Servo. Com isso poderemos usar as classes e comandos disponveis nesta biblioteca. Por se tratar de uma
biblioteca baseada em classes, precisamos declarar uma varivel para criar uma instncia da classe, ou seja,
criar um objeto. Esses conceitos no ficaro muito claros neste momento para quem no tem uma familiaridade
com programao.

Aqui criamos o objeto testaservo. Na prtica definimos um nome para o


servomotor. Vamos us-lo para chamar os mtodos durante a programao.

Definimos uma varivel que vai armazenar o valor da porta analgica


conectada ao potencimetro.

Dentro da setup chamamos o mtodo attach. o primeiro mtodo


da biblioteca Servo que devemos utilizar. Este mtodo deve ser utilizado na funo setup() para associar o

servomotor a um pino da placa Arduino. No caso de nossa montagem o pino 6 que fica entre os parenteses.
Repare que devemos usar o objeto (testaservo) que declaramos anteriormente para invocar o mtodo.

Setamos como valor para a varivel


potenciometro a leitura da porta analgica A0. Onde est conectado o pino do potencimetro.

Usamos a
funo map e mapeamos o valor do potencimetro que de 0 at 1023 redimencionando-os para os valores
aceitveis pelo Servomotor que tem um giro mximo de 180, portanto de 0 at 179.

Usamos depois da configurao o mtodo write


da biblioteca servomotor para escrever o valor do posicionamento do servomotor.

Espera 5 milisegundos antes de continuar a programao.

Sensor ultrasnico HC-SR04


fonte de pesquisa:
http://www.arduinoecia.com.br/2014/04/sensor-de-estacionamento-re-com-arduino.html
http://www.instructables.com/id/Simple-Arduino-and-HC-SR04-Example/?lang=pt
http://ferpinheiro.wordpress.com/2011/04/29/meu-primeiro-projeto-arduino-sensor-ultrasonico-hc-sr04/
http://blog.filipeflop.com/sensores/sensor-ultrassonico-hc-sr04.html
http://www.mecatronicaatual.com.br/educacao/1598-sensores-ultra-snicos
http://www.sabereletronica.com.br/artigos/1753-sensores-ultra-snicos

Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 resistor 220

1 buzzer

1 sensor ultrasnico HC-SR04

A montagem:
Coloque o resistor na linha F com seus terminais na coluna 1 e 4. Nesta mesma linha coloque o buzzer nas
colunas 4 e 7. No esquea que o terminal positivo do buzzer vai conectado ao resistor, ou seja, na coluna 4.

Conecte os terminais do HC-SR04 na linha A nos pinos 14, 15, 16 e 17. Veja a figura:

Por fim, vamos fazer a conexo com os pinos do arduino. Conectar um fio do pino 6 do arduino ao conector do
resistor na coluna 1. Conectar um fio do GND do arduino ao pino do buzzer na coluna 7. Conectar o 5v do pino
de alimentao do arduino ao terminal VCC do sensor ultrasnico na coluna 14.
Conectar o pino 12 do arduino ao terminal TRIG do sensor ultrasnico (coluna 15). Conectar o pino 13 do
arduino ao terminal ECHO do sensor ultrasnico (coluna 16). Conecetar o GND do arduino ao terminal GND do
sensor ultrasnico (coluna 17). Veja a demonstrao da figura:

Como funciona o sensor ultrasnico:


Antes de escrevermos o cdigo para essa montagem convm entender como o funcionamento bsico deste
sensor. O sensor ultrasnico HC-SR04 vai detectar um objeto alm de poder determinar a distncia que ele se
encontra. O sensor formado por um emissor e um receptor de ultrasons e se baseia no sonar dos morcegos.
Mas o que so ultrasons? Ultrasom um tipo de onda sonora que no conseguimos escutar. Mas o que so
ondas sonoras? De maneira geral as ondas sonoras se propagam a uma velocidade de 331,5 metros por
segundo no ar em condies normais de temperatura e presso. Com a elevao da temperatura, essa
velocidade aumenta da ordem de 0,61 metros por segundo para cada grau Celsius. Atingindo nossos ouvidos,
essas ondas podem pression-los, dandonos a sensao sonora, se estiverem, entretanto, numa faixa bem
definida de freqncias.
Efetivamente, partindo do zero, s podemos comear a ouvir alguma coisa quando o nmero de vibraes
ultrapassar 16 por segundo ou 16 Hz. medida que as vibraes vo se tornando mais rpidas, vamos tendo a
sensao de sons cada vez mais agudos at que em torno de 18.000 Hz (dependendo da pessoa), deixamos de
ter qualquer sensao auditiva. Acima das 18 000 vibraes por segundo ou 18 kHz que esto os ultra-sons

conforme vemos no espectro da figura abaixo:

Num equalizador de um aparelho de som podemos alterar a intensidade das frequencias sonoras:

Acima dos 18KHz as vibraes existem, mas no podemos ouvi-las, e suas propriedades so as mesmas dos
sons comuns. claro que existem animais que podem ouvir bem acima dos 18 kHz, como os morcegos, os
golfinhos e at mesmo seu cachorro. Alguns morcegos podem ouvir ultrasons de freqncias que ultrapassam os
200 kHz.
O funcionamento do sensor ultrasnco assim: o sensor emite um sinal ultrasnico que reflete em um objeto e
retorna ao sensor (eco). O sinal de retorno captado, permitindo-se deduzir a distncia do objeto ao sensor
tomando o tempo de trnsito do sinal, ou seja, o tempo que o sinal leva para sair do emissor, refletir no objeto e
ser escutado pelo receptor.

O 1 cdigo:
Para usar esse sensor ultrasnico com facilidade usaremos uma biblioteca. Por padro no vem instalada na
IDE do Arduino nenhuma biblioteca para sensor ultrasnico, mas fcil de instalar. H vrias bibliotecas que
podemos usar com o sensor ultrasnico HC-SR04. A que vamos usar pode ser baixada aqui:
http://www.4shared.com/zip/dJy8gpEOba/HCSR04Ultrasonic.html.
Depois de baixar, crie uma nova pasta em seu computador e mova o arquivo HCSR04Ultrasonic.zip dentro dela.
Abra a IDE, clique no menu Sketch, depois em Import Library e em Add Library. Encontre o local que voc
salvou o arquivo e clique em Open. Reinicie a IDE do Arduino.

Reiniciado a IDE do arcuino clique novamente em Sketch, Import Library. Dever aparecer neste menu a
biblioteca HCSR04Ultrasonic. Clique nela. Ser inserida a linha de cdigo:

Complete a programao digitando o cdigo abaixo:

Compreendendo o 1 cdigo:
Como j foi explicado comeamos o cdigo determinando que o compilador da IDE deve utilizar a biblioteca
Ultrasonic. Vamos utilizar algumas funes e mtodos desta bibliteca.

Depois construmos duas variveis atravs da funo #define que vo armazenar os pinos conectados aos
terminais Trig e Echo do sensor. No caso o pino digital 12 para o trig e o pino digital 13 para o echo. Poderamos
ter declarado essa varivel de uma outra forma. Por exemplo com a funo int. Perceba que na funo define
no vai o ponto e virgula no final da linha de programao.

Agora estamos declarando o objeto ultrasonico colocando como parmetros as variveis PINODOTRIG e
PINODOECHO que acabamos de fazer. Veja a figura abaixo

Dentro da funo setup declaramos o uso da porta serial

Agora criamos duas variveis do tipo float. Uma com o nome de centimetro e outra com o nome de polegada.
Uma varivel de tipo float armazena valor em ponto flutuante, ou seja, um valor que possui casas decimais. Por
isso no usamos a funo int, pois ela s armazena nmeros inteiros. Para poupar tempo e espao declaramos
as duas variveis numa mesma linha de programao usando a vrgula.

Depois criamos uma outra varivel mas agora do tipo long. O tipo de dado Long armazena valores inteiros
sinalizados de 32 bits (4 bytes) que compreendem a faixa de -2.147.483.648 a 2.147.483.647. A varivel precisa
ser do tipo long pelo tamanho de dados que ela vai trabalhar. O sensor ultrasnico trabalha com valores em
milionsimos, portanto muito grandes. No poderia ser uma varivel do tipo int por exemplo, que travalha na
faixa entre -32,768 a 32,767.
J criamos a varivel microsegundos com um valor: ultrasonico.timing() que a leitura que o receptor do
ultrasnico est fazendo. Esta leitura o tempo em milionsimos de segundos que o ultrasom leva para sair e
voltar do sensor. O valor desta leitura chamada pelo mtodo timing da biblioteca ultrasonic. O objeto
ultrasonico chama o timing.

Setamos na varivel centmetro um valor. Este valor o clculo de converso do tempo no formato de
milionsimos de segundo em centmetros. Para isso chamamos o mtodo convert no objeto ultrasonico e
colocamos como parmetro a varivel microsegundos e a funo Ultrasonic::CM.

Setamos na varivel polegada o valor do clculo de converso do tempo no formato de milionsimos de


segundo em polegadas.. Para isso chamamos o mtodo convert no objeto ultrasonico e colocamos como
parmetro a varivel microsegundos e a funo Ultrasonic::IN.

Mandamos para a porta serial os dados MS: com a funo Serial.print, como tambm mandamos a varivel
microsegundos.

Enviamos os valores , CM:, e a varivel centimetro com a funo Serial.print.

Enviamos os valores , IN:, e a varivel polegada com a funo Serial.print.

Mandamos aguardar 1 segundo:

O 2 cdigo:
Digite o cdigo abaixo:

Compreendendo o 2 cdigo:
Como j foi explicado comeamos o cdigo determinando que o compilador da IDE deve utilizar a biblioteca

Ultrasonic.
Depois construmos duas variveis atravs da funo #define. Lembrando que elas so diferentes de outras
variveis que j criamos por no ter que colocar o ponto-e-vrgula no final! Essas variveis vo armazenar os
pinos conectados aos terminais Trig e Echo do sensor. O pino digital 12 para o trig e o pino digital 13 para o
echo.

Depois declaramos a constante buzzer que armazena o pino do onde est conectado o buzzer. Lembrando que
a constante declarada ao colocar const antes do tipo de uma varivel. Neste caso o tipo int.

Declaramos a varivel centmetro do tipo float. Como j foi explicado uma varivel de tipo float armazenada
nmeros decimais.

Criamos a varivel tic do tipo int com valor igual a zero. Essa varivel vai ser usada como uma referncia, que
explicaremos depois.

Declarando o objeto ultrasonico colocando como parmetros as variveis PINODOTRIG e PINODOECHO. Isso
feito com a classe Ultrasonic que vem da biblioteca Ultrasonic.

Iniciamos a funo setup iniciando a comunicao serial

e declaramos o pino digital 6, que o valor armazenado na varivel buzzer, como pino de sada de dados,
OUTPUT.

Depois criamos uma outra varivel mas agora do tipo long. O tipo de dado Long armazena valores inteiros
sinalizados de 32 bits (4 bytes) que compreendem a faixa de -2.147.483.648 a 2.147.483.647. Esta varivel
criada precisa ser do tipo long pelo tamanho de dados que ela vai trabalhar. O sensor ultrasnico trabalha com
valores em milionsimos, portanto muito grandes. No poderia ser uma varivel do tipo int por exemplo, que
travalha na faixa entre -32.768 a 32.767 (observao: milssimos diferente de milionsimos).
J criamos a varivel microsegundos com um valor: ultrasonico.timing() que a leitura que o receptor do
ultrasnico est fazendo. Esta leitura o tempo em milionsimos de segundos que o ultrasom leva para sair e
voltar do sensor. O valor desta leitura chamada pelo mtodo timing da biblioteca ultrasonic. O objeto
ultrasonico chama o timing.

Determinamos um valor para varivel tic.

You might also like