Vous êtes sur la page 1sur 151

Oficina de

Robtica
Eletrnica e
Programao em
Arduino
Laboratrio de Automao
e Robtica Mvel

Apresentao

Material produzido para o projeto Oficina de


Robtica por:
Anderson Luiz Fernandes Perez
Renan Rocha Dars

Contatos:
Universidade Federal de Santa Catarina
-Laboratrio de Automao e Robtica Mvel
anderson.perez (at) ufsc.br
renanrdaros (at) hotmail.com

http://oficinaderobotica.ufsc.br
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

Sumrio

ELETRNICA

Introduo
Diagramas Esquemticos
Corrente e Tenso
Resistncia Eltrica
Condutores e Isolantes
Resistores
LED
Protoboard
Motor DC
Ponte H

ARDUINO

Introduo ao Arduino
Arduino UNO
Programao
Ambiente de Desenvolvimento
Funes setup() e loop()
Monitor Serial
E/S Digital
Entrada Analgica
PWM

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

Introduo

A eletrnica pode ser definida como a cincia


que estuda formas de controlar a energia
eltrica em circuitos eltricos.
um ramo da engenharia que desenvolve
solues
aplicando
os
princpios
de
eletricidade descobertos pela fsica.
Usa
circuitos
eltricos
formados
por
condutores
eltricos
e
componentes
eletrnicos para controlar sinais eltricos.
A eletrnica divide-se em analgica e digital.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

Introduo
Eletrnica na robtica
Eletrnica

Micro-mecnica + pneumtica + hidrulica

Computao (informtica)

Mecatrnica
UFSC - Oficina de Robtica - @2013

Robtica
Robtica

Laboratrio de Automao
e Robtica Mvel

Diagramas Esquemticos
comum precisarmos representar
graficamente um circuito ou sistema
eletrnico.
A representao grfica de sistemas e
circuitos eletrnicos facilita o desenvolvimento
de novos projetos, serve como guia durante o
reparo de equipamentos e uma tima
ferramenta de ensino e aprendizagem de
eletrnica.
Dentre todas as formas de representao
grfica utilizadas na eletrnica, a que mais se
destaca so os Diagramas Esquemticos.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

Diagramas Esquemticos
Apresentam a forma como todos os
componentes de um circuito esto
interconectados para formar um sistema ou
parte dele.
Utilizam smbolos, que representam os mais
variados componentes eletrnicos, e linhas
que representam as conexes entre os
terminais desses componentes.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

Diagramas Esquemticos
Exemplo:

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

Corrente e Tenso

tomo
Composto por prtons, nutrons
e eltrons.
Os prtons carregam cargas
positivas e esto presentes no ncleo do
tomo.
Os nutrons no carregam carga e assim
como os prtons esto presentes no ncleo
do tomo.
Os eltrons carregam carga negativa e
orbitam o ncleo do tomo.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

Corrente e Tenso

tomo

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

10

Corrente e Tenso

tomo
Quando o tomo possui o mesmo nmero
de eltrons e de prtons considerado
neutro.
Quando o tomo possui um nmero maior
de prtons do que de eltrons
considerado positivo.
Quando o tomo possui um nmero maior
de eltrons do que de prtons
considerado negativo.

Ionizao o nome dado quando


o tomo ganha ou perde eltrons.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

11

Corrente e Tenso

Atrao e Repulso
Corpos com cargas de sinais opostos de
atraem e corpos com cargas de mesmo
sinal de repelem.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

12

Corrente e Tenso

Corrente Eltrica
Os eltrons livres movimentam-se de um
tomo a outro atravs de um meio condutor.
Corrente eltrica um fluxo de eltrons que
circula em um condutor.
A corrente eltrica (I) medida em Ampre
(A).
Para os eltrons se moverem de um tomo a
outro necessrio haver uma diferena de
potencial ou tenso.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

13

Corrente e Tenso

Sentido Real vs Sentido Convencional


da Corrente Eltrica
Em um circuito os eltrons livres se deslocam
do polo negativo para o polo positivo. Esse o
sentido real da corrente eltrica.
Em anlise de circuitos, entretanto, costuma-se
considerar que os eltrons se deslocam no
sentido oposto: do polo positivo para o polo
negativo. Esse o sentido convencional da
corrente eltrica.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

14

Corrente e Tenso

Sentido Real vs Sentido Convencional


da Corrente Eltrica

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

15

Corrente e Tenso

Tipos de correntes eltricas


Corrente contnua
Os eltrons se movem sempre no mesmo
sentido.
Grande parte dos equipamentos eletrnicos
trabalha com corrente contnua.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

16

Corrente e Tenso

Tipos de correntes eltricas


Corrente alternada
Na corrente alternada o sentido dos eltrons
invertido periodicamente, ou seja, ora a
corrente positiva, ora negativa.
A energia eltrica que chega em nossas casas
do tipo corrente alternada.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

17

Corrente e Tenso

Tipos de correntes eltricas


Corrente pulsante
Somente alterna o valor.
Corrente resultante da retificao da corrente
alternada.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

18

Corrente e Tenso

Tenso Eltrica
a fora responsvel por impulsionar os
eltrons em um condutor.
A tenso medida em Volts (V).
Exemplos:
Bateria/pilha de 9 volts
Tomada de 110 ou 220 volts

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

19

Resistncia Eltrica

Resistncia eltrica uma grandeza que


indica o quanto um determinado
condutor se ope a passagem de
corrente eltrica.
Bons
condutores
de
eletricidade
possuem um nmero maior de eltrons
livres, por esse motivo possuem uma
baixa resistncia eltrica.
A resistncia eltrica medida em Ohms
e o smbolo a letra grega mega - .
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

20

Condutores e Isolantes

Condutores
So materiais que pouco se opem
passagem de corrente eltrica.
Possuem baixa resistividade.
Os eltrons da camada de valncia esto
fracamente ligados ao ncleo e, assim,
quebram facilmente suas ligaes com o
tomo, tornando-se livres para
compor a corrente eltrica.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

21

Condutores e Isolantes

Condutores

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

22

Condutores e Isolantes

Isolantes
Fazem muita oposio passagem de
corrente eltrica.
Possuem alta resistividade.
Os eltrons da camada de valncia esto
fortemente ligados ao ncleo e, por isso,
precisam de uma energia muito maior para
desfazer suas ligaes com o tomo. Isso
resulta em poucos eltrons livres para
compor a corrente eltrica.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

23

Condutores e Isolantes

Isolantes

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

24

Resistores
O resistor um componente eletrnico
utilizado para limitar o fluxo de
corrente.
Os resistores podem ser do tipo fixo ou
do tipo varivel.
Os resistores mais comuns so os de
filme de carbono.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

25

Resistores

Um resistor fixo de filme de carbono


possui em seu corpo faixas coloridas
que indicam o seu valor de resistncia.

Onde:

A
A
A
A

primeira faixa indica o primeiro nmero.


segunda faixa indica o segundo nmero.
terceira faixa indica o multiplicador.
quarta faixa indica a tolerncia.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

26

Resistores

Tabela de cores para a identificao de


resistores
Cores

Faixa 1 e 2

Faixa 3

Faixa 4

Preto

Marrom

10

1%

Vermelho

100

2%

Laranja

1000

Amarelo

10.000

Verde

100.000

Azul

1.000.000

Violeta

10.000.000

Cinza

Branco

Ouro

5%

Prata

10%

Sem cor

20%

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

27

Resistores

Exemplo:

Primeira faixa = laranja -> 3


Segunda faixa = laranja -> 3
Terceira faixa = marrom -> 10
Resistor de: 33 * 10 = 330
Quarta faixa = ouro -> tolerncia de 5%
Resistor de: 313.5 a 346.5

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

28

Resistores Variveis

Potencimetro
um resistor varivel, ou seja, sua
resistncia pode ser ajustada conforme a
necessidade da aplicao (circuito).
Um potencimetro pode ser linear ou
logartmico, dependendo da funo do
ngulo de giro de seu eixo.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

29

Resistores Variveis

LDR (Light Dependent Resistor


resistor dependente de luz)

O LDR ou foto resistor um resistor


varivel que aumenta ou diminui a
resistncia de acordo com a intensidade da
luz que est sendo incidida sobre ele.
um tipo de sensor muito utilizado em
robtica.
Quanto maior a luminosidade incidida sobre
ele menor ser a resistncia.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

30

Resistores Variveis

Sensor de Temperatura
Os sensores de temperatura, termistores,
podem ser do tipo NTC Negative
Temperature Coefficient ou PTC Positive
Temperature Coefficient.
Nos sensores do tipo NTC a resistncia
diminui com o aumento da temperatura.
Nos sensores do tipo PTC a resistncia
aumenta com o aumento da temperatura.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

31

LED

LED (Light-Emitting Diode Diodo


Emissor de Luz)
O LED emite luz visvel (amarela, verde,
vermelha, laranja ou azul) ou luz
infravermelha.
Deve ser ligado em srie com um resistor
limitador de corrente.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

32

LED

LED (Light-Emitting Diode Diodo


Emissor de Luz)
O LED um exemplo de componente
eletrnico polarizado.
O posicionamento desse componente em
um circuito precisa levar em conta os polos
da fonte de alimentao.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

33

LED

Identificao dos Terminais

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

34

Protoboard (Matriz de Contatos)


Ferramenta
que
auxilia
no
desenvolvimento de prottipos de
circuitos eletrnicos.
Torna desnecessria a soldagem de
componentes eletrnicos em uma
placa.

composta de furos que so
interconectados por um material
condutor localizado abaixo da camada
de plstico.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

35

Protoboard (Matriz de Contatos)

A figura ilustra a forma como os furos


esto interconectados.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

36

Protoboard (Matriz de Contatos)

Passo-a-passo para a montagem de


um pequeno circuito
Passo 1

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

37

Protoboard (Matriz de Contatos)

Passo-a-passo para a montagem de


um pequeno circuito
Passo 2

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

38

Protoboard (Matriz de Contatos)

Passo-a-passo para a montagem de


um pequeno circuito
Passo 3

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

39

Protoboard (Matriz de Contatos)

Passo-a-passo para a montagem de


um pequeno circuito
Passo 4

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

40

Motor DC (Motor de Corrente


Contnua)

Transforma energia eltrica em energia


mecnica.
O sentido de giro do rotor depende do
sentido da corrente que percorre as
bobinas do motor.
Invertendo-se os polos da fonte de
alimentao, inverte-se o sentido de giro
do rotor.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

41

Motor DC (Motor de Corrente


Contnua)

Partes de um motor DC:

Rotor: Parte mvel do motor. Gira quando o


alimentado.

motor

Estator: Parte esttica do motor. montado


ao redor do rotor.
Escovas: Conectam os terminais ao comutador.
Comutador: Conecta o rotor alimentao e
inverso do sentido da
corrente,
necessria para o correto
funcionamento do motor.
UFSC - Oficina de Robtica - @2013

faz a

Laboratrio de Automao
e Robtica Mvel

42

Motor DC (Motor de Corrente


Contnua)

Rotor: Parte mvel do motor. Possui


bobinas que geram um campo magntico
quando o motor alimentado.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

43

Motor DC (Motor de Corrente


Contnua)

Rotor: Parte mvel do motor. Possui


bobinas que geram um campo magntico
quando o motor alimentado.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

44

Motor DC (Motor de Corrente


Contnua)

Estator: Parte esttica do motor. montado


ao redor do rotor. Composto de ms
permanentes ou bobinas.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

45

Motor DC (Motor de Corrente


Contnua)

Estator: Parte esttica do motor. montado


ao redor do rotor. Composto de ms
permanentes ou bobinas.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

46

Motor DC (Motor de Corrente


Contnua)

Escovas: Conectam os terminais ao


comutador.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

47

Motor DC (Motor de Corrente


Contnua)

Escovas: Conectam os terminais ao


comutador.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

48

Motor DC (Motor de Corrente


Contnua)

Escovas: Conectam os terminais ao


comutador.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

49

Motor DC (Motor de Corrente


Contnua)

Comutador: Conecta o rotor alimentao


e faz a inverso do sentido da corrente,
necessria para o correto funcionamento
do motor.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

50

Motor DC (Motor de Corrente


Contnua)

Inverso do sentido de giro:

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

51

Ponte H

A Ponte H um circuito que permite a


inverso do sentido de giro de um
motor DC atravs da comutao de
chaves eletrnicas.
Pode ser implementada com chaves de
contato,
como
push-buttons,
ou
transistores,
que
permitem
o
acionamento e inverso do sentido de
giro de um motor atravs de sinais
eltricos, sem a interveno humana.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

52

Ponte H

Todas as
parado.

chaves

abertas

Motor

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

53

Ponte H

S1-S3 fechadas e S2-S4 abertas Rotor


gira em um sentido.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

54

Ponte H

S2-S4 fechadas e S1-S3 abertas Rotor


gira no sentido oposto ao anterior.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

55

Ponte H

S1-S4 fechadas Essa configurao no


deve ocorrer. *** CURTO CIRCUITO ***

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

56

Ponte H

S2-S3 fechadas Tambm no deve


ocorrer.
*** CURTO CIRCUITO ***

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

57

Ponte H

Todas as chaves fechadas Tambm


no deve ocorrer. *** CURTO CIRCUITO
***

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

58

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

59

Introduo ao Arduino

O Arduino uma plataforma utilizada para


prototipao de circuitos eletrnicos.
O projeto do Arduino teve incio em 2005 na
cidade de Ivrea, Itlia.
O Arduino composto por uma placa com
microcontrolador Atmel AVR e um ambiente de
programao baseado em Wiring e C++.
Tanto o hardware como o ambiente de
programao do Arduino so livres, ou seja,
qualquer pessoa pode modific-los e reproduzilos.
O Arduino tambm conhecido como plataforma
de computao fsica.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

60

Introduo ao Arduino

Tipos de Arduino
Existem vrios tipos de Arduino com especificidades de
hardware. O site oficial do Arduino lista os seguintes tipos:

Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino
Arduino

UNO
Leonardo
Due
Esplora
Mega
Mega ADK
Ethernet
Mini
LilyPad
Micro
Nano
ProMini
Pro
Fio

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

61

Introduo ao Arduino

Referncias na WEB:
O site oficial do Arduino http://arduino.cc
Um documentrio sobre o Arduino pode ser
assistido em:
http://arduinothedocumentary.org/

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

62

Arduino UNO

Vista da placa do Arduino UNO Rev 3


(frente e verso)

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

63

Arduino UNO

Caractersticas

Microcontrolador: ATmega328
Tenso de operao: 5V
Tenso recomendada (entrada): 7-12V
Limite da tenso de entrada: 6-20V
Pinos digitais: 14 (seis pinos com sada PWM)
Entrada analgica: 6 pinos
Corrente contnua por pino de entrada e sada: 40 mA
Corrente para o pino de 3.3 V: 50 mA
Quantidade de memria FLASH: 32 KB (ATmega328)
onde 0.5 KB usado para o bootloader
Quantidade de memria SRAM: 2 KB (ATmega328)
Quantidade de memria EEPROM: 1 KB (ATmega328)
Velocidade de clock: 16 MHz

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

64

Arduino UNO

Alimentao
O Arduino UNO pode ser alimentado pela
porta USB ou por uma fonte externa DC.
A recomendao que a fonte externa seja
de 7 V a 12 V e pode ser ligada
diretamente no conector de fonte ou nos
pinos Vin e Gnd.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

65

Programao

O microcontrolador do Arduino um
computador
que
segue
instrues
detalhadas dadas por seres humanos.
Para que o Arduino execute determinada
tarefa, precisamos ensin-lo a executar
essa tarefa, passo a passo.
Os humanos passam instrues para o
Arduino escrevendo programas.
Um programa uma sequncia de
instrues codificadas em uma linguagem
de programao.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

66

Programao

Linguagens de Programao
Uma linguagem de programao um meio
utilizado para se comunicar com computadores,
inclusive o Arduino, de um modo relativamente
simples para os seres humanos.
Os computadores s conseguem executar
instrues a eles enviadas na forma de
sequncias de 0s e 1s (linguagem de mquina).
Passar instrues a um computador usando
linguagem de mquina seria extremamente
complexo e tedioso, por isso usamos linguagens
de programao mais prximas da linguagem
natural.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

67

Programao

Algoritmo
Sequncia de passos que visa atingir um
objetivo bem definido.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

68

Programao

Processamento de dados
Entrada

Processamen
to

Sada

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

69

Ambiente de
Desenvolvimento
O ambiente de desenvolvimento do
Arduino (IDE) gratuito e pode ser
baixado
no
seguinte
endereo:
arduino.cc.
As principais funcionalidades do IDE
do Arduino so:

Escrever o cdigo do programa


Salvar o cdigo do programa
Compilar um programa
Transportar o cdigo compilado para a
placa do Arduino
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

70

Ambiente de
Desenvolvimento

Interface principal do ambiente de


desenvolvimento

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

71

Funes setup() e loop()

As duas principais partes (funes) de


um programa desenvolvido para o
Arduino so:
setup(): onde devem ser definidas algumas
configuraes iniciais do programa.
Executa uma nica vez.
loop(): funo principal do programa. Fica
executando indefinidamente.

Todo programa para o Arduino deve


ter estas duas funes.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

72

Funes setup() e loop()

Formato das funes setup() e loop()

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

73

Funes setup() e loop()

Primeiro programa: Blink LED

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

74

Comentrios

Muitas vezes importante comentar alguma


parte do cdigo do programa.
Existem duas maneiras de adicionar comentrios
a um programa em Arduino.
A primeira usando //, como no exemplo abaixo:
// Este um comentrio de linha

A segunda usando /* */, como no exemplo abaixo:


/* Este um comentrio de bloco. Permite acrescentar
comentrios com mais de uma linha */

Nota:
Quando o programa compilado os comentrios so
automaticamente suprimidos do arquivo executvel,
aquele que ser gravado na placa do Arduino.

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

75

Comentrios

Primeiro programa comentado

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

76

Portas digitais
O Arduino possui tanto portas digitais
quanto portas analgicas.
As portas servem para comunicao
entre
o
Arduino
e
dispositivos
externos, por exemplo: ler um boto,
acender um led ou uma lmpada.
Conforme j mencionado, o Arduino
UNO, possui 14 portas digitais e 6
portas
analgicas
(que
tambm
podem ser utilizadas como portas
digitais).

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

77

Portas digitais
As portas digitais trabalham com
valores bem definidos. No caso do
Arduino esses valores so 0V e 5V.
0V indica a ausncia de um sinal e 5V
indica a presena de um sinal.
Para escrever em uma porta digital
basta
utilizar
a
funo
digitalWrite(pino, estado).
Para ler um valor em uma porta digital
basta
utilizar
a
funo
digitalRead(pino).

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

78

Portas digitais

As portas digitais so usadas para entrada e


sada de dados.
Para definir se uma porta ser usada para
entrada ou para sada de dados, necessrio
explicitar essa situao no programa.
A funo pinMode(pino, estado) utilizada para
definir se a porta ser de entrada ou sada de
dados.
Exemplos:
Define que a porta 13 ser de sada
pinMode(13, OUTPUT)

Define que a porta 7 ser de entrada


pinMode(7, INPUT)

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

79

Constantes
Um dado constante quando no
sofre nenhuma variao no decorrer
do tempo.
Do incio ao fim do programa o valor
permanece inalterado.
Exemplos:

10
Bata antes de entrar!
-0,58
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

80

Constantes

A criao de constantes no Arduino


pode ser feita de duas maneiras:
Usando a palavra reservada const
Exemplo:
const int x = 100;

Usando a palavra reservada define


Exemplo:
#define X 100

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

81

Constantes

No Arduino existem algumas constantes


previamente definidas e so consideradas
palavras reservadas.
As constantes definidas so:
true indica valor lgico verdadeiro
false indica valor lgico falso
HIGH indica que uma porta est ativada, ou seja,
est em 5V.
LOW indica que uma porta est desativada, ou seja,
est em 0V.
INPUT indica que uma porta ser de entrada de
dados.
OUTPUT indica que uma porta ser de sada de
dados.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

82

Variveis

Variveis so lugares (posies) na memria


principal que servem para armazenar dados.
As variveis so acessadas atravs de um
identificador nico.
O contedo de uma varivel pode variar ao longo
do tempo durante a execuo de um programa.
Uma varivel s pode armazenar um valor a
cada instante.
Um identificador para uma varivel formado
por um ou mais caracteres, obedecendo a
seguinte regra: o primeiro caractere deve,
obrigatoriamente, ser uma letra.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

83

Variveis

ATENO!!!

Um identificador de uma varivel


ou constante no pode ser
formado por caracteres especiais
ou palavras reservadas da
linguagem.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

84

Tipos de Dados

Tipos de dados definem:


A quantidade de memria que uma varivel ou
constante ir ocupar;
As operaes que podem ser executadas sobre
uma varivel ou constante de determinado tipo;
A faixa de valores que uma varivel ou
constante pode armazenar;
O modo como o valor armazenado ser
interpretado.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

85

Tipos de Dados

Tipos de Variveis no Arduino


Tipo

Definio

void

Indica tipo indefinido. Usado geralmente para informar que


uma funo no retorna nenhum valor.

boolean

Os valores possveis so true (1) e false (0). Ocupa um byte de


memria.

char

Ocupa um byte de memria. Pode ser uma letra ou um


nmero. A faixa de valores vlidos de -128 a 127.

unsigned char

O mesmo que o char, porm a faixa de valores vlidos de 0


a 255.

byte
int
unsigned int
word

Ocupa 8 bits de memria. A faixa de valores de 0 a 255.


Armazena nmeros inteiros e ocupa 16 bits de memria
( 2bytes). A faixa de valores de -32.768 a 32.767.
O mesmo que o int, porm a faixa de valores vlidos de 0 a
65.535.
O mesmo que um unsigned int.

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

86

Tipos de Dados

Tipos de Variveis no Arduino


Tipo

Definio

long

Armazena nmeros de at 32 bits (4 bytes). A faixa de valores


de -2.147.483.648 at 2.147.483.647.

unsigned long

O mesmo que o long, porm a faixa de valores de 0 at


4.294.967.295.

short

Armazena nmero de at 16 bits (2 bytes). A faixa de valores


de -32.768 at 32.767.

float

Armazena valores de ponto flutuante (com vrgula) e ocupa 32


bits (4 bytes) de memria. A faixa de valores de
-3.4028235E+38 at 3.4028235E+38

double

O mesmo que o float.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

87

Monitor Serial
O monitor serial utilizado para
comunicao entre o Arduino e o
computador (PC).
O monitor serial pode ser aberto no
menu tools opo serial monitor, ou
pressionando
as
teclas
CTRL+SHIFT+M.
As principais funes do monitor serial
so: begin(), read(), write(), print(),
println() e available().

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

88

Monitor Serial

Algumas funes bastante usadas:


begin(): inicializa a comunicao entre o
Arduino e um computador;
read(): recebe caracteres inseridos no
monitor serial;
print(): imprime caracteres no monitor serial;
println(): imprime caracteres no monitor
serial, mas causa uma quebra de linha no
final;
available(): retorna o nmero de bytes
disponveis no buffer de leitura do monitor
serial.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

89

Monitor Serial

Imprimindo uma mensagem no monitor


serial

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

90

Monitor Serial

Sada no monitor serial

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

91

Operadores

Em uma linguagem de programao


existem
vrios
operadores
que
permitem operaes do tipo:

Aritmtica
Relacional
Lgica
Composta

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

92

Operadores

Operadores aritmticos
Smbolo

Funo

Adio

Subtrao

Multiplicao

Diviso

Mdulo (resto da diviso inteira)

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

93

Operadores

Operadores relacionais
Smbolo

Funo

>

Maior

<

Menor

>=

Maior ou igual

<=

Menor ou igual

==

Igual

!=

Diferente

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

94

Operadores

Operadores lgicos
Smbolo

Funo

&&

E (and)

||

OU (or)

No (not)

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

95

Operadores

Operadores compostos
Smbolo

Funo

++

Incremento

--

Decremento

+=

Adio com atribuio

-=

Subtrao com atribuio

*=

Multiplicao com atribuio

/=

Diviso com atribuio

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

96

Operadores

Operador de Atribuio
A atribuio de valores a variveis e constantes
feita com o uso do operador de atribuio (=).
O operador de atribuio coloca o valor situado
sua direita dentro do objeto localizado sua
esquerda.
Exemplos:
int valor = 100;
const float pi = 3.14;

Ateno!!!
O operador de atribuio no vale para o comando
#define.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

97

Operadores

Usando o operador de atribuio

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

98

Comandos de Seleo

Em vrios momentos em um programa


precisamos verificar uma determinada
condio afim de selecionar uma ao ou
aes que sero executadas.
Um comando de seleo tambm
conhecido por desvio condicional, ou seja,
dada um condio, uma parte do programa
executada.
Os comandos de seleo podem ser do tipo:
Seleo simples
Seleo composta
Seleo de mltipla escolha

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

99

Comandos de Seleo

Seleo simples
Um comando de seleo simples avalia uma
condio, ou expresso, para executar uma ao
ou conjunto de aes.
No Arduino o comando de seleo simples :
if (expr) {
cmd

onde:
expr representa uma expresso a ser avaliada que
pode ser do tipo lgica, relacional ou aritmtica. O
resultado da avaliao de uma expresso sempre
um valor lgico.
cmd comando(s) a ser executado.

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

100

Comandos de Seleo

Seleo simples
Acendendo leds pelo monitor serial

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

101

Comandos de Seleo

Seleo simples
Verificando se h caracteres no buffer de leitura

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

102

Comandos de Seleo

Seleo composta
Um comando de seleo composta complementar ao
comando de seleo simples.
O objetivo executar um comando mesmo que a expresso
avaliada pelo comando if (expr) retorne um valor falso.
No Arduino o comando de seleo composta :
if (expr) {
cmd;
}
else {
cmd;
}

onde:
expr representa uma expresso a ser avaliada que pode
ser do tipo lgica, relacional ou aritmtica. O resultado da
avaliao de uma expresso sempre um valor lgico.
cmd comando(s) a ser executado.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

103

Comandos de Seleo

Seleo composta
Verificando se h caracteres no buffer de leitura

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

104

Comandos de Seleo

Seleo composta (Comandos if aninhados)


Acendendo e apagando leds pelo monitor serial

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

105

Comandos de Seleo

Seleo de mltipla escolha


Na seleo de mltipla escolha possvel comparar vrios valores.
No Arduino o comando de seleo de mltipla escolha :
switch (valor) {
case x: cmd1;
break;
case y: cmd2;
break;
default: cmd3;
}
onde:
valor um dado a ser avaliado. representado por uma
varivel de memria.
cmdx comando a ser executado.
case indica a opo a ser executada.
default comando padro que dever ser executado se
nenhuma outra escolha (case) tiver sido selecionada.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

106

Comandos de Seleo

Seleo de mltipla escolha


Acendendo e apagando leds pelo monitor serial

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

107

Entrada Digital de
Dados

Lendo um boto
Para ler um boto basta lig-lo em uma
porta digital.
Para que um circuito com boto funcione
adequadamente, ou seja, sem rudos,
necessrio o uso de resistores pull-down ou
pull-up.
Os resistores pull-down e pull-up garantem
que os nveis lgicos estaro prximos s
tenses esperadas.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

108

Entrada Digital de Dados

Lendo um boto com resistor pull-down


Ligao na protoboard
Resistor
pull-down
10k

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

109

Entrada Digital de Dados

Lendo um boto com resistor pull-down


Programa

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

110

Entrada Digital de Dados

Lendo um boto com resistor pull-up


Ligao na protoboard
Resistor
pull-up
10k

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

111

Entrada Digital de Dados

Lendo um boto com resistor pull-up


Programa

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

112

Entrada Digital de Dados

Nota
O Arduino possui resistores pull-up nas
portas digitais.
Para ativar os resistores pull-up de uma
porta digital basta defini-la como entrada e
coloc-la em nvel alto (HIGH) na funo
setup().
pinMode(pin, INPUT)
digitalWrite(pin, HIGH)

Para desativar os resistores pull-up de uma


porta digital basta coloc-la em nvel baixo.
digitalWrite(pin, LOW)

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

113

Entrada Digital de Dados

Ativando o resistor pull-up de uma porta


digital
Quando o boto for pressionado o led ir apagar

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

114

Entrada Digital de Dados

Ativando o resistor pull-up de uma porta


digital
Quando o boto for pressionado o led ir apagar

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

115

Entrada Digital de Dados

Nota
O Arduino possui uma constante chamada
INPUT_PULLUP que define que a porta ser
de entrada e o resistor pull-up da mesma
ser ativado.
Exemplo:
void setup()
{
pinMode(10, INPUT_PULLUP);
}
Define
Define a
a porta
porta 10
10 como
como entrada
entrada
de
dados
e
ativa
o
resistor
de dados e ativa o resistor pullpullup.
up.

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

116

Entrada Analgica de
Dados

O Arduino UNO possui 6 (seis) portas analgicas.


Por padro todas as portas analgicas so
definidas como entrada de dados, desta forma
no necessrio fazer esta definio na funo
setup().
O conversor analgico-digital do Arduino de 10
(dez) bits, logo a faixa de valores lidos varia de 0
a 1023.
As portas analgicas no Arduino UNO so
identificadas como A0, A1, A2, A3, A4 e A5.
Estas portas tambm podem ser identificadas
por 14 (A0), 15 (A1), 16 (A2), 17 (A3), 18 (A4) e
19 (A5).
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

117

Entrada Analgica de Dados


Na seo Portas Digitais vimos que
para ler dados em uma porta digital
precisvamos
usar
uma
funo
chamada digitalRead().
De forma semelhante, para fazer uma
leitura de dados em uma porta
analgica usaremos analogRead().

Exemplo:
analogRead(A0)
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

118

Entrada Analgica de Dados

Lendo dados de um potencimetro

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

119

Entrada Analgica de Dados

Lendo dados de um potencimetro

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

120

Entrada Analgica de
Dados

Lendo dados de
acionando um LED

um

potencimetro

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

121

Entrada Analgica de
Dados

Lendo dados de
acionando um LED

um

potencimetro

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

122

Entrada Analgica de
Dados

Lendo dados de um LDR e imprimindo no


monitor serial.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

123

Entrada Analgica de
Dados

Lendo dados de um LDR e imprimindo no


monitor serial.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

124

Entrada Analgica de
Dados

Mapeando valores
Algumas vezes precisamos alterar valores
que se encontram dentro de uma
determinada faixa, de modo a obter um
novo valor, proporcional ou inversamente
proporcional ao primeiro, e que se
enquadre em uma nova faixa de valores.
A biblioteca do Arduino possui uma funo
chamada map(), que realiza essa tarefa.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

125

Entrada Analgica de
Dados

Mapeando valores
Exemplo de uso da funo map():
novo_valor = map(valor, min_in, max_in, min_out, max_out);
Onde:

novo_valor recebe o valor j modificado pela funo map();


valor o dado a ser alterado;
min_in o menor valor da faixa de entrada;
max_in o maior valor da faixa de entrada;
min_out o menor valor da faixa de sada;
max_out o maior valor da faixa de sada.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

126

Entrada Analgica de
Dados

Mapeando valores

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

127

Comandos de Repetio

Muitas vezes necessrio repetir uma


determinada instruo ou conjunto de
instrues.
Os comandos de repetio mantm em um
lao uma instruo ou conjunto de
instrues enquanto uma condio estiver
sendo satisfeita.
Os comandos de repetio do Arduino so:
Baseados em um contador
Baseados em uma expresso com teste no incio
Baseados em uma expresso com teste no final
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

128

Comandos de Repetio

Repetio baseada em um contador


Este tipo de comando de repetio deve ser
utilizado quando se sabe a quantidade de vezes
que uma determinada instruo deve ser
executada.
No Arduino o comando de repetio baseado em
um contador :
for (inicializao; condio; incremento) {
cmd;
}
onde:
inicializao: onde se atribui um valor inicial a um
contador;
condio : uma expresso relacional ou lgica;
incremento : onde se atribui um novo valor ao contador.

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

129

Comandos de Repetio

Repetio baseada em um contador


Escrevendo uma mensagem x vezes no
monitor serial

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

130

Comandos de Repetio

Nota
possvel declarar o contador dentro do
cabealho do lao for.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

131

Comandos de Repetio

Repetio com teste no incio


Este tipo de comando de repetio avalia uma expresso, caso
seja verdadeira, a(s) instruo(es) dentro do lao
permanecem sendo executadas.
No Arduino o comando de repetio com teste no incio :
while (expr) {
cmd;
}

onde:
expr uma expresso que pode ser lgica, relacional ou
aritmtica. A permanncia de execuo do lao
garantida enquanto a expresso for verdadeira.
Nota:
Neste tipo de comando de repetio a avaliao da
expresso realizada no incio do lao, ou seja, pode ser que
o cmd no execute nenhuma vez.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

132

Comandos de Repetio

Repetio com teste no incio

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

133

Comandos de Repetio

Repetio com teste no incio

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

134

Comandos de Repetio

Repetio com teste no final


Este tipo de comando de repetio avalia uma
expresso, caso seja verdadeira, a(s) intruo(es)
dentro do lao permanecem executando.
No Arduino o comando de repetio com teste no final
:
do {
cmd;
} while (expr) ;

onde:
expr uma expresso que pode ser lgica, relacional ou
aritmtica. A permanncia de execuo do lao
garantida enquanto a expresso for verdadeira.

Nota:
Neste tipo de comando de repetio a avaliao da
expresso realizada no final do lao, ou seja, garantido
que pelo menos uma vez o cmd ser executado.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

135

Vetores e Matrizes

Uma varivel escalar pode armazenar


muitos valores ao longo da execuo do
programa, porm no ao mesmo tempo.
Existem variveis que podem armazenar
mais de um valor ao mesmo tempo.
Essas variveis so conhecidas como
variveis compostas homogneas.
No Arduino possvel trabalhar com dois
tipos
de
variveis
compostas
homogneas, vetores e matrizes.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

136

Vetores e Matrizes

Vetor
A declarao de um vetor feita da mesma
maneira que uma varivel escalar, entretanto
necessrio definir a quantidade de itens do vetor.
Exemplo:
int vetor[4];

Vetor
Dado armazenado

ndices

Vetor com 4 (quatro) elementos do tipo inteiro.

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

137

Vetores e Matrizes

Vetor
7

Para atribuir um valor a uma determinada


posio do vetor, basta usar o ndice, ou
seja, a posio onde o valor ser
armazenado no vetor.
Exemplo:
vetor[0] = 7;
Atribui o valor 7 a posio 0 do vetor.
UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

138

Vetores e Matrizes

Vetor
7

Para acessar um determinado valor em uma


posio do vetor, basta usar o ndice, ou seja, a
posio onde o valor est armazenado no vetor.
Exemplo:
digitalWrite(vetor[0], HIGH);
Ativa a porta cujo nmero est definido na
posio 0 do vetor.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

139

Vetores e Matrizes

Vetor
Acendendo e apagando leds cujas portas
esto definidas em um vetor

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

140

Vetores e Matrizes

Matriz
Uma matriz similar a um vetor, entretanto pode ser formada por duas ou
mais dimenses.
Uma matriz bidimensional possui um determinado nmero de linhas e de
colunas.
Exemplo:
int matriz[4][6];

ndices
Valor
Valor armazenado
armazenado
na
posio
na posio [3,0]
[3,0]

as 1
h
n
i
l
2
co
l un
as
3

10 11 12

13 14 15 16 17 18
19 20 21 22 23 24
0

Matriz com 4 (quatro) linhas e 6 (seis) colunas de elementos do tipo inteiro.


Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

141

Vetores e Matrizes

Matriz
Para atribuir um valor a uma determinada
posio da matriz, basta usar o ndice da
linha e o ndice da coluna, ou seja, a
posio onde o valor ser armazenado na
matriz.
Exemplo:
matriz[1][2] = 9;
Atribui o valor 9 a posio 1 (linha), 2 (coluna)
da matriz.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

142

Vetores e Matrizes

Matriz
Para acessar um determinado valor em
uma posio da matriz, basta usar o ndice
da linha e o da coluna, ou seja, a posio
onde o valor est armazenado na matriz.
Exemplo:
digitalWrite(matriz[0][0], HIGH);
Ativa a porta cujo nmero est definido na
posio 0 (linha), 0 (coluna) da matriz.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

143

Vetores e Matrizes

Matriz
Acendendo e apagando leds aleatoriamente em
uma matriz

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

144

Pulse Width Modulation


(PWM)

A Modulao por Largura de Pulso


(Pulse Width Modulation PWM) uma
tcnica que nos permite gerenciar a
quantidade de energia enviada para
uma sada digital.
Essa modulao feita definindo-se
um ciclo de trabalho que determina
com que frequncia o sinal muda do
nvel lgico HIGH para o nvel lgico
LOW e vice-versa.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

145

Pulse Width Modulation


(PWM)

Extrado de Teach Yourself PIC Microcontrollers for Absolute Beginners M. Amer Iqbal Qureshi,
2006

UFSC - Oficina de Robtica - @2013

Laboratrio de Automao
e Robtica Mvel

146

Pulse Width Modulation


(PWM)
O Arduino UNO possui 6 (seis) portas
PWM - 3, 5, 6, 9, 10 e 11.
O sinal PWM pode variar de 0 a 255 e
para ativ-lo basta usar a seguinte
instruo em uma das portas PWM:

analogWrite(pin, valor);

Note que as portas PWM so todas


digitais, porm o sinal modulado
como se fosse um sinal analgico.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

147

Pulse Width Modulation


(PWM)

Exemplo: Usando o PWM para controlar


intensidade de luz emitida por um LED.

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

148

Modularizao

O objetivo da modularizao separar o


programa em mdulos funcionais dividir para
conquistar.
Um mdulo pode ser chamado (acionado) em
qualquer ponto do programa.
Os mdulos funcionais de um programa tambm
so chamados de funes.
Uma funo implementa uma ou mais instrues
responsveis por uma parte do programa.
As funes deixam um programa mais
organizado e legvel, uma vez que so
responsveis por aes bem especficas.
Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

149

Modularizao

Uma funo tem quatro partes fundamentais:

um tipo de dado associado a ela (pode ser void);


um nome;
uma lista de parmetros (se houver);
conjunto de instrues.
Parmetros

Nome
Nome

Tipo
Tipo de
de retorno
retorno

int soma(int a, int b)


{
int resultado= a + b;
return resultado;
}

Conjunto
Conjunto de
de
instrues
instrues

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

150

Modularizao

Exemplo: Blink Leds Modularizado

Laboratrio de Automao
e Robtica Mvel

UFSC - Oficina de Robtica - @2013

151

Vous aimerez peut-être aussi