ARDUINO BSICO Lio I Frederico Jos Dias Mller 28/01/14 Frederico - - PowerPoint PPT Presentation

arduino b sico li o i
SMART_READER_LITE
LIVE PREVIEW

ARDUINO BSICO Lio I Frederico Jos Dias Mller 28/01/14 Frederico - - PowerPoint PPT Presentation

ARDUINO BSICO Lio I Frederico Jos Dias Mller 28/01/14 Frederico Mller 1 SUMRIO O Mnimo Introduo Plataforma de que? Para comear: blink Plataforma de Hardware prototipagem Software Vantagens


slide-1
SLIDE 1

28/01/14 Frederico Möller 1

ARDUINO BÁSICO Lição I

Frederico José Dias Möller

slide-2
SLIDE 2

28/01/14 Frederico Möller 2

SUMÁRIO

  • Introdução

– Plataforma de que? – Plataforma de

prototipagem

  • Vantagens e

desvantagens

  • Arduino.cc
  • Arduino IDE

– Configurando o bicho

  • O Mínimo
  • Para começar: blink

– Hardware – Software

  • Definição
  • Setup
  • Loop

– A função digitalWrite() – A função delay()

slide-3
SLIDE 3

28/01/14 Frederico Möller 3

SUMÁRIO

  • Um pouco de

programação

– Variáveis – Laços – Condicionais

  • Exercício 1
  • Lendo...
  • Exemplo: Alterar led

– Hardware – Software

  • Exercício 2
  • Revisão
  • Leitura

complementar

slide-4
SLIDE 4

28/01/14 Frederico Möller 4

INTRODUÇÃO

  • O Arduino é uma plataforma de prototipagem

eletrônica italiana.

  • É conhecida por seu fácil uso, podendo ser

usada até por “leigos”.

  • Tem preço relativamente accessível, bom

suporte online e uma boa configuração de hardware.

slide-5
SLIDE 5

28/01/14 Frederico Möller 5

PLATAFORMA DE QUE???

  • O Atmel é um

microcontrolador.

  • Ele pode ser ligado a

sensores, atuadores, módulos de RF...

  • Ele também pode ser

programado para agir dentro de uma rotina, reagir a sinais de sensores...

slide-6
SLIDE 6

28/01/14 Frederico Möller 6

PLATAFORMA DE QUE?

  • No entanto, é preciso

montar um circuito de alimentação para manter o mesmo em operação.

  • Para programá-lo, é

necessário usar um módulo programador.

  • É necessário criar

extensões de seus pinos, para poder ligar sua saídas à periféricos.

slide-7
SLIDE 7

28/01/14 Frederico Möller 7

PLATAFORMA DE PROTOTIPAGEM

  • Quando reunimos

todos esses elementos em uma só placa, temos a plataforma de prototipagem eletrônica.

  • O Arduino, não é um

microcontrolador, o Arduino é uma PPE.

slide-8
SLIDE 8

28/01/14 Frederico Möller 8

VANTAGENS E DESVANTAGENS

  • Acessível
  • Fácil programação
  • Grande variedade de

módulos disponíveis no mercado

  • Muitos tutoriais na

internet

  • Limitação de funções

em nome da facilidade de programação

  • Não aproveita

totalmente a capacidade de seu hardware

slide-9
SLIDE 9

28/01/14 Frederico Möller 9

Arduino.cc

  • A página oficial do arduino é http://arduino.cc/
  • Podemos encontrar lá produtos, tutoriais, um

fórum de discussões...

  • Lá também podemos encontrar a IDE do

arduino e seus drivers.

slide-10
SLIDE 10

28/01/14 Frederico Möller 10

Arduino IDE

  • É o ambiente de

programação do arduino

  • Vem com exemplos

embutidos

  • É leve e gratuita
slide-11
SLIDE 11

28/01/14 Frederico Möller 11

Configurando o bicho

  • Uma vez instalada a

IDE e os drivers FTDI é necessário configurar a mesma para o Arduíno em uso.

  • Fazemos isso no

menu “Tools”.

  • Em “board” selecionamos
  • modelo de Arduíno que

iremos usar.

  • Em “serial port” a porta
  • nde o Arduíno está

conectado.

  • Em “programmer” o tipo

de programador do Arduíno. (Em geral é Arduíno ISP)

slide-12
SLIDE 12

28/01/14 Frederico Möller 12

O Mínimo

  • O Arduino tem duas

grandes funções básicas:

– A função setup(){} – E a função loop(){}

SETUP LOOP

slide-13
SLIDE 13

28/01/14 Frederico Möller 13

O Mínimo

  • A função setup(){}

define as configurações de hardware com as quais

  • arduino irá trabalhar
  • Ex.: Quais pinos serão

de saída, quais serão de entrada, b.rate...

  • A função loop(){}

seria a função “main” do arduino... mas na verdade ela nem sempre é necessária

  • Tudo o que for

escrito na função loop será repetido indefinidamente

slide-14
SLIDE 14

28/01/14 Frederico Möller 14

PARA COMEÇAR... blink

  • Vamos começar com

um programa simples, um “blink”

  • Blink é um programa

de fazer um led piscar

slide-15
SLIDE 15

28/01/14 Frederico Möller 15

Hardware

  • Vamos usar:

– 1 led 5mm – 1 resistor de 220 Ω – 1 placa de matrizes – E é claro, um Arduíno

  • O Arduíno fornece uma tensão de 5v, como

V=Ri, devemos ligar o led em série com o resistor de 220 ohms

slide-16
SLIDE 16

28/01/14 Frederico Möller 16

Hardware

slide-17
SLIDE 17

28/01/14 Frederico Möller 17

Software definição

  • Nosso objetivo é fazer com que um led fique

piscando, ou seja, alterne seu estado a cada t segundos

  • Ou seja, o Arduíno deverá fornecer corrente

para o led por t segundos, depois deverá cortar essa corrente por mais t segundos e repetir isso indefinidamente.

slide-18
SLIDE 18

28/01/14 Frederico Möller 18

Software: Setup

  • Se é o led que vai

receber um sinal do Arduíno, então ele deverá estar ligado à um pino de saída.

  • Assim, informamos

ao Arduíno que o pino 13 será um pino de saída

slide-19
SLIDE 19

28/01/14 Frederico Möller 19

Software loop

  • Uma vez que o programa rodará

indefinidamente, ou seja, após rodar a última instrução ele voltará para a primeira, podemos (devemos) escrevê-lo dentro da função loop.

slide-20
SLIDE 20

28/01/14 Frederico Möller 20

digitalWrite(pino,valor)

  • A função digitalWrite

faz com que um dos pinos digitais emita um sinal, alto ou baixo.

  • Ela recebe a

numeração do pino e um HIGH para sinal alto e um LOW para baixo

slide-21
SLIDE 21

28/01/14 Frederico Möller 21

delay(num)

  • A função delay faz

com que o microcontrolador espere por um número de milésimos de segundos antes de executar a próxima operação

slide-22
SLIDE 22

28/01/14 Frederico Möller 22

Software blink

  • Tentem agora

escrever o programa blink

  • Se parece com o

programa ao lado?

  • Tentem carregar ele

no Arduíno através do botão:

?

slide-23
SLIDE 23

28/01/14 Frederico Möller 23

Um pouco de programação

  • Antes de prosseguirmos vamos falar um pouco

mais da linguagem usada no Arduíno

  • O Arduíno usa uma linguagem simples,

bastante intuitiva. É possível, com realizar com um único comando uma tarefa que levaria umas boas 10 linhas em outras plataformas.

  • Outra característica é que essa linguagem é

um dialeto do C ansi, ou seja, a sintaxe das duas é muito parecida.

slide-24
SLIDE 24

28/01/14 Frederico Möller 24

Variáveis

  • Assim como no C, as instruções são

executadas na ordem em que foram escritas.

  • Em diversas ocasiões é possível que o Arduíno

tenha que trabalhar com números e palavras armazenados em sua memória, estes são chamados de variáveis

  • Antes de uma variável ser usada, ela precisa

ser declarada, ou seja, seu nome e tipo deve aparecer no escopo do programa.

slide-25
SLIDE 25

28/01/14 Frederico Möller 25

Variáveis

  • Tipos:
  • int

– Números inteiro

  • float

– Números reais

  • char

– “letras”

  • Exemplos
  • int

– 16, 15, 2, 0

  • float

– 5.2 , 0.001, 3.5679

  • char

– 47, 'a', “ ”

slide-26
SLIDE 26

28/01/14 Frederico Möller 26

Laços

  • Laços de repetição são usados quando um

determinado grupo de instruções deve ser executado diversas vezes, até que um

  • bjetivo seja alcançado.
  • A função “loop” de certa forma é um laço de

repetição, mas ela só pode ser chamada uma vez.

  • Temos os laços for, while e do-while
slide-27
SLIDE 27

28/01/14 Frederico Möller 27

Laço

  • For:

– for(condição inicial;

  • bjetivo; ação após

cada laço)

– Usado em geral para

repetições contadas

  • While

– while(objetivo)

– O laço só será

executado e continuará sendo até que o objetivo seja alcançado

  • Do-while

– do{}while(objetivo) – Igual ao o while, mas as

instruções serão executadas pelo menos uma vez

slide-28
SLIDE 28

28/01/14 Frederico Möller 28

Condicionais

  • É uma tomada de decisão, com base em um

teste lógico.

  • Tem o formato if(teste lógico){} else{}
  • O bloco else é opcional.
  • Se o teste lógico for verdadeiro, ele executa

as instruções dentro do 1º bloco.

  • Se não, executa as dentro do bloco else{}
slide-29
SLIDE 29

28/01/14 Frederico Möller 29

Um pouco de programação

  • À esquerda temos

um exemplo de um programa que faz um de dois leds piscarem cerca de 998x

  • Um led piscará se o

número for primo e o

  • utro se não for.
slide-30
SLIDE 30

28/01/14 Frederico Möller 30

Um pouco de programação

  • Em 1 temos

declarações de variáveis.

  • As variáveis i e j são

do tipo inteiro.

  • A variável a é do tipo

booleana.

slide-31
SLIDE 31

28/01/14 Frederico Möller 31

Um pouco de programação

  • O tipo booleano só

pode assumir valores lógicos, ou seja, verdadeiro ou falso.

  • Voltando nas variáveis

inteiras, notem que se quisermos, podemos atribuir um valor ao declararmos, como fizemos com i.

slide-32
SLIDE 32

28/01/14 Frederico Möller 32

Um pouco de programação

  • Em dois temos o

início de um ciclo, será executado enquanto i for menor que 1000.

  • Se tivéssemos

atribuído 1000 ou mais para i, esse ciclo NUNCA seria executado!

slide-33
SLIDE 33

28/01/14 Frederico Möller 33

Um pouco de programação

  • Se fosse um ciclo do-

while, as instruções em seu interior seriam executadas pelo menos uma vez, independente do valor de i

  • Em 3 atribuímos um

valor para a

slide-34
SLIDE 34

28/01/14 Frederico Möller 34

Um pouco de programação

  • Em 4 abrimos um laço

for.

  • Sua condição inicial é a

variável j tendo o valor de i.

  • Ele será executado

enquanto j for maior que um.

  • Ao fim de cada

execução, j será diminuído em uma unidade.

slide-35
SLIDE 35

28/01/14 Frederico Möller 35

Um pouco de programação

  • Em 5, dentro do ciclo,

executamos uma

  • peração com ª
  • No caso uma operação

lógica.

  • 'a' assumirá o seu valor

antigo, ou o valor lógico da expressão:

– “O resto da divisão de i

por j é igual a zero”

slide-36
SLIDE 36

28/01/14 Frederico Möller 36

Um pouco de programação

  • Em 6 temos um
  • condicional. Se a for

verdadeiro, i led ligado ao pino 12 piscará.

  • Caso o contrário o

led ligado ao pino 13 piscará.

slide-37
SLIDE 37

28/01/14 Frederico Möller 37

Um pouco de programação

  • Em 6 temos um
  • condicional. Se a for

verdadeiro, i led ligado ao pino 12 piscará.

  • Caso o contrário o

led ligado ao pino 13 piscará.

slide-38
SLIDE 38

28/01/14 Frederico Möller 38

Exercício 1

  • Altere o programa

blink, de modo que o tempo que o led ficará aceso seja igual 1000xn ms sendo n o número de piscadas que ele já deu mais 1.

  • Exemplo:

– 1ª piscada, delays de

1000ms.

– 2ª piscada, delays de

2000ms

– 3ª piscada, delays de

3000ms

slide-39
SLIDE 39

28/01/14 Frederico Möller 39

Exercício 1

  • Notem que você

pode declarar variáveis fora da função loop.

  • Notem que cada vez

que a função a for é chamada, j assume o valor de i

slide-40
SLIDE 40

28/01/14 Frederico Möller 40

Lendo...

  • Um microcontrolador ainda poderia fazer

muita coisa se só tivesse pinos de saída.

  • No entanto é muito interessante que ele tenha

pinos de entrada, ou seja, pinos que possibilitem com que eles leiam informações do mundo exterior.

  • Sinais digitais podem ser lidos com a função

“digitalRead(pino)”

slide-41
SLIDE 41

28/01/14 Frederico Möller 41

Exemplo: Alterar led

  • A função digitalRead(porta) retorna o valor digital da porta a qual está

associada.

  • Se tivermos um sinal alto, ela retornará 1, se não, retornará um 0
  • Vamos fazer um exemplo, para entender melhor seu funcionamento
  • Nosso programa será uma derivação do blink. No entanto haverá um led

vermelho também e um botão de pressão.

  • O programa começará com um dos leds piscando e o outro não. Quando o

botão for pressionado, os leds deverão alternar de função.

  • Hardware:

– 2 leds de 5mms (cores diferentes) – 2 resistores de 220 ohms – 1 resistor de 150 ohms – 1 pushbuttom

slide-42
SLIDE 42

28/01/14 Frederico Möller 42

Hardware: Alterar led

slide-43
SLIDE 43

28/01/14 Frederico Möller 43

Hardware: Alterar led

slide-44
SLIDE 44

28/01/14 Frederico Möller 44

Hardware: pushbuttom

  • A “tecla de pressão”,

com 4 pinos, tem funcionamento simples: Ao ligarmos um sinal em uma de suas “perninhas”

  • sinal é mandado para a

em frente. Quando pressionamos o botão o sinal deixa de ser mandado para esta e é mandado para a lateral

slide-45
SLIDE 45

28/01/14 Frederico Möller 45

Hardware pushbuttom

  • Note que ligamos um dos pinos de “saída” do

botão à uma resistência e ao GND, isso serve para “forçar” que a tensão no outro pino abaixe quando o botão não estiver acionado, dando assim um valor “0” de input lógico

  • Isso significa que nosso botão envia um

“ALTO” quando acionado. Trocando os pinos de saída, conseguiríamos um botão que envia um “BAIXO” quando acionado.

slide-46
SLIDE 46

28/01/14 Frederico Möller 46

Hardware: pushbuttom

  • Outra coisa que temos

que nos atentar com botões em geral é o efeito “bouncing”

  • Quando o botão é

acionado é normal haver uma oscilação de tensão antes que ela se estabilize

Alguma saída deve ser implementada para evitar que o pino leia algum sinal nessa “zona”

slide-47
SLIDE 47

28/01/14 Frederico Möller 47

Exemplo II: Alternar led

  • Com base no que já

foi dito, conseguem implementar o programa?

  • Deu certo? Se

parece com o programa ao lado?

?

slide-48
SLIDE 48

28/01/14 Frederico Möller 48

Exemplo II: Alternar led

  • Variáveis inicializadas

logo no início.(1)

  • A variável botao, que

vai receber o valor do pushbuttom está com tipo int, mas poderia ser boolean, ou até mesmo char(1)

1

slide-49
SLIDE 49

28/01/14 Frederico Möller 49

Exemplo II: Alternar led

  • O pino 11 foi

configurado como input, pois receberá dados do mundo externo.(2)

  • Botao recebe o valor

do pino 11 pela função digitalRead(pin)

2 3

slide-50
SLIDE 50

28/01/14 Frederico Möller 50

Exemplo II: Alternar led

  • Mandar “reverificar” o a

variável botao 5ms após receber um “ALTO” é uma estratégia (ainda que burra) de evitar o

  • bouncing. (4)
  • Note que não informamos

literalmente um número em digitalWrite, ao invés disso apontamos uma variável...(5)

4 5 4

slide-51
SLIDE 51

28/01/14 Frederico Möller 51

Exercício II Intensidade básica

  • Agora é a vez de vocês: façam um programa
  • nde a intensidade do LED varie de acordo

com a quantidade de vezes que o usuário pressiona o botão.

  • Façam com que haja no mínimo 5 graus de

intensidade.

  • Lembrem-se, se um led pisca muito rápido, ao
  • lho humano vai parecer que ele está sempre

aceso.

slide-52
SLIDE 52

28/01/14 Frederico Möller 52

Exercício II intensidade básica

  • Aqui está uma resposta

possível para o exercício. Nela o LED pisca numa frequência de 5ms.

  • Há uma diferença entre
  • tempo que o led

permanece aceso e apagado durante a

  • piscada. Essa diferença

dita a intensidade aparente dele.

slide-53
SLIDE 53

28/01/14 Frederico Möller 53

Exercício II Flags

  • Se observármos bem, o programa todo leva

pouco mais que 10ms para executar cada ciclo.

  • Isso ainda é muito rápido para um ser humano.
  • Se não tomarmos cuidado, o programa vai ter

executado vários loops antes do usuário tirar o dedo de cima do botão e alterado a variável valor várias e várias vezes.

slide-54
SLIDE 54

28/01/14 Frederico Möller 54

Exercício II Flags

  • Para contornar esse problema, podemos usar
  • conceito de flags.
  • Flags são mecanismos lógicos que assinalam

se algo está habilitado ou não.

  • No nosso caso a flag está relacionada com o

botão.

slide-55
SLIDE 55

28/01/14 Frederico Möller 55

Exercício II Flags

  • Em 1 a flag é declarada, o

nosso programa começa com o botão ativo (flag=1)

  • Quando o teste do botão

pressionado é feito, é verificado se o botão está habilitado (2)

  • Uma vez que as

instruções do botão pressionado são executadas, o botão é desabilitado(3) 1 2 1 3

slide-56
SLIDE 56

28/01/14 Frederico Möller 56

Exercício II Flags

  • Se por um acaso, após isso
  • programa ter executado

um loop antes do usuário ter conseguido tirar o dedo do botão, a flag=0 garantirá que o programa não interpretará que o botão foi pressionado novamente.

  • Somente em 4, quando o

usuário tirar o dedo do botão é que a flag voltará para 1 e o botão será reabilitado (5).

4 5

slide-57
SLIDE 57

28/01/14 Frederico Möller 57

Revisão

  • Vimos nessa lição:

– O que é o Arduino – A forma de um programa do Arduino – Leitura digital – Escrita digital – “Anti tremulação” – Flags

slide-58
SLIDE 58

28/01/14 Frederico Möller 58

Leitura complementar

  • O que é um microcontrolador:

– http://www.mikroe.com/chapters/view/64/chapter-1-introduct

  • Efeito phi:

– http://global.britannica.com/EBchecked/topic/455763/phi

slide-59
SLIDE 59

28/01/14 Frederico Möller 59

Dúvidas???

slide-60
SLIDE 60

28/01/14 Frederico Möller 60

Obrigado e até a próxima lição!