Escolar Documentos
Profissional Documentos
Cultura Documentos
2013 - Introdução À Plataforma Arduino
2013 - Introdução À Plataforma Arduino
v.2.0
janeiro/2013
Leonardo Henrique Day de Toledo
Robson Paes Machado
A obra Introduo plataforma Arduino foi licenciada com uma Licena Creative Commons Atribuio - Uso No Comercial - Partilha nos Mesmos Termos 3.0 No Adaptada.
Com base na obra disponvel em www.eaduino.com.br.
ATIVIDADES ............................................................................................................................. 23
3.1
ATIVIDADE 1 - ACENDENDO UM LED ..................................................................................... 24
3.1.1
Resistor ......................................................................................................................... 24
3.1.2
LED .............................................................................................................................. 26
3.1.3
O resistor como limitador de corrente ........................................................................... 27
3.1.4
Estrutura de um sketch .................................................................................................. 30
3.1.5
setup() ........................................................................................................................... 30
3.1.6
loop() ............................................................................................................................ 30
3.1.7
Comentrios .................................................................................................................. 35
3.1.8
setup() ........................................................................................................................... 35
3.1.9
loop() ............................................................................................................................ 35
3.1.10
digitalWrite() ................................................................................................................ 36
3.2
ATIVIDADE 2 - PISCA LED...................................................................................................... 37
3.2.1
Variveis ....................................................................................................................... 38
3.2.2
int ................................................................................................................................. 39
3.2.3
delay()........................................................................................................................... 39
FOR() ..................................................................................................................................... 42
OPERADORES ......................................................................................................................... 42
ANALOGWRITE() .................................................................................................................... 43
LDR ...................................................................................................................................... 51
FLOAT .................................................................................................................................... 54
ANALOGREAD() ..................................................................................................................... 54
NTC ...................................................................................................................................... 58
#INCLUDE .............................................................................................................................. 61
DOUBLE ................................................................................................................................. 61
FUNCTIONS ............................................................................................................................ 61
LOG() ..................................................................................................................................... 62
SERIAL ................................................................................................................................... 62
CONCLUSO ............................................................................................................................. 64
1
1.1
Introduo ao Arduino
O que o Arduino?
Arduino uma plataforma de hardware e software open source, programvel, que permite
interagir com o mundo fsico (luzes, motores, etc), tanto com programas residentes no prprio
Arduino, quanto utilizando este como interface entre o mundo fsico e um computador ou at
mesmo com a internet.
Open source quer dizer que voc pode copiar, modificar, vender o seu prprio Arduino. A nica
restrio o uso do nome Arduino, que exclusivo da equipe que desenvolveu esta plataforma.
Por isso voc vai encontrar no mercado, os originais Arduino, produzidos na Itlia, e vrios
compatveis, porm com outros nomes e pases de origem como: Freeduino, Severino,
Sanguino, Roboduino, Seeeduino, Program-me e por a vai.
Os originais italianos que mais se destacam so o Duemilanove, UNO e o atual Leonardo.
Arduino Duemilanove
Arduino UNO
Estas verses so populares por sua tima relao custo x benefcio e por sua facilidade de
integrao, um excelente ponto de partida para o hobista iniciante. As verses Duemilaenove e
UNO so praticamente iguais. Usam o mesmo microcontrolador da Atmel, o ATmega328p
(verses mais antigas usam o ATmega168), e a mesma disposio dos pinos de entrada e sada,
diferindo no chip que faz a comunicao da placa Arduino com o computador.
Os autores do projeto Arduino pensaram numa forma que qualquer pessoa interessada, pudesse
fazer uso desta tecnologia sem, necessriamente, ser algum que entendesse de eletrnica ou
programao de computadores. Outro ponto de destaque que quando comparado a outras
plataformas semelhantes de desenvolvimento, muito acessvel do ponto de vista financeiro.
Alm disso, seu software de programao gratuto e disponvel para os sistemas Windows,
Linux e MacOS.
Ento podemos entender que a plataforma Arduino composta de uma placa original ou
compatvel (hardware) e um ambiente de desenvolvimento (software).
O fantstico desta plataforma que a comunidade de usurios/desenvolvedores Arduino,
pensam em uma forma simples de ampliar/extender as funcionalidades, acoplando outros
elementos eletrnicos em placas conhecidas como shields. Os shields so literalmente
empilhados no Arduino, criando novas possibilidades de uso. Existem shields que fazem
controle de motores, luzes, tomadas, acesso a internet com e sem fio, etc.
http://arduino.cc
http://www2.atmel.com/
http://www.eaduino.com.br/onde-comprar/
1.2
http://arduino.cc/en/Main/Software
Supondo que o seu ambiente seja Microsoft Windows, o arquivo baixado estar compactado no
formato .ZIP. Descompacte, preferencialmente, na raiz do disco C do seu computador. Mas
apenas uma sugesto. Poder ficar em qualquer unidade de disco/pasta.
Exemplo:
O arquivo baixado foi o arduino-1.0.3.zip. Aps descompact-lo voc ter a seguinte estrutura
de pastas na unidade F, sub pasta Dados (lembre-se isto apenas um exemplo):
Agora ser necessrio configurar a porta de comunicao do seu computador e na maioria dos
casos no oferece dificuldades. Esta a tarefa que requer um pouco mais de ateno. O exemplo
a seguir assume que estamos com um Arduino Duemilanove ou compatvel em ambiente
operacional Microsoft Windows 7. Se a verso do Microsoft Windows instalado em seu
computador for diferente, visite:
http://arduino.cc/en/Guide/Windows
Agora vamos conectar o cabo USB no Arduino e na porta USB do seu computador. Caso seja
primeira vez, o Microsoft Windows identificar um novo dispositivo e tentar instalar os drivers
correspondentes. Se houver falha na instalao, vamos verificar no Gerenciador de Dispositivos.
Clique com o boto direito do mouse em Computador. Selecione Gerenciar ou Propriedades
Clique com o boto direito do mouse em USB Serial Port e em seguida clique em
Propriedades.
Note o que est escrito em Status do disposito. No exemplo, a configurao est correta, mas
se no for este o seu caso, clique na aba Driver. Note tambm o campo Fabricante: FTDI. A
placa usada neste exemplo uma compatvel com Duemilaenove. As placas UNO usam outro
chip (circuito integrado), que pode ser o Atmega16U2 ou Atmega8U2. Portanto, dependendo
da placa, este campo pode apresentar outro nome.
Navegue at a pasta onde foi descompactado o arquivo .ZIP do Arduino e selecione a pasta
FTDI USB Drivers (ou o arquivo .inf adequado a sua placa). Clique no boto OK.
Indique o caminho da pasta Drivers (boto Procurar), em seguida clique em Avanar. Aguarde
at o final da instalao.
Se voc estiver em dvida, primeiro procure saber exatamente o modelo de sua placa. Depois
navegue pela pasta drivers (esta pasta est abaixo da pasta onde est instalado o Arduino) e veja
se algum arquivo na lista corresponde a sua placa.
10
11
O software oferece uma lista de placas Arduinos mais comuns. No nosso exemplo vamos
selecionar a Arduino Duemilanove w/ ATmega328 (veja qual o modelo da sua placa e
selecione a correta).
12
Ir aparecer uma lista de portas COM ativas do seu computador. Caso o prximo passo
apresente erros, volte a este item e altere a porta. Porm, se voc passou pelo item 1.2 deste
tutorial, j saber qual porta est associada ao Arduino, no ? Se for preciso, volte ao item e
reveja os procedimentos.
13
14
15
Como dito anteriormente, no se preocupe neste momento em entender o que est escrito.
Agora vamos transferir o sketch para a placa. Clique no boto em destaque e note o texto ao
lado do ltimo boto: Upload.
Se tudo estiver corretamente configurado, na parte inferior da tela voc ver uma mensagem
similar a esta:
Isto nos diz que o programa foi transferido, Done uploading. Se aparecer valor diferente em
Binary sketch size: 1018 bytes certo voc estar usando uma placa diferente do nosso
exemplo.
Qual o resultado esperado? Voc dever ver um LED piscando na sua placa Arduino. No
mgica , isto ocorre em todas as placas compatveis. Se voc no sabe o que um LED, no
prximo mdulo explicaremos o que e para que serve este componente.
Caso no tenha tido sucesso, reveja todo este mdulo.
16
Noes de Eletricidade
2.1
Corrente
Para que um dispositivo eltrico/eletrnico funcione, necessrio que uma energia denominada
corrente eltrica, flua atravs deste dispositivo.
A corrente eltrica composta por um fluxo de cargas que circulam entre os plos de um
gerador, passando pelos componentes que formam o nosso dispositivo. O caminho fechado
percorrido pela corrente eltrica conhecido como circuito eltrico.
Os condutores so os elementos que permitem a passagem da corrente eltrica.
A unidade de medida o ampre (A) cujo nome foi uma homenagem ao fsico francs AndrMarie Ampre.
Exemplo: Um circuito eltrico simples
2.1.2
Tenso
A fora que empurra as cargas pelo circuito conhecida como tenso. Esta fora aparece pela
diferena de cargas positivas e negativas que h nos plos do gerador.
A unidade de medida o volt (V), homenagem ao fsico italiano Alessandro Volta.
2.1.3
Tomando como exemplo uma pilha, notamos que este gerador possui plos fixos (positivo e
negativo). Sendo assim o fluxo de cargas no muda de direo. Este tipo de corrente
conhecido como corrente contnua (DC direct current), pois a corrente circula pelo nosso
circuito num s sentido.
17
O tipo de corrente que chega em nossas residncias a alternada com uma tenso de 110V ou
220V, muito elevada e ainda de tipo diferente de que precisamos para o Arduino e os Shields.
Por isso usamos uma fonte de no mximo 12V ou uma bateria de 9V para alimentar o Arduino.
Se voc est atento a este tutorial, e temos certeza que est, notou que no mdulo 1 testamos a
placa conectado ao computador e no foi preciso uma fonte externa de energia. Isto ocorre
porque o cabo USB contm uma linha de energia de 5V que retira do seu computador e
alimenta a nossa placa. Porm, haver situaes que a corrente exigida por algum componente
conectado a placa Arduino, como exemplo um motor, ser muito maior que a corrente que a
porta USB do seu computador poder fornecer e a nestas situaes, vamos conectar uma fonte
externa de energia.
Em todas as atividades propostas neste tutorial, no ser necessrio o uso de uma fonte externa.
O consumo dos componentes eletrnicos muito baixo e a porta USB do seu computador dar
conta do recado.
Como podemos adquirir um Arduino de diversos fornecedores, temos que apenas prestar
ateno como a placa est configurada para receber a alimentao: atravs do cabo USB ou de
uma fonte externa. Nas placas originais italianas esta seleo automtica. A placa sente se a
fonte de energia vem do cabo USB ou de uma fonte externa. Se ambos estiverem conectados, a
preferncia ser para fonte externa. Acompanhe as fotos seguintes e veja como reconhecer esta
situao.
18
Em Arduinos de outros fornecedores pode ser necessrio a seleo manual da fonte de energia.
Compare as duas fotos. Notou a inscrio USB e EXT na placa? A seleo vai indicar se a
energia vem da porta USB ou de uma fonte externa.
19
E por falar em fonte externa, esta poder ser de uma bateria de 9V ou de um transformador
entre 9V e 12V de corrente contnua. O transformador responsvel por converter (reduzir) a
tenso de 110V ou 220V, que est presente nas nossas residncias, para uma tenso compativel
com a entrada na placa do Arduino.
Se optar por uma fonte com transformador, utilize uma de boa qualidade.
20
Independente da sua opo, importantssimo saber que, a tenso de uma fonte externa seja de
9V ou 12V, ser reduzida para 5V que a tenso efetivamente aceita pelo Arduino. Lembra
quando falamos sobre o cabo USB? Que havia uma linha de 5V presente no cabo? Pois bem,
este o valor de tenso presente em grande parte dos chamados circuitos digitais, que incluem o
seu computador. Ento, apesar de termos uma faixa aceitvel na entrada da placa (entre 9V e
12V), o que realmente usado 5V. Existe um componente responsvel por esta reduo, que
esta logo ao lado da entrada. Veja no detalhe da foto.
2.1.4
Resistncia
21
2.2
Vamos usar em nossas atividades, uma placa para testes conhecida como protoboard ou
breadboard ou ainda de matriz de contatos.
Este recurso muito til para iniciantes e at mesmo para projetistas experientes, pois facilita a
montagem dos circuitos eletrnicos sem a necessidade de solda. Desta forma voc pode
reutilizar estes componentes sem a preocupao de danific-los. Naturalmente para projetos
permanentes este no um recurso recomendvel, mas esta uma histria para outro tutorial.
Nos furos centrais, que so as linhas numeradas de 1 a 28 neste exemplo, estas linhas esto
interligadas ou em curto e nas laterais as linhas tambm esto interligadas, mas toda a linha.
22
Atividades
Ao escrever este tutorial pensamos em algo como aprender fazendo. Os conceitos vo sendo
apresentados e associados a uma atividade prtica. Acreditamos que as pessoas, que no
conhecem a plataforma Arduino e/ou no so da rea de eletrnica e computao, tero a
oportunidade de aprender e usar esta tecnologia. Ao longo das atividades propostas, vamos
suprimindo algumas telas e instrues que j foram explicadas.
Ser necessrio providenciar o seguinte material para poder acompanhar todas as atividades
prticas propostas:
http://www.eaduino.com.br/onde-comprar/
Divirta-se!
23
3.1
Resistor
24
Cor do anel
Anel 1
Anel 2
Anel 3
(multiplicador)
Anel 4
(tolerncia)
Preto
Marrom
10
1%
Vermelho
100
2%
Laranja
1000
3%
Amarelo
10000
4%
Verde
100000
Azul
10000000
Violeta
Cinza
Branco
Prata
0,01
10%
Dourado
0,1
5%
Com base nesta tabela, voc conseguiria dizer qual o valor/tolerncia deste resistor?
Anel 1 = amarelo
Anel 2 = violeta
Anel 3 = marrom
Anel 4 = dourado
Veja na pgina seguinte.
25
Resultado: 470 com 5% de tolerncia, quer dizer, pode variar para cima ou para baixo em 5%
o valor da resistncia.
Resistores que possuem valores muito altos so expressos pelos seus mltiplos. Os mltiplos do
ohm mais encontrados nos circuitos so: quiloohm (K) e megaohm (M).
Ento, um resistor de 1000 indicado como 1K . muito comum tambm que um resistor
de 4700 seja indicado como 4K7 .
3.1.2
LED
O LED (Light Emitting Diode Diodo Emissor de Luz) um componente eletrnico que emite
luz visvel (exceto LEDs infravermelhos e ultravioletas) quando conduz a corrente no sentido
direto, isto significa que um componente que tem que ser ligado corretamente para que
funcione.
O terminal positivo o anodo e o terminal negativo o catodo, representado geralmente nos
circuitos respectivamente pelas letras A e K.
Os LEDs so produzidos nos mais variados tamanhos e formatos. Os mais comuns so os
redondos de 5mm e 3mm. Na foto, temos um no muito comum: o chato.
Nos LEDs, normalmente, podemos identificar visualmente qual o terminal (lead) positivo pelo
seu comprimento mais longo que o negativo. Outra maneira, notar que um lado do componente
chanfrado, indicando o terminal negativo.
26
3.1.3
Para que um LED comece a conduzir temos que ter uma tenso mnima de aproximadamente
2V. Tenses abaixo deste valor no conseguem fazer o LED funcionar. Quando o LED comea
a conduzir, este apresenta uma resistncia muito baixa e se no limitarmos a corrente que
circula pelo LED, fatalmente o componente ser danificado.
A corrente mxima suportada pelos LEDs est em torno de 50mA. Utilize de 10mA a 20mA
para uma operao segura. Para limitarmos esta corrente usaremos o resistor e o seu valor ser
obtido por uma frmula bem simples (lei de Ohm). O resultado ser em ohms.
Pronto para a primeira atividade?
Verifique se j est com o software Arduino carregado e placa Arduino conectado ao seu
computador via cabo USB.
27
um LED vermelho
28
uma ponta do fio laranja vai no pino 9 da placa e a outra ponta na extremidade livre do
resistor.
uma ponta do fio preto vai no pino Gnd da placa e a outra ponta na extremidade livre do
LED.
29
Estrutura de um sketch
setup()
Este bloco executado logo aps o inicio do sketch. O que estiver no bloco setup(), executado
apenas uma vez, ou toda vez que o Arduino for reiniciado (pressionando um boto especfico na
placa ou quando da falta de energia).
3.1.6
loop()
Aps a execuo do bloco setup(), o controle do programa vai para o bloco loop() e como o
nome sugere, fica eternamente neste bloco. Aqui, efetivamente, instrumos o Arduino a fazer
o que queremos.
Pronto para iniciar?
Com a IDE do Arduino aberta, digite o cdigo a seguir, exatamente como escrito, respeitando
caracteres minsculos ou maisculos e sinais de pontuao. O texto, para facilitar a leitura,
contm cores e caracteres formatados (negrito e/ou itlico). No leve isto em considerao na
hora de digitar. Aps a execuo do sketch vamos explicar detalhadamente cada linha.
/*
Atividade 1
*/
void setup() {
// configura o pino 9 como saida
pinMode(9, OUTPUT);
}
void loop() {
// envia nivel alto para o pino 9
digitalWrite(9, HIGH);
}
Sketch Atividade 1 - Acendendo um LED
30
Vamos verificar se no h erros de digitao. Na barra de botes da IDE, clique com o boto
esquerdo do mouse no cone indicado na figura abaixo (note que ao posicionar o mouse neste
cone, voc ver a palavra Verify a direita do ltimo boto).
31
Para transferir, clique com o boto esquerdo do mouse no cone indicado na figura abaixo.
32
Vamos salvar o sketch. Acesse o menu File e selecione Save As..., escolha uma pasta qualquer
no seu computador e d o nome de atividade1.
33
Importante: o arquivo salvo ficar dentro de uma pasta com o nome do sketch com a extenso
.ino.
34
Comentrios
/*...*/
//
Na linguagem Arduino, estes caracteres indicam que o texto que est entre os caracteres /* e */,
e aps // devem ser ignorados pelo compilador, pois so apenas comentrios inseridos no sketch
e o mais importante que estes comentrios no ocupam espao na memria do Arduino. Ento,
use e abuse de comentrios. Isto nos ajuda a documentar o programa, fazendo com que qualquer
outra pessoa possa entender o propsito do sketch.
3.1.8
setup()
void setup() {
}
Este bloco ou funo, como comentado anteriormente, executado apenas uma vez quando o
sketch iniciado. Podemos entend-lo como um bloco de configurao inicial do nosso
hardware. A palavra void que antecede o nome da funo obrigatria e no ser objeto de
estudo neste tutorial introdutrio.
Importante! Toda funo na linguagem Arduino, comea e termina por abre e fecha chaves.
pinMode( pino , INPUT|OUTPUT )
Este comando indica ao Arduino como queremos que ele atue no nosso circuito. Arduinos
Duemilaenove e Uno, e seus compatveis, utilizam atualmente o microcontrolador
ATMEGA328P. Temos a disposio 14 pinos digitais configurveis como entrada ou sada e 6
pinos analgicos de entrada. Ento a declarao: pinMode(9, OUTPUT); configura o pino 9
como sada.
Importante! Toda declarao na linguagem Arduino termina com ponto e vrgula.
3.1.9
loop()
void loop() {
}
Esta funo executa eternamente os comandos que estiverem no bloco. Este lao s
interrompido se houver falta e posterior retorno de energia ou se voc pressionar o boto reset
presente na placa. Este o bloco que faremos a leitura de sensores, comandaremos luzes,
ligaremos motores, etc.
35
3.1.10 digitalWrite()
digitalWrite( pino , HIGH|LOW )
Esta funo envia um nvel alto (high) ou baixo (low) para o pino informado. Toda a lgica que
comanda o Arduino e os circuitos digitais dada atravs de nveis de tenso que vo indicar
nvel alto ou baixo. Por exemplo: se enviarmos um nvel alto para um pino, teremos neste pino
5V e se enviarmos um nvel baixo, teremos 0V. Ento a declarao: digitalWrite(9,
HIGH); envia para o pino 9 uma tenso de 5V. Isto faz com que o nosso LED acenda!
Voltando ao nosso circuito, podemos calcular a corrente (I) que passa pelo nosso LED.
R = V
--I
Ou
I = V
--R
Antes de aplicarmos a frmula preciso saber que os LEDs apresentam uma queda de tenso
em seus terminais, que variam conforme a cor, tipo e fabricante. De um modo geral, para
aplicaes com o Arduino, podemos assumir um valor mdio de 2V.
Substituindo pelos valores presentes no circuito, temos
I = (5V 2V)
--------220
A corrente que ir passar pelo LED, usando um resistor de 220, ser de 0,013A (ampre) ou
13mA (multiplicamos por 1000 para obter mili ampre).
36
3.2
Dica: Na atividade anterior solicitamos a IDE fazer a verificao (Verify) do sketch e somente
depois transferimos para a placa. Com o tempo, voc poder abreviar este procedimento
optando apenas pelo Upload. Qualquer anormalidade ser indicada no rodap da interface.
Se no houver erros, o LED dever piscar.
Vamos salvar o sketch. Acesse o menu File e selecione Save As..., escolha uma pasta qualquer
no seu computador e d o nome de atividade2.
37
Variveis
Variveis auxiliam muito o programador, permitindo que trabalhemos com dados que
so alterados todo momento. Exemplo: um sensor de temperatura ou um sensor de luz
envia um dado atravs de um pino para o programa, informando o seu valor. Este valor
armazenado em uma varivel para posteriormente fazermos um clculo, acionarmos
um outro dispositivo, imprimirmos o valor na tela do computador, etc.
Algumas sugestes com relao ao nome:
Quanto ao tipo, a seguir apresentaremos os principais tipos (que sero usados neste
tutorial).
A linguagem Arduino muito poderosa e se voc quiser conhecer todos os tipos, visite:
http://www.arduino.cc/en/Reference/HomePage (item Data Types)
38
3.2.2
int
Um tipo int (inteiro) pode manipular nmeros na faixa de -32.768 at 32.767. No sketch, a
declarao est armazenando o inteiro 9 na varivel pinoLED.
No momento voc precisa saber de mais uma coisa. Notou que a declarao da varivel
foi feito fora do bloco setup() e loop()?
Na linguagem Arduino, temos o conceito de escopo (abrangncia) de variveis. De uma
maneira bem simples, quando declaramos variveis fora de qualquer bloco, estas so
chamadas globais e se declaradas dentro de algum bloco, de locais. Quando uma
varivel global declarada, esta pode ser manipulada em qualquer parte do sketch, ao
contrrio das locais, que so apenas vistas dentro do bloco que a criou.
Na declarao pinMode(pinoLED, OUTPUT); pinoLED uma varivel global e por isto
pode ser usada dentro do bloco setup(). Durante a execuo, o Arduino substitui o nome desta
varivel pelo seu valor, no caso 9.
3.2.3
delay()
delay( tempo )
Esta funo pausa a execuo do sketch durante o tempo informado. O parmetro tempo em
mili segundos, ou seja, a declarao delay(1000); pausa a execuo por 1 segundo.
Concluindo. No bloco loop(), o Arduino envia 5V para o pino 9, aguarda 1 segundo e envia 0V
para o pino 9. Com isto temos o efeito de pisca-pisca.
39
um LED vermelho
um LED amarelo
um LED verde
40
em 5 passos
+ 5) {
em 5 passos
- 5) {
Sketch Atividade 3
41
Salve o sketch com o nome atividade3. O resultado esperado aumentar e diminuir o brilho dos trs
LEDs de forma gradativa.
Aps a declarao das variveis globais, o bloco setup() configura os pinos representados pelas
variveis como sada.
No bloco loop(), usamos uma estrutura de repetio que faro os trs LEDs aumentarem de
brilho e em seguida, uma outra estrutura de repetio faro os trs LEDs diminurem o brilho.
4.1
for()
Atribui o valor 0 para a varivel brilho e enquanto a varivel menor ou igual ao valor 255, o
que est dentro do bloco executado. Ao encontrar fecha chaves, a varivel brilho
incrementada (o seu valor acrescido) de cinco em cinco. Isto repetido at que a varivel
brilho atinja o valor de 255.
E a estrutura,
for( brilho = 255 ; brilho >= 0; brilho = brilho - 5) {
}
Faz o inverso da anterior, a cada passagem a varivel brilho vai sendo decrementada (o seu
valor diminudo) de cinco em cinco at que a varivel brilho atinja o valor 0.
4.2
Operadores
Nesta estrutura tambm vimos algo novo, o operador relacional <= (menor ou igual).
linguagem Arduino possui os seguintes operadores relacionais:
== (igual a)
!= (diferente)
< (menor que)
> (maior que)
<= (menor ou igual a)
>= (maior ou igual a)
Estes operadores permitem fazermos comparaes entre uma varivel e um valor ou entre
variveis.
42
Importante! Muito cuidado com o operador ==(igual a). No confunda com o sinal = que
indica atribuio. Este um tipo de engano que podemos levar horas para descobrir a razo do
programa no funcionar como esperado.
Aplicamos tambm os operadores aritmticos + (adio) e (subtrao). A linguagem Arduino
possui os seguintes operadores aritmticos:
4.3
+
*
/
%
(adio)
(subtrao)
(multiplicao)
(diviso)
(mdulo resto da diviso)
analogWrite()
Volts
0
1,25
2,5
3,75
5
43
No Arduino, no so em todos os pinos que podemos usar o recurso PWM. Nos Arduinos
Duemilanove, UNO e compatveis, somente nos pinos digitais 3, 5, 6, 9, 10 e 11, temos esta
funo.
44
Chave Tctil
um tipo de chave que, enquanto o boto estiver pressionado, o circuito estar ativo e ao soltar
o boto, o circuito interrompido, ou seja, este tipo de chave no tem trava.
45
um LED verde
46
/*
Atividade 4
*/
int pinoBotao = 2;
int pinoLED
= 5;
// variavel para ler o estado do botao (chave tactil)
int estadoBotao = 0;
void setup() {
// configura o pino como saida
pinMode(pinoLED, OUTPUT);
// configura o pino como entrada
pinMode(pinoBotao, INPUT);
}
void loop(){
// le o estado do botao
estadoBotao = digitalRead(pinoBotao);
// verifica se botao foi pressionado
if (estadoBotao == HIGH) {
// se sim, acende o LED
digitalWrite(pinoLED, HIGH);
}
else {
// caso contrario, apaga o LED
digitalWrite(pinoLED, LOW);
}
}
Sketch Atividade 4
Salve o sketch com o nome atividade4. O resultado esperado ao se pressionar o boto, o LED
se acender.
Aps a declarao das variveis globais, o bloco setup() configura os pinos representados pelas
variveis como sada para o LED e como entrada para o boto.
No bloco loop(), usamos uma estrutura condicional que far o teste se o boto foi pressionado.
Se sim, o LED vai acender.
47
5.2
digitalRead()
digitalRead( pino )
Esta funo l o valor presente no pino indicado. A declarao estadoBotao =
digitalRead(pinoBotao); armazena na varivel pinoBotao um de dois estados possveis:
HIGH (5V) ou LOW (0V).
5.3
if()
testa se a varivel estadoBotao igual a HIGH. Se sim, coloca nvel alto no pino representado
pela varivel pinoLED, caso contrrio, coloca nvel baixo no pino.
Importante! Ateno mais uma vez ao sinal == que representa o operador de comparao.
5.4
Quando voc faz a leitura de um pino e neste pino no h nada conectado, ou seja, no h um
sinal alto ou baixo definido, o microcontrolador fica em um estado conhecido como flutuante.
Nestes casos, para garantir um correto estado na entrada do pino usamos um resistor, que
dependendo da posio em que ligado chamado de pull-up ou pull-down.
Este resistor tem a funo de limitar a corrente que flui pelo circuito.
48
Sem pressionar o boto, a corrente circula pelo resistor at o pino, garantindo o nvel alto (5V).
Quando o boto pressionado, a corrente desviada para terra e assim garantindo o nvel baixo
(0V) neste mesmo pino.
E se o resistor no existisse? Veja a figura a seguir.
Sem pressionar o boto, temos a mesma situao anterior, nvel alto (5V). Porm, quando o
boto pressionado, a corrente desviada para terra sem limite de corrente, ocorrendo a
situao de curto-circuito.
49
Isto pode provocar o esgotamento da fonte de energia (no caso de uma bateria), aumento da
temperatura nos condutores ou at mesmo danificar o pino do microcontrolador.
50
6.1
LDR
LDR (Light Dependent Resistor - Resistor Dependente de Luz) um tipo de resistor cuja
resistncia varia conforme a intensidade de luz que incide sobre ele. Quanto maior a
intensidade, menor a resistncia. A resposta do LDR lenta, ou seja, no capaz de detectar
mudanas rpidas da intensidade da luz.
51
um LED vermelho
um LDR
52
53
Salve o sketch com o nome atividade5. O resultado esperado ser o LED aumentar o brilho ao
diminuir a intensidade de luz sobre o LDR.
6.2
float
At o momento usamos apenas o tipo de dado int. Nesta atividade foi necessrio usar o tipo
float, que permite manipular nmeros em ponto flutuante (ponto decimal). Use somente este
tipo de dado onde nmeros inteiros no se aplicam.
Voc vai entender a necessidade de usar o tipo float na funo analogRead().
6.3
analogRead()
analogRead( pino)
Esta funo l o valor presente no pino indicado. Diferentemente de digitalRead() que l
somente um valor alto ou baixo, analogRead() l um valor de 0 a 1023 que representa
proporcionalmente um valor de tenso, sendo que 0 representa 0V e 1023 representa 5V. Assim,
cada unidade representa 0.004882V (5V dividido por 1024). Em muitas publicaes sobre o
Arduino, o valor est arredondado para 0.0049V. Para manipular valores como este, temos que
usar o tipo de dado float.
Nos Arduinos Duemilanove, UNO e seus compatveis, temos 6 pinos de entrada analgicos. A
resoluo (a grandeza que pode ser medida) destas entradas 10bits. Sabendo que cada bit s
pode possuir um de dois estados, alto e baixo, ento, 2 elevado a 10 resulta em 1024 (0 a 1023).
54
55
um LED amarelo
56
int
int
int
int
int
int
pinoLEDvermelho
pinoLEDamarelo
pinoLEDverde
pinoLEDvermelho_pedestre
pinoLEDverde_pedestre
pinoBotao
=
=
=
=
=
=
5;
6;
9;
11;
12;
2;
int estadoBotao = 0;
void setup() {
// pinos de saida
pinMode(pinoLEDvermelho, OUTPUT);
pinMode(pinoLEDamarelo, OUTPUT);
pinMode(pinoLEDverde,
OUTPUT);
pinMode(pinoLEDvermelho_pedestre, OUTPUT);
pinMode(pinoLEDverde_pedestre,
OUTPUT);
// pino de entrada
pinMode(pinoBotao, INPUT);
}
void loop(){
digitalWrite(pinoLEDvermelho_pedestre, HIGH);
digitalWrite(pinoLEDverde, HIGH);
// le o estado do botao
estadoBotao = digitalRead(pinoBotao);
// verifica se botao foi pressionado
if (estadoBotao == HIGH) {
// semaforo veiculos
// aguarda 1 minuto (60000 segundos)
delay(60000);
// apaga LED verde
digitalWrite(pinoLEDverde, LOW);
// acende LED amarelo
digitalWrite(pinoLEDamarelo, HIGH);
// aguarda 15 segundos
delay(15000);
// apaga LED amarelo
digitalWrite(pinoLEDamarelo, LOW);
// acende LED vermelho
digitalWrite(pinoLEDvermelho, HIGH);
// semaforo pedestres
// apaga LED vermelho
digitalWrite(pinoLEDvermelho_pedestre, LOW);
// acende LED verde
digitalWrite(pinoLEDverde_pedestre, HIGH);
// aguarda 30 segundos
delay(30000);
// apaga LED verde
digitalWrite(pinoLEDverde_pedestre, LOW);
// pisca LED vermelho 3 vezes
57
delay(500);
digitalWrite(pinoLEDvermelho_pedestre, LOW);
delay(500);
}
// apaga LED vermelho
digitalWrite(pinoLEDvermelho, LOW);
}
}
Sketch Atividade 6
Para encerrarmos este tutorial, propomos uma atividade bem simples em sua montagem, porm
com conceitos que, juntamente com as atividades anteriores, daro a certeza de que o Arduino
uma plataforma simples, disponvel para pessoas sem contato no dia-a-dia com a eletrnica e
computao e capazes de realizar projetos no mundo real.
8.1
NTC
58
Para um valor mais preciso da temperatura, aplica-se a equao Steinhart-Hart. Para quem
gosta de clculos, visite:
http://en.wikipedia.org/wiki/Steinhart%E2%80%93Hart_equation
Nesta atividade simplificamos esta equao, que est disponvel na ntegra em:
http://www.arduino.cc/playground/ComponentLib/Thermistor2
= 4;
int valorLido = 0;
double termistorNTC(int valorAnalogico) {
double temperatura;
temperatura = log(((10240000/valorAnalogico) - 10000));
temperatura = 1 / (0.001129148 + (0.000234125 * temperatura) +
(0.0000000876741 * temperatura * temperatura * temperatura));
//--- converte Kelvin em Celcius
temperatura = temperatura - 273.15;
return temperatura;
}
void setup() {
pinMode(pinoNTC, INPUT);
Serial.begin(9600);
delay(5000);
}
void loop() {
valorLido = int(termistorNTC(analogRead(pinoNTC)));
Serial.println( valorLido );
delay(1000);
}
Sketch Atividade 7
60
Salve o sketch com o nome atividade7. O resultado esperado ler a temperatura ambiente e
mostr-la no monitor serial da IDE do Arduino. Para isto, ao final da transferncia do programa,
necessrio clicar no boto Serial Monitor indicado na figura abaixo.
Ao iniciar o sketch, o bloco setup() configura o pino que est ligado o NTC como entrada e
define a velocidade de comunicao com a sada serial. Aguarda 5 segundos e transfere o
controle para o bloco loop(). Este por sua vez chama a funo termistorNTC, passando para
esta funo o valor informado pelo NTC. A funo faz o clculo, convertendo em graus Celcius,
e devolve o valor calculado para a varivel valorLido. Apresenta na tela do monitor serial este
valor, aguarda 1 segundo e re-inicia o ciclo.
Agora vamos explicar as novidades nesta atividade.
8.2
#include
8.3
double
O tipo double, assim como o float, permite manipular nmeros em ponto flutuante (ponto
decimal). At o momento, na linguagem Arduino estes tipos so exatamente iguais. Use
somente onde realmente nmeros inteiros no se aplicam.
8.4
Functions
61
8.5
log()
log( nmero )
Esta funo retorna o logaritmo natural do nmero informado.
Obs. Estranhamente at a verso 0022, esta funo no est documentada no site oficial do
Arduino.
8.6
Serial
Este objeto usado para comunicao serial entre a placa Arduino e o computador ou at
mesmo outro dispositivo que aceite comunicao serial. Quando em uso, o Arduino utiliza os
pinos digitais 0 e 1 para a comunicao, portanto no use estes pinos para entrada ou sada.
Alis, voc deve ter notado que quando transferimos o sketch para a placa, dois LEDs
associados a estes pinos piscam. Se no notou, transfira novamente o sketch e repare os LEDs
piscarem.
No nosso caso, a comunicao vai ser feita com o computador. Por isso voc foi orientado ao
final do processo de transferncia do sketch, a clicar no cone indicado na atividade. Lembra?
62
63
Concluso
Esperamos que voc, no mnimo, tenha se divertido. Vimos uma pequena parte da plataforma
Arduino e h muito ainda o que explorar. No deixe de nos acompanhar em
http://www.eaduino.com.br. Novos tutoriais, cursos e muita informao sobre esta fantstica
plataforma de desenvolvimento.
Muito obrigado.
Equipe EADuino.
64