28/01/14 Frederico Möller 1
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 - - 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
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()
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
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.
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...
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.
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.
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
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.
28/01/14 Frederico Möller 10
Arduino IDE
- É o ambiente de
programação do arduino
- Vem com exemplos
embutidos
- É leve e gratuita
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)
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
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
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
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
28/01/14 Frederico Möller 16
Hardware
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.
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
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.
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
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
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:
?
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.
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.
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', “ ”
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
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
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{}
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.
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.
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.
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!
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
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.
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”
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á.
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á.
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
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
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)”
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
28/01/14 Frederico Möller 42
Hardware: Alterar led
28/01/14 Frederico Möller 43
Hardware: Alterar led
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
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.
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”
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?
?
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
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
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
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.
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.
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.
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.
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
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
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
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
28/01/14 Frederico Möller 59
Dúvidas???
28/01/14 Frederico Möller 60