Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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.
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.
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.
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.
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
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.
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. */
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!
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.
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.
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:
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:
Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
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.
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.
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.
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.
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
A funo delay, nesta programao, indica o tempo de espera at ser feita uma nova leitura do LDR.
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.
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
2 resistores de 10 K
1 Led
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).
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.
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)
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.
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.
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.
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:
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.
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.
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 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.
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
1 Clip de bateria 9v
1 bareria 9v
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.
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.
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!!!
Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 resistor de 1 K (1000 ohms)
2 Chaves toque | push button | interruptor momentneo | boto de presso|chave tactil (=>nomes correlatos)
1 motor DC
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:
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.
Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 potencimetro 10K
datasheet: http://alturn-usa.com/products/PDF/AAS-309BB.pdf
4 pilhas AA (1,5v)
A montagem:
A montagem deste projeto bem simples. Comeamos colocando o terminais do potencimetro na linha A, nas
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:
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:
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.
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.
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.
Componentes necessrios:
1 placa Arduino
1 cabo USB
1 protoboard
Fios diversos - jumpers
1 resistor 220
1 buzzer
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:
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:
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
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.
Mandamos para a porta serial os dados MS: com a funo Serial.print, como tambm mandamos a varivel
microsegundos.
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.
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.