ARDUINO BÁSICO Lição I -...
Transcript of ARDUINO BÁSICO Lição I -...
28/01/14 Frederico Möller 1
ARDUINO BÁSICOLição I
Frederico José Dias Möller
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 o modelo de Arduíno que iremos usar.
● Em “serial port” a porta onde 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 o 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 objetivo 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;
objetivo; 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 outro 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 operaçã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” o 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 onde 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 olho 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 o 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 o 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 o 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-introduction-to-microcontrollers/#ch1.1
● Efeito phi:– http://global.britannica.com/EBchecked/topic/455763/phi-phenomenon
28/01/14 Frederico Möller 59
Dúvidas???
28/01/14 Frederico Möller 60
Obrigado e até a próxima lição!