Você está na página 1de 26

CURSO DE INTRODUO AO ARDUINO

Autor:
Vincius Neves de Figueiredo
Estudante de Engenharia Eltrica - UFF

Curso de Introduo ao Arduino 1


PARTE 1 INTRUDUO

Curso de Introduo ao Arduino 2


O QUE ARDUINO?
O arduino um Microcontrolador em que possvel ser reprogramado, no mundo
da computao e da eletrnica isso chamado de open source. Com ele, voc ser capaz de
controlar inmeros dispositivos e componentes de circuitos eltricos, por exemplo, LEDs,
motores, chaves, a luz de uma casa, sensores, temperatura, a potencia de um determinado
equipamento, um rob, e muito mais.

O arduino
O Arduino UNO um microcontrolador em que possui 13 entradas do tipo digital 5
do tipo analgica, sendo que 6 das digitais possuem o recurso de PWM, que conta tambm
com 2 pinos de comunicao RX/TX, e mais sadas de 3,3V e 5V, e alguns outros recursos
que sero comentados durante o curso.

Portas digitais

Pinos de comunicao RX/TX

Portas Analgicas

Logo neste incio foram falados muitos conceitos que so comuns dentro do mundo
da eletrnica, vamos comear definindo-os.

Curso de Introduo ao Arduino 3


Entradas e sadas analgicas e digitais
A porta digital tem o seu funcionamento de acordo com os princpios boolianos, ou
seja, possui apenas dois estados: Verdadeiro ou Falso, certo ou errado, 0 ou 1, High ou Low.
No caso do arduino, ser High ou Low quer dizer que est passando corrente eltrica por
aquela porta ou no.

No grfico acima em t [0,2] no existe corrente eltrica, logo o estado igual a


LOW, enquanto que em t [2,4] est passando uma corrente de 1A.

OBS.: A portas digitais do arduino suportam at 40mA

A porta analgica capaz de receber e fornecer tenses distintas de HIGH ou LOW.


Ela tem a resoluo de 10 bits (0 at 1023) para medir uma tenso de 0 at 5V, utilizando
uma simples regra de trs para isso. Por exemplo, se temos uma tenso de 3,5V:

Temos que , como ele s l valor positivo, ento o arduino ir te fornecer o


nmero 716.

A seguir, um exemplo de um sinal analgico

Curso de Introduo ao Arduino 4


PWM (Pulse Width Modulation)
Este um conceito muito famoso dentro do ramo da engenharia, ele utilizado para
controlar a potncia de determinado dispositivo, no arduino est localizado junto s portas
digitais que possuem o smbolo . Com ele podemos controlar o que chamamos de Duty
Cycle, que uma porcentagem da potncia total que poderia ser entregue ao dispositivo.

Exemplo de Duty Cycle:

Porta de Rx / Tx (receiving / transmiting)


Essas so as portas de comunicao do Arduino, elas so necessrias para adaptar
uma comunicao bluetooth, wireless, rdio, dentre outros tipos...

A Protoboard (breadboard)
A protoboard um ambiente de prototipagem que faz com que seja fcil a
montagem e a desmontagem de circuitos eltricos, no precisando assim de soldas, junes
e gambiarras no circuito.

Trata-se de uma placa cheia de pequenos buracos de espaamento e tamanho


padronizados, em que praticamente todo componente eletrnico compatvel com a
mesma. Esses pequenos orifcios esto conectados como ser mostrado no esquema a
seguir.

Curso de Introduo ao Arduino 5


Ser preciso um pouco de prtica at que voc possa criar os circuitos precisar
pensar se est conectando o circuito em paralelo ou em srie. de boa prtica energizar as
trilhas da periferia do protoboard com a tenso que ser utilizada no projeto.

LED (Light Emitter Diode)


O led um dispositivo que permite a passagem de corrente eltrica em apenas um
sentido do catodo para o anodo, o LED de 5mm simples precisa de apenas 4mA para e 1,90V
para ser ligado, com isso podemos ligar vrios LEDs em paralelo utilizando a sada digital
(max 40mA), porm s conseguimos ligar 2 LEDs em srie!

Curso de Introduo ao Arduino 6


Hello World (Eletrnica)
Agora que aprendemos os conceitos iniciais, podemos comear a fazer as nossas
experincias e assim aplicar todo o conhecimento que ganhamos at aqui. Iremos comear
com um simples exemplo bem simples, iremos ligar um LED utilizando um boto.

O boto funciona de maneira muito simples, ele na verdade uma chave que est sempre
aberta at que algum o aperte. Quando isso acontece, ele vai deixar fluir corrente por
todas as suas quatro pernas permitindo, por exemplo, controlar se vai passar corrente em
um local ou no!

O mesmo utilizado em uma infinidade de eletrodomsticos e eletrnicos, a nica


diferena que a empresa coloca uma capa neste boto para poder deixa-lo mais
amigvel.

Montagem do circuito para acender o LED:

Exerccios Propostos
1. Ligue dois LEDs em srie.
2. Ligue 4 LEDs em paralelo.
3. Porque no possvel ligar 3 LEDs em srie?
4. Quantos LEDs so possveis ligar em paralelo? (quantidade terica)

Curso de Introduo ao Arduino 7


Programao
Neste momento vocs j conseguem ligar um LED apertando um boto, mas seria
mais interessante ligar o LED a partir de um sensor mesmo quando ns bem entendermos,
concordam? Para isso precisamos da ajuda da programao.

A Programao que o Arduino utiliza uma espcie de programao clssica bem


diferente da utilizada no NXT, composto apenas linhas de cdigo, essas so baseados em
uma linguagem chamada C++, que nasceu na dcada de 80 e que at hoje uma das
linguagens mais faladas no mundo da computao, pelos seguintes motivos:

Rpida;
Fcil Uso;
Portvel (aceito em Linux, Windows, Mac e outras plataformas);
Aceita em chips e microcontroladores (Esse o nosso caso!);

TIPO DE DADOS
Vamos Comear Falando sobre os tipos de dados, que nada mais so que as variveis
ou onde voc vai poder armazenar seus dados. Neste curso trataremos apenas de 4 tipos de
dados: um para tratar de nmeros inteiros, dois para tratar de nmeros no inteiros e um
para caracteres.

Curso de Introduo ao Arduino 8


TIPO INT
Para armazenar valores inteiros utilizamos o tipo int, com ele conseguimos armazenar
nmeros entre -32.768 at 32.767, ou seja, de at . Existem vrias maneiras de
iniciar uma varivel, a seguir sero expostos alguns exemplos:

TIPO DOUBLE / FLOAT


O double e o float utilizados para armazenar nmeros no inteiros, no caso do arduino os
dois tipos significam exatamente a mesma coisa, na verdade, o hardware do arduino
permite existir apenas o tipo Float, porm muitos programadores tem o habito de utilizar o
tipo double quando programam em JAVA, C, C# entre outras linguagens pois com ele
possvel armazenar um nmero com o dobro de preciso que o float a custo de um maior
consumo da memria RAM do computador, ento para satisfazer esse pblico o Arduino
colocou o tipo double em sua sintaxe. Exemplo de utilizao:

TIPO CHAR
O tipo char utilizado para armazenar um caractere, com ele podemos armazenar
smbolos do teclado segundo a tabela ASCII.

Curso de Introduo ao Arduino 9


Reparem que esta tabela correlaciona nmeros inteiros, binrios e hexadecimais com letras,
o que quer dizer que o computador no entende o que uma letra, ele na verdade
consegue ler um binrio ou um hexadecimal e traduz isso para uma letra, de maneira que
possamos ler. Alm disso, possvel inicializar letras como nmeros, utilizando essa tabela:

Segundo essa tabela, as duas linhas de cdigo acima significam a mesma coisa.

COMO FUNCIONA O CDIGO DO ARDUINO?

Na programao do Arduino, ns podemos separar o cdigo em trs trechos bem


definidos como mostrado na imagem acima.

PRIMEIRA PARTE:
A primeira parte onde normalmente as variveis so inicializadas, caso voc
inicialize as variveis neste ponto, voc pode utiliza-las em qualquer parte do cdigo
chamamos isso de variveis globais.

Alm das variveis, possvel adicionar nesta parte do cdigo as bibliotecas que
ajudaro a utilizar outros dispositivos e assim facilitar a nossa vida ao programar, este
assunto abordaremos mais a frente neste curso.

Obs.: No possvel colocar qualquer tipo de comando para o Arduino executar


nesta parte de cdigo.

Curso de Introduo ao Arduino 10


SEGUNDA PARTE:
A segunda parte do cdigo onde voc normalmente configura o Arduino, o local
que voc deve informar ao microcontrolador quais portas voc ir no seu projeto e se ele
est servindo como sada de dados ou entrada de dados.

QUAIS DISPOSITIVOS A SEGUIR ENTRADAS (INPUT) E QUAIS SO DE SADAS (OUTPUT) DE DADOS?


1. Um sensor de temperatura 5. Uma Tela LCD
2. Um boto 6. Uma tela LCD
3. Um LED 7. Um Ventilador
4. Um sensor de toque

Nesta parte de cdigo, o Arduino passar lendo apenas uma nica vez, ento voc
deve colocar o que acha interessante para este caso. Existe um exemplo clssico que de
fcil observao dentro das nossas casas, muitos eletrodomsticos assim que so ligados na
energia eltrica do um beep para indicar que esto funcionando corretamente ou
simplesmente para avisar que esto ligados.

TERCEIRA PARTE
Esta ser a parte em que dever conter o seu algoritmo, quando o arduino comea a
ler este trecho, ele entra em um loop infinito e no sai mais da parte do cdigo at que a
energia seja cortada ou se o boto do RESET seja pressionado. Todos os micros
controladores fazem isso, por exemplo, a sua TV tem um sensor de infravermelho (mdulo
bluetooth nas mais modernas) que fica esperando vir o sinal de seu controle remoto, na
verdade ele fica rodando um cdigo em loop infinito de leitura do sensor infravermelho.

Neste trecho do cdigo possvel inserir absolutamente tudo: comandos,


inicializao de variveis e alocao de pinos do Arduino.

Hello World (Controlado pelo Arduino)


Agora que aprendemos para que serve cada parte do cdigo do arduino podemos
dar prosseguimento com o nosso curso. Vamos introduzir alguns comandos importantes
para essa etapa.

INICIANDO OS PINOS DE ENTRADA E SADA


Toda vez que queremos utilizar os pinos digitais do arduino, devemos dizer para ele
se iremos utiliza-los como entrada ou se queremos utiliza-los como sada. Para fazermos
isso basta digitarmos algo como a imagem abaixo:

Curso de Introduo ao Arduino 11


A sintaxe funciona de seguinte maneira:

pinMode([nmero da porta correspondente], [INPUT ou OUTPUT]);

de boa prtica de programao que ao invs de colocar um nmero no local que


para informar a porta deseja usar, colocar uma varivel nomeada contendo o nmero, como
podemos observar o exemplo do inicio da seo Como funciona o cdigo do Arduino.

Obs.: No se esquea do ponto e virgula no final de cada comando que voc der, isso vem
da herana da linguagem C++ que utiliza este caractere para dizer ao compilador do
programa que o comando acabou. Em C++ a sintaxe do tipo Case Sensitivity, o que
significa que para ele a varivel int Arduino; diferente da varivel int arduino; sendo
assim, tome bastante cuidado na sintaxe, pois fcil confundir pinmode ao invs de
pinMode.

O DELAY
O comando de delay() muito utilizado nos projetos do arduino, com ele podemos
dizer por quanto tempo tal ao ser executada. Tudo o que ele faz travar o processador
em um loop at que complete certa quantidade de tempo. O comando delay contado em
milissegundos, ou seja, se eu quero parar o meu processador durante um tempo de meio
segundo, podemos escrever:

O DIGITALWRITE
O comando digitalWrite() serve para energizarmos os pinos digitais ou no. Esse
comando ser o responsvel pelo controle de quase tudo dentro do seu cdigo, para que
funcione necessrio dizer em qual pino est querendo escrever e se deseja liga-lo ou
desliga-lo (HIGH ou LOW). Por exemplo:

Neste exemplo estamos dizendo para o arduino para ligar o pino onde est o led1.

Agora estamos dizendo ao arduino para desligar o pino onde est localizado o led1.

Curso de Introduo ao Arduino 12


PRTICA
Vamos comear montando o circuito mais simples possvel, ligaremos apenas um LED ao
pino digital 8, em srie com um resistor de 440, como ilustrado na figura a seguir.

Lembre-se que a posio do resistor no importante, ele pode estar frente do LED ou
atrs do LED no circuito.

O cdigo a seguir vai fazer com que o LED acenda e apague a cada meio segundo:

Curso de Introduo ao Arduino 13


Agora que digitou o cdigo basta apertar na tecla e dar o
upload no Arduino. Caso tenha dado algum erro, verifique se o
Arduino est selecionado na porta certa clicando em Tools > Serial
Port, verifique tambm se em Board est selecionada a verso do
Arduino que voc est utilizando.

Exerccios Propostos
1. Faa 3 LEDs ligarem em sequncia.
2. Faa uma simulao de um cruzamento de transito, utilizando os LEDs de cor
vermelha, verde e amarelo.

Parabns voc foi introduzido programao e a eletrnica


utilizando o Arduino!!!

Curso de Introduo ao Arduino 14


PARTE 2 SINAL ANALGICO

Curso de Introduo ao Arduino 15


O SINAL ANALGICO
Como foi comentado durante a parte introdutria desta apostila, o sinal analgico
pode assumir valores diferentes de 0 ou 1, sendo assim o arduino trabalha com um
conversor analgico / digital que faz com que entre um sinal de 0 a 5 volts e ele transforme
em um nmero entre 0 e 1023.

Ento com isso podemos ter at 1024 opes para descrever valores de 0 at 5 Volts
com o arduino. Graas a isso podemos utilizar sensores no arduino, porque em geral tudo o
que um sensor faz variar a sua resistncia ou a sua impedncia sobre a corrente.

Voc pode pensar... Bom, se estamos falando que ele l a tenso de 0 a 5 Volts, ento
significa que o Arduino pode atuar como um voltmetro? E a resposta SIM! As portas
analgicas podem sim atuar como voltmetro, com a restrio que ele precisa estar dentro
de um range (faixa) de tenso de at 5V, caso ultrapasse isso voc pode queimar o arduino,
ento tome cuidado antes de plugar o fio neste local.

Caso precise medir uma tenso em um circuito que tenha mais do que 5V dever construir
um circuito divisor de tenso assunto importante dentro do mundo da eletricidade e de
fcil implementao e aplicao.

J que estamos falando sobre a variao de tenso em um circuito, podemos falar sobre um
resistor que capaz de variar a sua resistncia, chamado de POTNCIOMETRO.

Curso de Introduo ao Arduino 16


Potencimetro
O potencimetro um elemento muito difundido em todos os ramos da eletrnica e muito
fcil de ser encontrado em nossa volta. Por exemplo observe o que cada um destes
produtos tem em comum:

O que h por trs destes botes circulares um potencimetro, ele que faz com que voc
tenha um ajuste fino sobre alguma coisa. O potencimetro tambm muito estudado junto
com a aula de fsica em eletricidade, o representamos desenhando da seguinte maneira:

O potencimetro que utilizaremos durante as nossas aulas ser o potencimetro linear,


pois a sua resistncia varia linearmente com o ngulo com que giramos o cursor.

Curso de Introduo ao Arduino 17


Vamos fazer o primeiro teste com este elemento um LED e um resistor. Iremos variar a
potncia do LED apenas variando a posio do pino do potencimetro. Observe o circuito
montado abaixo:

Obs.: Daqui para frente, no ser mais colocado o arduino dentro no desenho quando no
for utilizado alguma das portas de comunicao, podemos observar onde sendo utilizado o
5V ou o GND pela cor dos fios.

Exerccios Propostos
1. Por que colocamos a resistncia junto ao potencimetro se ele j uma
resistncia?
2. Desenhe o esquema do circuito acima.

MULTMETRO
O multmetro um aparelho capaz de realizar medies em um circuito eltrico.
Neste curso ele ser fundamental ter fluidez em seu manuseio, com ele iremos medir a
Tenso, Corrente e a resistncia.

Curso de Introduo ao Arduino 18


Para utilizarmos ele como se fosse um voltmetro, primeiramente verifique se a
ponteira vermelha est ligada ao orifcio que contem o smbolo V e a preta est no orifcio
do COM, agora basta inseri-lo no circuito em paralelo com o que gostaramos de medir.

Para utilizarmos o multmetro como um ampermetro, primeiramente verifique se a


ponteira vermelha est ligada ao orifcio que est escrito a quantidade mxima de ampre
suportada e a preta no orifcio escrito COM, agora basta ligar este fio em srie com a parte
do circuito que gostaria de medir.

Para utilizarmos o multmetro como um ohmmetro, primeiramente verifique se a


ponteira vermelha est ligada ao orifcio com o smbolo e o preto no orifcio escrito COM,
agora basta ligar essas duas pernas em srie com o dispositivo que deseja medir a
resistncia.

OBS.: NUNCA MEDIR A RESISTNCIA EM UM CIRCUITO ENERGIZADO, CASO FAA ISSO


PODER QUEIMAR O APARELHO!!!

Curso de Introduo ao Arduino 19


Exerccios Propostos

Com o multmetro, faa as seguintes medies:

1. A tenso sobre o resistor R2;


2. A corrente que passa pelo circuito;
3. A resistncia efetiva destes resistores.

A PORTA ANALGICA
A porta analgica do arduino se comporta como um voltmetro, porm no temos a
presena de dois fios como utilizado o voltmetro normalmente, isso ocorre porque o
arduino deixa a perna do negativo aterrada, ou seja, na referencia de 0. Se formos medir a
tenso do resistor R2 como mostrado na imagem acima ficaria:

Esta porta capaz apenas de medir tenses apenas de 0 at 5 V, transformando a


tenso medida em um nmero de 0 at 1023 proporcionalmente. O responsvel por esta
medida o conversor analgico/digital.

A sintaxe para ler a porta analgica :

analogRead(Porta);

No arduino UNO podemos ler as seguintes portas: A0 / A1 / A2 / A3 / A4 / A5.

Curso de Introduo ao Arduino 20


Com esta porta tambm podemos escrever ,ou seja, mandar um sinal. Diferentemente da
leitura (que puramente analgica), quando mandamos um sinal diferente de HIGH e LOW
ele na verdade ir fazer um PWM para representar tal sinal analgico. Sua sintaxe ser:

analogWrite(Porta, Tenso gerada (0 at 1023));

PRTICA
Agora iremos controlar a velocidade que o LED ir piscar utilizando um potencimetro, um
arduino, um resistor e alguns cabos.

OBS.: Colocamos o resistor em srie com o potencimetro apenas para evitar o curto circuito caso giremos o
cursor at a resistncia zero.

PROGRAMANDO

Observaes:

Neste cdigo foram utilizadas constantes para descrever o led e o pot, logo no possvel
reescrever estas variveis durante o cdigo.

Curso de Introduo ao Arduino 21


Quando utilizamos as portas analgicas no preciso declarar que estamos utilizando-as no
trecho do void setup.

O comando if (comando de seleo)


O comando de seleo if um dos mais utilizados na programao estruturada, utilizamos
ele para fazer a deciso entre dois casos distintos ou at mesmo buscando por uma
condio distinta das demais. Com ele podemos filtrar coisas como: o boto est ou no
apertado, se o sensor est marcando um valor acima ou abaixo de um determinado valor,
entre outros.

Sua sintaxe bem simples:

if(condio)
{
...
}

else
{
...
}
No caso de uma condio determinada (no dual), possvel suprimir o else e selecionar
apenas um caso.

OPERADORES
Para fazer o controle das condies que queremos impor, devemos utilizar os operadores, a
seguir encontrada uma lista de operadores que podemos utilizar:

Operador Funo
== Igual
!= Diferente de
> Maior que
< Menor que
>= Maior ou igual que
<= Menor ou igual que
% Resto da diviso
|| Or
&& And

Curso de Introduo ao Arduino 22


A seguir esto ilustrados alguns exemplos de utilizao deste comando:

Os comandos or e o and fazem com que seja possvel a sobre carga do comando if, ou
seja, com ele podemos testar mais de uma condio. Por exemplo:

No primeiro exemplo, ele ir assumir como verdade se qualquer um dos casos der
verdadeiro. No segundo, ele ir assumir como verdade se e somente se os dois casos forem
verdadeiros.

PRTICA
Neste exemplo prtico, vamos detectar se o potencimetro est tendendo para a esquerda
ou para a direita. Tudo o que iremos fazer ler a tenso em cima de um potencimetro com
a porta analgica pegando o nmero 1023 (5V) e dividir por 2, ou seja, 511 (2,5V), se for
maior do que 511 o LED D1 ir acender, caso contrrio o LED D2 ir acender.

Tome como exerccio, criar o circuito desenhado acima na protoboard.

Obs.: tome cuidado para no deixar o potencimetro chegar resistncia igual a zero.

Curso de Introduo ao Arduino 23


PROGRAMANDO

Repare que no preciso dizer que o caso contrrio da condio <= 511, ele j subentende
isso.

O Piezoeltrico
O Piezoeltrico um dos mais interessantes componentes eltricos que podemos
encontrar no mercado, suas aplicaes so praticamente infinitas, podemos encontra-los
em sensores de toque, alarmes, caixa de som, ultrassom hospitalar, fones de ouvido, dentre
outros.

Curso de Introduo ao Arduino 24


O piezoeltrico capaz de gerar energia, chamada piezo eletricidade, ela se d
quando seus cristais so pressionados assim gerando uma DDP alta, porm momentnea,
por este motivo ele considerado o menor gerador de energia do mundo. Por outro lado, se
passamos uma corrente pelos cristais ele gera ondas mecnicas de mesma frequncia que
pulsamos nela.
Neste momento nos interessa apenas utiliza-lo como um emissor de som, conhecido
como Buzzer, seu smbolo em um circuito este.

PRTICA
O funcionamento do Buzzer muito simples, basta aplicar uma corrente em uma
determinada frequncia em seus terminais que ele comea a emitir sons. A resistncia
colocada em srie com ele far controlar a potncia do dispositivo.

OBS.: Tome cuidado com o lado positivo e negativo do buzzer, a perna com maior comprimento o polo
positivo.

PROGRAMANDO
O arduino j possui uma funo para gerar os pulsos eltricos chamada de tone, sua
sintaxe funciona da seguinte maneira:

tone(Porta Digital, Frequncia a ser emitida);


Devemos tambm desligar o Buzzer, com a funo noTone, neste caso devemos apenas
informar o nmero da porta que est sendo parada.

noTone(Porta Digital);

Desta maneira conseguimos escrever musicas com o buzzer, associar determinada nota
musical com determinada frequncia, criar teclados eletrnicos utilizando botes, etc.

Curso de Introduo ao Arduino 25


Curso de Introduo ao Arduino 26