Вы находитесь на странице: 1из 43

Arduino Bsico

Michel Rodrigues Machado


Arduino e aplicaes
Nesta segunda parte do mdulo, estudaremos os
seguintes tpicos:
- PWM no Arduino;
- Uso de Macros;
- Condicionais principais;
- Funes etras !interrupes"#

Arduino e aplicaes
$ntendedo a PWM
- Pulse-width modulation (PWM) ou Modulao por
largura de pulso uma tcnica para obter um sinal
analgico por meios digitais;
- Consiste em manipular a rao c!clica (dut"-c"cle) de
um sinal de sa!da# para controlar motores ou outros
componentes;
- $s pinos utiliados para isso so os %ue tem o
s!mbolo &'( ou os pinos )#*#+#,#-. e -- da /rduino 0no1
Arduino e aplicaes
$ntendedo a PWM
Arduino e aplicaes
$ntendedo a PWM
Como utili%ar&
- Primeiro preciso estudar a 2uno analogWrite e
sobre como a3ustar o 4ut"-c"cle;
- / 2uno /nalogWrite usada para de2inir uma sa!da
analgica atra5s dos pinos digitais;
- 6ssa 2uno utilia a 5ariao do dut"-c"cle;
- $ 5alor do dut"-c"cle 5aria de . 7 8**# onde .
e%ui5ale a . e 8** e%ui5ale 7 -..9 do 5alor do ciclo1
Arduino e aplicaes
'alores do (ut)-c)cle
Arduino e aplicaes
$ntendedo a PWM
$emplos:
analogWrite!*ed+, ,-"; .. *ed ir/ ligar com +,012olts
analogWrite!*ed+, +3+"; .. *ed ir/ ligar com 4,5-2olts
analogWrite!*ed+, 011"; .. *ed ir/ ligar com 1 2olts

Arduino e aplicaes
6:erc!cio resol5ido;
<igar um led na /rduino utiliando PWM de2inindo
somente -#8* 5olts de sa!da1
=esoluo;
const int <ed- > --; ??de2inimos um led para receber o 5alor de pino --
5oid setup()
@
pinMode(<ed-# $0AP0A); ??de2inimos o pino como sa!da para o <ed
B
5oid loop()
@
analogWrite(<ed-# +C); ?? 5alor de sa!da para o pino --
dela"(+.);
B

Arduino e aplicaes
*$M67AN(89
- / 2uno Pwm usada %uando %ueremos utiliar uma
sa!da digital para &simular( uma sa!da analgica;
- D 5ai 2uncionar nos pinos %ue ti5erem o s!mbolo &'(
antes do nEmero do pino;
- F cdigo utiliaremos sempre o comando
&/nalogWrite( acompanhando o pino e o 5alor de dut"-
cicle %ue %ueremos na sa!da pwm1

Arduino e aplicaes
6:erc!cio;
0tilie as + sa!das PWM para controlar + leds com
5alores de sa!da di2erentes1

Arduino e aplicaes
4ica;
Para ter maior preciso nos 5alores# utilie &regras de )(
para determinar os 5alores de sa!da1
$ recurso do Pwm pode ligar <eds sem utiliar
resistores para limitar a 5oltagem1
Aenso de 2uncionamento dos <eds;
Para ligar um <ed 5erde;
*5 e%ui5ale a 8** do ciclo
8185 e%ui5alerG G H
Arduino e aplicaes
CGlculo
*5 ----------- 8**
8185 ---------- :
*: > 8**18#8
I > 8** 1 8#8
*
I > --8
<ogo para o <ed 5erde acender com 818 5olts# colocamos
no cdigo;
analogWrite( <ed# --8);


Arduino e aplicaes
6:perimento;
Criar um programa no /rduino utiliando Pwm para
controlar um motor# 5ariando os 5alores de dut"-c"cle
para se obter 5elocidades di2erentes1
Arduino e aplicaes
Utili%ando PWM com a :un;o <one
- /inda com a tcnica de PWM# podemos 2aer a
ligao de um buer e utiliar a 2uno A$F6 do
/rduino;
- / 2uno Aone reprodu atra5s de um determinado
5alor de 2re%uJncia# alguma (ou todas) as K notas
musicais# uma por 5e;
- Cada nota musica admite uma 2re%uJncia dada em
Lert1
Arduino e aplicaes
Utili%ando PWM com a :un;o <one
/ seguir a 2re%uJncia de cada nota musical;
4 M 8+8
= - 8,C
Mi - )).
NG - )C,
Dol - ),8
<G - CC.
Di - C,C
Arduino e aplicaes
Utili%ando PWM com a :un;o <one
Fo 5oid loop() a 2uno tone similar 7 2uno
analogWrite1
6scre5emos a 2uno e entre parJnteses colocamos o
nEmero do pino e o 5alor %ue %ueremos;
tone(pino# 5alor); ??o 5alor 2re%uJncia dada em hert
de cada nota1
Fo 2inal de e:ecuo# podemos utiliar a 2uno
noAone# para encerrar a e:ecuo das notas1
u
Arduino e aplicaes
Macros
- Macro# por de2inio# nada mais do %ue uma
substituio para strings1 6m outras pala5ras# um
determinado elemento %ue pode assumir alguns
5alores;
- 6m linguagem C as macros podem ser do tipo
$b3eto ou Nuno;
- 0ma macro do tipo $b3eto# usada para dar nome 7
constantes;
- 0ma macro do tipo Nuno responsG5el por de2inir
2unOes (aritmticas ou no) antes da e:ecuo de
um programa;
Arduino e aplicaes
Macros
- =epresentamos as macros atra5s da direti5a
=de:ine, sempre com o s!mbolo P;
6:emplos;
- Macro tipo $b3eto; Pde2ine / -.
??neste e:emplo &/( recebe o 5alor -.;
- Macro tipo Nuno; Pde2ine D$M/(a#b) ((a)Q(b))
??o elemento D$M/ receberG o 5alor de a Qb;
Arduino e aplicaes
Macros
- / estrutura de uma Macro serG ento;
Pde2ine RnomeSdaSconstanteT R5alorSatribu!doT
- Fa utiliao de uma macro# usamos sempre letras
maiEsculas;
6:; Pde2ine PUF$- -8 ?? 5alor pino - recebe -8 (ou o
pino -8 nomeado como primeiro pino);
- Vuando utiliamos Pde2ine# no colocamos o &;( no
2inal da declarao;

Arduino e aplicaes
Macros
- Fa plata2orma /rduino# as macros tem como
principal 2uno# a de2inio dos pinos;
6:;
Pde2ine PUFS<64 -8
Pde2ine PUFSW$A --
<embre-seX
- Fo utilie &ponto e 5irgula( nas macros;
- 0tilie as letras maiEsculas para discriminar as
macros;
Arduino e aplicaes
Macro > Const
Arduino e aplicaes
Macro > Const
- Macro
4es5antagem; $cupa mais espao na memria do
controlador# logo pode ter sua e:ecuo um pouco mais
lenta;
Yantagem; Nacilita no processo de &debugging( (mtodo
para reduir erros em um programa)1
Arduino e aplicaes
Macro > Const
- Const
4es5antagem; 4i2iculta o processo de &debugging( em
um programa;
Yantagem; $cupa menos espao na memria do
controlador# logo tem sua e:ecuo mais rGpida1
Arduino e aplicaes
$erc?cios:
-) Naa um programa para acender leds# utiliando
macros1
8) =e2aa o cdigo do e:perimento com <dr e leds#
utiliando macros1
Arduino e aplicaes
Condicionais
Fo /rduino utiliamos as mesmas condicionais usuais
da linguagem C;
Condicionais mais utiliadas;
- U2111else;
- while;
- do111While;
- 2or1
Arduino e aplicaes
i:###else
6n5ol5e em geral# 8 possibilidades# se uma delas no
2or 5erdadeira# a outra conse%uentemente serG;
6strutura;
i2 RcondioT
@
RcomandoT
B
else
@
RcomandoT
B
Arduino e aplicaes
i:###else
6:emplo;
i2 (5alorDensor R> C..)
@
digitalWrite(<edS-# LUZL);
B
else
@
digitalWrite(<edS-#<$W);
B
Arduino e aplicaes
@Aile
6ssa condicional estabelece uma condio inicial para
alguma instruo acontecer1
6strutura;
while RcondioT
@
RcomandoT
B
Arduino e aplicaes
@Aile
6:emplos;
while (5alorDensor R> C..)
@
digitalWrite( <edS-# <$W);
B
Arduino e aplicaes
@Aile
6:emplos;
while (contador R -..)
@
contador > contador Q-;
B
Arduino e aplicaes
do###@Aile
6stabelece uma instruo %ue ocorre en%uanto uma
condio estG sendo satis2eita1
6strutura;
do
@
RcomandoT
B
while RcondioT
Arduino e aplicaes
do###@Aile
6:emplos;
do
@
digitalWrite(PinSmotor# LUZL);
B
while (5alorMotor R *.);

Arduino e aplicaes
do###@Aile
6:emplos;
do
@
cont > cont Q -;
B
while (cont R 8..);

Arduino e aplicaes
do###@Aile
Cuidado9
/ condicional do111while a BNCCA %ue recebe ponto e
5irgula aps o Eltimo parJntese1
do
@
cont > cont Q -;
B
while (cont R 8..);

Arduino e aplicaes
:or
6sse operador condicional# reEne basicamente 5Grios
comandos em sua estrutura# por essa rao# um dos
mais utiliados1
6strutura;
2or(RpreparaoT; RcondioT; RalcanceT)
@
RcomandoT
B

Arduino e aplicaes
:or
6:emplos;
2or(:>. ; :R-..; :>:Q-)
@
digitalWrite(PinSmotor# LUZL);
B
<embrando %ue em C# podemos substituir &: > : Q -(
por &:QQ(1 /s duas 2ormas so corretas e e%ui5alentes1

Arduino e aplicaes
:or
6:emplos;
2or(:>. ; :R-..; :QQ)
@
digitalWrite(PinSmotor# LUZL);
B

Arduino e aplicaes
$erc?cios
-1 0tilie o comando while para manter ligado um motor
durante -. ciclos de contagem;
81 =e2aa o e:erc!cio - utiliando o comando 2or;
)1 Naa um cdigo para controlar um motor e um led#
%ue de5em ligar alternadamente (en%uanto um esti5er
ligado o outro tem %ue estar desligado);
C1 0tilie os comandos i2111else e 2or para implementar
um seguidor de linha com um <dr e um motor1

Arduino e aplicaes
Funes etras
Do 2unOes 2ora do &loop( do /rduino# %ue podem ser
utiliadas como interrupOes ou para au:iliar na
e:ecuo de instruOes1
Vual%uer 2uno e:tra# de5e ser criada sempre
acompanhada da direti5a &5oid( e de5e ser tratada
como uma 2uno nati5a 7 plata2orma /rduino1
Vuando 2or utiliada# de5e ser designada apenas pelo
nome seguido de parJnteses e ponto e 5irgula &();(1

Arduino e aplicaes
Funes etras
6:emplos;
5oid loop()
@
i2 (5alorDensor R C..)
@
apaga<eds();
digitalWrite(<ed-# LUZL);
B

5oid apaga<eds()
@
digitalWrite(<ed-# <$W);
digitalWrite(<ed8# <$W);
digitalWrite(<ed)# <$W);
B

Arduino e aplicaes
Funes etras
Fote %ue no e:emplo anterior# a 2uno 2oi criada para
manter todos os leds sempre apagados# porm a
condicional &i2( ordena %ue o primeiro led este3a aceso1
Como a prioridade de uma condicional maior do %ue
de uma 2uno e:tra# o primeiro led irG acender# 3G os
demais continuam com a mesma &ordem( de
permanecerem desligados1
Prioridade Condicional D Prioridade Fun;o $tra
Arduino e aplicaes
$erc?cio:
-1 Crie uma 2uno e:tra para manter ) motores
desligados e aps um determinado per!odo de tempo
cada um deles de5e ligar em se%uencia com os demais
desligados1
Arduino e aplicaes
Contato;
michel1r1machado[gmail1com

Вам также может понравиться