You are on page 1of 14

Introduo a programao com Arduino

Aula1 - Introduo

Antigamente trabalhar com componentes de hardware tal como placas de circuito


significava criar os circuitos do zero, utilizando de dezenas de componentes. Alm do
mais todo circuito era projetado para uma aplicao especfica (uma nica aplicao).

Com o surgimento de microprocessadores facilitou-se muito a partir do momento em


que podemos criar softwares que dizem ao hardware o que fazer de modo que apenas
com alguns comandos pode-se modificar a funcionalidade e a lgica de um
dispositivo, sem que seja necessrio refazer parte ou muitas das vezes at mesmo a
maioria do circuito.

Desenvolver projetos com o Arduino muito cativante e importante para alunos de


curso de Informtica, pois estaremos exemplificando de forma didtica os conceitos
bsicos da informtica interagindo na prtica tanto na questo de hardware quanto de
software de modo que os estudos realizados vem muito a auxiliar o processo de
ensino-aprendizagem. Tambm resalto a interdisciplinaridade proporcionada pelos
projetos desenvolvidos com Arduino sendo que as reas de Eletrnica e Informtica
estaro sendo desenvolvidas de forma prtica e divertida.

A placa do Arduino um microcontrolador, ou seja, um pequeno circuito que contm


um computador inteiro em um pequenino chip. Esta placa contm todos os
componentes necessrios para o funcionamento do microcontrolador e tambm faz
com que o mesmo possa se comunicar com seu computador.

[foto do microcontrolador do Arduino]

Microcontrolador do Arduino

Podemos programar o Arduino para realizar as mais diversas tarefas como por
exemplo programar sensores, controlar luzes, lmpadas etc.

O Arduino como um pequeno computador e pode ser programado para fazer aquilo
que voc desejar, utilizando de uma linguagem de programao no ambiente IDE do
Arduino, que transformar o programa (ou sketch como chamado no Arduino) em
um executvel para a sua placa Arduino.

Voc poder adquirir uma placa Arduino (juntamente com o cabo para conect-lo ao
USB de seu computador) pelo site do "Mercado Livre" (www.mercadolivre.com.br)
ou em lojas de eletrnica por um valor mdio de R$ 50,00.
Aula2 - O que Arduino e IDE de desenvolvimento.

O Arduino formado em duas partes:


- A placa de circuito Arduino:

[foto]
Este o hardware com o qual voc ir trabalhar para construir seus projetos.

- O IDE (ambiente de desenvolvimento de cdigos) do Arduino que o software que


voc executa em seu computador para criar um programa no qual ser "instalado" na
placa do Arduino e dir a mesma o que deve ser feito.

O paralelo com o hardware e software de um PC inevitvel: o software dir aos


circuitos (hardware) do computador as tarefas que devero ser executadas assim
como sua programao dir para os circuitos do Arduino o que fazer.

A IDE poder ser baixada em: http://arduino.cc/en/main/software

[foto]

A IDE do Arduino chama-se "sketch".

A programao no Arduino realizada em linguagem C e compilada para uma


linguagem de mquina que compreendida pelo microcontrolador e a mesma
transferida para o Arduino por meio de um cabo conectado na USB e na placa do
Arduino. Este processo chama-se "upload do sketch".

O ciclo de programao do Arduino basicamente realizado conforme o roteiro


abaixo:
1) Conecte sua placa a uma porta USB
2) Escreva um programa (sketch) para que o hardware execute alguma tarefa
3) Faa o upload do sketch para a placa, utilizando a conexo USB
4) A placa executar o sketch que voc criou.

Aula3 - Instalando o driver e conhecendo a placa do Arduino

Utilizamos de um computador de configurao padro, com Sistema Operacional


Windows para programarmos nosso Arduino. Naturalmente que o hardware do
Arduino ser um novo hardware para seu computador e desta forma necessrio
instalar um driver para que seu PC possa se comunicar com o Arduino.

Conecte a placa Arduino na porta USB do seu computador ( necessrio estar


conectado na Internet) e automaticamente o Windows 7 ir procurar o driver no
"Windows Update":
[foto do driver instalado]

Agora, voc deve descobrir qual porta serial foi atribuda sua placa Arduino - essa
informao ser necessria para program-la futuramente. Veja que no meu caso foi
atribuda a porta "COM3".

Tambm podemos identificar a porta definida no Windows 7 seguindo os seguintes


passos:

1) Clique com o boto direito do mouse em "Computador" (menu iniciar) e


escolhendo Propriedades.
2) Clique em "Gerenciador de Dispositivo"
3) Abra o item "Portas" e l estar especificado (Arduino Uno), conforme podemos
ver na figura abaixo:

[figura porta Arduino]

Agora que sabemos a porta que est sendo utilizada pelo Arduino podemos
configur-la no IDE, para isso abra o Sketch e em Tools > Serial Port, escolha a que
foi definida na instalao do driver.

Anatomia da placa Arduino

Abaixo temos um desenho de uma placa de Arduino e em seguida iremos verificar a


funo das pinagens:

[desenho Arduino]

AREF - Tenso de referncia para entradas analgicas.

GND - Terra digital

Pinos de 2 at 13 - Pinos de entrada e sada digitais, que operam em 5V e podem


receber ou fornecer um mximo de 40mA de corrente. Os pinos 2 e 3 tambm podem
ser usados para gerar interrupes.

Analog In (A0 at A5) - Entradas analgicas, que fornecem uma resoluo de 10 bits
(1024 valores distintos); medem por padro valores de 0 a 5V.

Reset - Reseta o microcontrolador quando em nvel baixo.

Vin (Voltage In) - Podemos fornecer tenso eltrica atravs desse pino ou acess-la
caso usemos uma fonte de alimentao externa.

5V - Sada regulada de 5V
3V3 (ou 3.3V) - Fornece tenso de 3.3V a partir de um regulador on-board, com
50mA mx.
Aula 4 - LED pisca-pisca

Um diodo emissor de luz (light-emitting diode, ou LED) um componente eletrnico


semelhante a uma lmpada.

Quando mantemos um LED aceso por muito tempo devemos utilizar de outro
componente eletrnico denominado "resistor" para poder "limitarmos" a corrente
eltrica fornecida pelo Arduino de forma a no queim-lo.

Como nosso primeiro projeto ser apenas para "testar" sua placa Arduino por alguns
instantes vamos implementar este projeto sem o resistor, focando principalmente a
programao do microcontrolador de modo a fazer o LED piscar.

Abaixo foto de um LED vermelho (encontrado em qualquer loja de materiais


eletrnicos):

[foto do LED]

Um LED tem polaridade (seus terminais tem positivo e negativo), sendo que o
negativo o ctodo (K), ou o terminal mais curto, e o positivo o nodo (A).

Na figura abaixo vemos a conexo que dever ser feita com o LED na placa, estando
ctodo no GND (terra ou negativo) e o nodo no pino de nmero 13 do lado digital.

[foto do LED conectado]

Estando pronto a parte do hardware resta agora criarmos o software (programao)


que dir ao microcontrolador do Arduino o que deve ser feito.

Para criar o cdigo-fonte do programa abra o Sketch do Arduino e digite o seguinte


cdigo:

[cdigo fonte]

O cdigo-fonte est comentado, dispensando maiores comentrios.

Agora iremos verificar se o cdigo est correto, pressionando o boto de verificao


(todos os cdigos feitos importante serem verificados):

[boto-verificao]

Se estiver tudo certo ir aparecer a mensagem "Done compiling" (Compilao


encerrada) na parte inferior do IDE.
Neste momento o cdigo-fonte foi traduzido (compilado) para um cdigo que poder
ser executado pelo Arduino (assim como um arquivo .EXE pode ser executado para o
Windows).
Agora aps conectar sua placa na USB de seu computador voc far o Upload do
programa para a placa, pressionando o boto de Upload:

[boto-upload]

O IDE do Arduino enviar o sketch para a placa que armazenar em sua memria (de
modo similar que um PC faz ao armazenar um programa em execuo em sua
memria RAM) executando-o quando desejado.

Um cdigo transmitido para o Arduino ficar nele at que outro sketch o substitua,
mesmo caso a placa for reiniciada ou desligada, da mesma forma que os dados do
disco rgido do PC mantm um programa.

Tudo dando certo voc ver o LED acender por um segundo e, em seguida, apagar
por um segundo em um "loop" infinito, conforme programamos.

Atividade: modifique seu programa e altere o tempo que o LED fica ligado e
desligado no loop.
Aula 5 - Dispositivo interativo

Podemos considerar o PC um dispositivo interativo, como sabemos um PC tem em


seus perifricos de "entrada" algo semelhante a sensores onde a partir de um teclado
podemos realizar a entrada de um "estmulo" que ser processado pelo computador e
tambm pelos perifricos de sada temos a sada ou "ao" realizada pelo software
podendo ser algo visualizado no monitor, na impressora, em uma caixinha de som
etc...

Um dispositivo interativo um circuito capaz de perceber o ambiente ao seu redor


utilizando de sensores (que no caso do PC so os dispositivos de entrada) de modo a
converter medidas do mundo real em sinais eltricos.

O dispositivo processa a informao que recebe dos sensores (no caso de um PC


temos a CPU ou microprocessador) e utilizando um comportamento implementado
como um software capaz de interagir com o mundo por meio de "atuadores" ou
componentes eletrnicos que convertem sinais eltricos em uma ao fsica.

A figura abaixo exemplifica um dispositivo interativo:

[dispositivo interativo]

Sensores e atuadores: so componentes eletrnicos que permitem a interao com o


mundo.

Para que um dispositivo possa captar luz, temperatura ou outros dados fsicos
necessrio converter estes sinais do "nosso mundo" em eletricidade. No nosso corpo
humano, por exemplo, o olho converte a luz em sinais que so enviados ao crebro.
Os dispositivos que capta os sinais de nosso mundo fsico chamas-se SENSOR.
Aula6 - Utilizando de interruptor como sensor

Neste projeto iremos ter um maior controle sobre o LED a partir de um sinal
provindo de um interruptor (que estar realizando o papel de um sensor ao interagir
com o "mundo real"). Neste caso o interruptor ser como um dispositivo de entrara e
estar ligado na pinagem analgica do Arduino. Ao enviar o sinal seu programa ir
identificar este sinal e permitir que o LED ascenda (ou desligue).

O mais simples dos sensores um interruptor do tipo "boto de presso",


denominado "push button", que um interruptor do tipo normalmente aberto e
encontrado nas casas de componentes eletrnicos. Veja a foto do mesmo abaixo
(existem diversos modelos):

[foto push button]

Para verificarmos (ler) se h um sinal ou tenso aplicada no pino de uma chave


utilizando da funo digitalRead() onde entre os parnteses especificamos o nmero
do pino.

Esta funo retorna um valor HIGH ou LOW dependendo do que foi verificado, de
modo que podemos "fazer uma pergunta" ao computador do Arduino e receber uma
resposta, que poder ser tratada posteriormente em alguma tomada de deciso.

Para realizar esta montagem iremos utilizar de uma "protoboard" para conectar fios e
componentes eletrnicos. Abaixo a imagem de uma protoboard:

[foto protoboard]

Uma protoboard nada mais do que diversos pinos interligados para facilitar a
montagem de circuitos (pois os mesmos so montados e desmontados com
facilidade). Na figura abaixo vemos como os pinos de uma protoboard so
interligados internamente:

[foto protoboard-interna]

Para este projeto iremos utilizar um resistor de 10K ohms (marrom, preto e laranja):

[foto resistor]

Monte o circuito conforme a figura abaixo:

[foto]

Implemente o seguinte programa:


[foto-programa]

Desta vez utilizando a instruo IF para verificar se o boto-sensor estiver


pressionado, quando sim o retorno TRUE fazendo com que o LED ascenda. Caso
contrrio (FALSE) fazemos com que o LED apague.

A grande vantagem da eletrnica digital e programvel sobre a eletrnica clssica


termos apenas um circuito, mas muitos comportamentos diferentes, como no caso de
no desejarmos ter de manter o dedo sobre o boto para que a luz permanea acesa,
mas apenas um pressionar do boto (ou seja, o LED ficar acessa mesmo depois de
afastarmos nosso dedo).

Para realizar este comportamento iremos utilizar de uma VARIVEL, para isto
implemente o seguinte cdigo e faa o teste:

[codigo-led-interruptor]

Aps testar veja que a luz altera seu estado to rapidamente que impossvel
utilizarmos o boto para definir com preciso se ela deve ficar acesa ou apagada. O
Arduino l a posio do interruptor milhares de vezes e altera state de acordo de
forma que os resultados so imprevisvel, ocorrendo do LED ficar aceso mesmo
quando o quisermos apagado e vice-versa.

Agora iremos desenvolver um cdigo aperfeioado para corrigir este problema,


detectando o momento exato em que o boto pressionado, armazewnando o valor
atual antes de ler um novo valor, permitindo comparar a posio atual do boto com a
anterior e alterando o estado para HIGH apenas depois de ter sido LOW. Veja abaixo
um exemplo de codificao com esta implementao:

[foto cdigo aperfeioado]

Observe que entre as transies de estados ligado/desligado colocamos um delay de


10 milissegundos pois caso as conexes de nosso interruptor/sensor no seja to
perfeita poder ocorrer do dispositivo gerar sinais imprecisos enganando o
computador do Arduino, de modo que adicionando este atraso o Arduino ir melhor
detectar a transio de estados.
Aula 7 - Uso de sensor de luz

Neste projeto ao invs de utilizarmos um boto de presso como sensor (que tem
apenas dois estados: ligado/desligado) iremos utilizar de um sensor de luz que um
dispositivo analgico cujo valor produzido poder indicar no apenas que h luz, mas
tambm a quantia de luz presente (ou captada). Os valores deste tipo de sensor podem
se alterar continuamente e para tanto iremos utilizar da pinagem analgica do
Arduino.

Abaixo temos uma foto deste sensor, que um resistor dependente de luz (LDR):

[Foto]

Para este sensor quanto menos luz que o mesmo captar maior ser sua resistncia a
passagem da corrente eltrica e quando mais luz receber menor ser esta resistncia.
Esta mudana de resistncia ser para este projeto algo a ser computado pelo Arduino
(como entrada de informao) e como ao (sada de dados processada), faremos com
que o LED existente no prprio Arduino pisque a uma frequncia proporcional.
Utilizei neste caso do prprio LED existente na placa para facilitar a montagem, mas
nada impede de voc colocar seu prprio LED para observar a resposta do sistema.

Para lermos valores analgicos utilizamos da funo analogRead() que retorna


nmeros entre 0 e 1023 representando respectivamente voltagens entre 0 e 5 volts.

Para este projeto iremos utilizar de um resistor de 10K ohms (marrom, preto e
laranja) :

[foto]

Abaixo temos o desenho do circuito deste projeto:

[desenho]

Abaixo segue o programa que far o LED piscar com base na leitura do valor emitido
sensor, que por sua vez est em conformidade a quantidade de luz recebida:

[imagem cdigo]

Neste projeto criamos um sistema que tem como entrada um valor analgico de um
sensor, como processamento um cdigo que conforme o valor de entrada emite sinal
de ligado/desligado e finalmente como sada um sinal luminoso proporcionado por
um LED que ter como frequncia uma quantia proporcional ao valor obtido na
leitura do valor do sensor.
Aula 8 - Criando sons com sonorizador piezo

Nesta aula iremos conectar um sonorizador piezo (veja figura abaixo) ao seu Arduino
para criar programas que geram sons de alarmes:

[foto piezo]

Uma capsula sonorizadora "piezo" um transdutor, ou seja, a partir dos impulsos


eltricos a ele fornecido h uma converso em sons.

Um piezo portanto um dispositivo do tipo "atuador", provendo portanto


determinada "ao", que no caso trata-se justamente do som produzido.

Vamos iniciar criando um som de um simples alarme de carro, para isto realize as
seguintes conexes do piezo para com as pinagens digital GND, 8 do Arduino e
piezo:

[foto conexes]

Em seguida faa o upload do seguinte cdigo, responsvel pela programao do som


de alarme:

[imagem do cdigo]

Explicao:

1) A varivel sinVal armazena o valor de seno que faz o tom se elevar e diminuir,
enquanto que a varivel toneVal obtm o valor de sinVal e converte-o para uma
frequncia solicitada.

2) pinMode(8, OUTPUT): define o pino digital 8 como interface de sada do sinal.

3) Nosso loop inicia de 0 at 179 e ento fazemos converso de x em radianos e


tambm em uma frequncia adequada para o som do alarme.

Nosso som gera um tom crescente e decrescente de uma onda senoidal.

Experimentos: alterando os valores de 2000 e 1000 no clculo de toneVal, alm de


alterar o tempo de espera, voc pode gerar sons diferentes para o alarme. Divirta-se, e
descubra os sons que voc pode produzir.
Aula 9 - Controlando um motor de corrente contnua (CC)

Neste projeto utilizaremos como atuador um pequeno motor CC e necessitaremos de


outros componentes eletrnicos, citados abaixo:

- Transistor TIP 120:

[foto]

- Diodo 1N4007

[foto]

- Suporte para pilhas (se o motor for de 6V ento o suporte ter de ser de 4 pilhas)

[foto]

- Motor CC

[foto]

- Potencimetro de 10K ohms

[foto]

Se voc planeja construir um brao robtico ou qualquer tipo de dispositivo mvel,


aprender a controlar um motor ser de grande valia.

Como um motor requer correntes geralmente mais altas do que as que o Arduino
pode produzir (5V) voc ter de utilizar transistores para garantir corrente suficiente
para o motor e diodos para proteo do Arduino, por isto o motivo neste projeto
destes componentes eletrnicos "extras".

Neste projeto voc controlar a velocidade de um motor CC em uma direo


utilizando um transistor de potncia, um diodo, uma fonte de alimentao externa
(para fornecer energia ao motor) e um potencimetro (para controlar a velocidade).

Veja na figura abaixo a conexo dos componentes para compor o circuito:

[foto]

Digite o cdigo abaixo e faa o upload para o Arduino:

[foto]
Depois de fazer o upload do cdigo, conecte a fonte de alimentao externa e voc
pode virar o potenciMETRO PARA CONTROLAR A VELOCIDADE DO
MOTOR.

A parte central do cdigo est no loop principal onde potValue guardar o valor
(analgico, que a resistncia proporcionada pelo potencimetro) lido no pino 0 e
depois dividido por 4:

potValue = analogRead(potPin) /4;

Obs.: o valor analgico ir de 0 (para 0 V) a 1023 (para 5V), mas o valor que deve ser
emitido no transistor pode ir apenas de 0 a 255, por isso da diviso por 4, obtendo um
valor mximo de 255, atribuvel ao pino digital 9, por meio da funo analogWrite.

Explicao:

Girando o potencimetro, valores diferentes, indo de 0 a 1023 so lidos e os mesmos


convertidos de 0 at 255 de modo que ser emitido no pino digital 11 voltagens
diferentes alterando a velocidade do motor.

Girando o potencimetro totalmente para a direita o motor desliga, mas quando


girado para a esquerda o motor acelera at a velocidade mxima.
Aula 10 - Trabalhando com Servomecanismos

Um servo um motor com um sistema de feedback, que auxilia no controle mais


exato da posio do motor, girando tipicamente a 180 graus so muitos comuns em
aviozinhos de controle remoto, sendo utilizado para controlar o "flap" do mesmo.
Carros de controle remoto utilizam servos no mecanismo de direo, e barcos de
controle remoto para controle do leme.

possvel utilizarmos de servos como juntas mveis dos braos de pequenos robs.

Na programao do Arduino temos uma biblioteca especfica para trabalharmos com


servos, a Servo.h, transformando em tarefa fcil o controle deste tipo de motor de
preciso.

Ser necessrio que voc adquira um servo RC padro (em minhas pesquisas no
Google encontrei servos e outros componentes eletrnicos no site
http://www.webtronico.com/ ):

[foto]

Para este projeto voc poder utilizar de um potencimetro de 4,7 K ohms.

Abaixo temos a imagem do circuito para o projeto onde visualizamos as conexes


dos componentes:

You might also like