Buscar

Apresent 2 Arduino Básico

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 50 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Arduino Básico
Prof. Dr. Robinson F. Camargo
Acadêmico Douglas A. Pedroso
1/5
2
Arduino é uma plataforma de prototipagem
eletrônica de hardware livre. Possui uma linguagem padrão
de programação, a qual tem origem em Wiring, sendo
essencialmente C/C++. Seu objetivo é proporcionar um
ambiente de fácil acesso, baixo custo e que possibilite os
mais diversos trabalhos através de suas vastas possibilidades
de funções e bibliotecas.
Possui uma interface serial e USB que possibilita a
interação com demais dispositivos, bem como a
programação de suas entradas e saídas digitais e analógicas
para que executem as funções desejadas.
Introdução
1/5
3
Bem como vários outros microcontroladores, o
Arduino possui seu próprio Ambiente Integrado de
Desenvolvimento (IDE), onde poderemos realizar a
programação da plataforma, utilizar suas bibliotecas,
compilar nosso código e gravá-lo no Arduino. Para fazermos
uso desse software, é necessário fazer seu download (de
forma gratuita) no site “arduino.cc” ou, mais precisamente,
no link a seguir: http://arduino.cc/en/Main/Software
Obs.: É essencial que o arquivo baixado no site esteja de
acordo com as especificações de seu computador/notebook.
Essas informações encontram-se na página disponibilizada
acima.
Integrated Development Environment (IDE)
1/5
4
Ao realizar o download, abra a pasta que contém os
arquivos baixados e execute o instalador do programa.
Durante a instalação do programa dificilmente ocorrerão
problemas, porém, se estes existirem, verifique se a versão
baixada da IDE é compatível com seu sistema operacional ou
se não está faltando nenhum arquivo necessário para a
instalação.
Embora sua instalação seja simples, existe um
problema ligeiramente comum aos primeiros usos da IDE.
Em algumas casos, logo que instalado o software, o
computador/notebook tem uma certa dificuldade em
reconhecer a placa conectada. Este erro ocorre pela
desatualização do driver e é de simples solução.
Instalando a IDE
1/5
5
Normalmente a desatualização do driver se manifesta
da seguinte forma:
Nesse caso, mesmo estando com a placa do Arduino
conectada ao computador, a Serial Port mostrava-se
indisponível.
Instalando a IDE
1/5
6
Para solucionar este problema, precisamos executar o
driver que normalmente encontra-se na pasta onde o
programa foi instalado ou então na própria pasta do
download. Se caso persistir o problema ou então o driver
não for localizado, recomenda-se o download do mesmo a
partir deste link: http://arduino.cc/en/guide/windows#toc4
Obs.: A imagem acima é apenas uma exemplificação,
podendo variar de acordo com cada sistema operacional.
Instalando a IDE
1/5
7
A seguir, veremos passo a passo as configurações da 
IDE para que possamos compilar e gravar nosso código no 
Arduino: 
1º - Escolhendo a Placa: Primeiramente é necessário escolher 
qual placa do Arduino está sendo utilizada para gravar este 
código. Para isto, basta seguir a imagem abaixo: 
Compilando e Gravando o Código
1/5
8
Obs.: Em todos os exemplos que serão demonstrados, nós
utilizaremos códigos com portas compatíveis tanto para
Arduino Uno R3 quanto para Arduino Mega 2560, não sendo
necessária nenhuma alteração nos códigos antes destes
serem compilados e gravados. Porém, esta compatibilidade
nunca será consistente quando o assunto for a escolha da
porta, como mostrado anteriormente. Desta forma, toda vez
que inicializarmos a IDE, deveremos escolher a placa
adequada para gravarmos nosso algoritmo.
Outros casos de diferenciação entre Arduino Uno R3 e
Arduino Mega 2560 serão avisados previamente.
Compilando e Gravando o Código
1/5
9
2º - Selecionando a Porta: Em seguida, deveremos selecionar
em qual porta USB o Arduino está conectado. A imagem a
seguir demonstra como fazer isto:
Compilando e Gravando o Código
1/5
10
Assim como o simbólico “Hello World!”, que é o
primeiro programa realizado em “C” por quem está
aprendendo a usar a linguagem, a seguir faremos o nosso
equivalente para o Arduino:
Este primeiro teste tem como intuito a familiarização com os
comandos da IDE e teste da placa.
Hello World!
1/5
11
3º - Compilar e Gravar: Por fim, devemos compilar o código
para verificar se não existe nenhum erro no mesmo. Após
verificado e corrigido, finalmente gravaremos o código no
Arduino. Ambos os comandos serão mostrados na imagem a
seguir:
Compilando e Gravando o Código
1/5
12
Como dito anteriormente, trabalharemos com os
modelos Mega 2560 e Uno R3 de Arduino. Sendo assim,
vejamos algumas características de cada modelo:
Características Mega x Uno
1/5
13
Funções:
Para iniciarmos qualquer algoritmo destinado à
plataforma Arduino precisaremos fazer uso de duas funções
fundamentais: “void loop()” e “void setup()”
• void setup () {}: Essa função é executada apenas uma vez
durante o código, sendo feito logo ao inicializar o
microcontrolador. Dentro de seu escopo, iremos inicializar
pinos, bibliotecas e realizarmos demais atividades que não
necessitem funcionar em loop infinito.
• void loop () {}: Dentro do escopo dessa função é que será
alocado a principal parte do código a ser executado pelo
Arduino. Esta função tem como principal característica a sua
“void loop()” e “void setup ()”
1/5
14
execução em loop infinito, permitindo executar rotinas
repetitivas a uma velocidade estipulada pelo clock da
plataforma. A única maneira de encerrar o funcionamento
desta função é desligando o Arduino.
Obs.: Vale lembrar que ambas as funções são do tipo “void”
e não retornam nenhum valor.
“void loop()” e “void setup ()” 
1/5
15
Funções:
• pinMode(Pino, Modo): Nesta função iremos estabelecer os
pinos usados e de que maneira serão usados. Por exemplo,
se quisermos fazer uma leitura do pino “12”, precisaremos
chamar a função “pinMode” no void setup() e escrevermos
o pino que desejamos fazer a leitura no primeiro parâmetro
e qual o seu modo (entrada ou saída) no segundo
parâmetro da função. Deste modo, nosso exemplo ficaria
da seguinte forma: “pinMode(12, INPUT);”.
Obs.: Tanto no Arduino Mega quanto no Uno, a vasta maioria
dos pinos têm seus respectivos nomes correspondentes
iguais aos números encontrados na placa.
Digital I/O
1/5
16
• digitalWrite(Pino, Valor): Nesta função iremos setar o valor
de um pino para HIGH (5V) ou LOW (0V). Os parâmetros
desta função são o pino e o estado (HIGH ou LOW)
desejado. Esta função não retorna nada.
• digitalRead(Pino): Esta função retorna o estado lido no
pino desejado. O único parâmetro da função é o pino e ela
retorna se este está em HIGH ou em LOW.
Digital I/O
1/5
17
Funções:
• delay(tempo): Esta função trava totalmente o código durante
o tempo desejado. Como parâmetro devemos passar o tempo
em milissegundos (1s = 1000ms). Nada é retornado dessa
função.
• delayMicroseconds(tempo em µs): Da mesma forma que a
função “delay()”, esta função também trava o código, porém o
parâmetro deve ser passado em microssegundos (1ms =
1000µs).
• millis(): Sem parâmetro nenhum a ser passado para esta
função, apenas recebemos dela o retorno do tempo que se
passou desde que o programa foi iniciado. Não existe maneira
Tempo
1/5
18
de zerar ou resetar esta função. O tempo retornado será em
milissegundos.
• micros(): Da mesma forma que a “millis()”, esta função não
recebe nenhum parâmetro. A única diferença entre a
“micros()” e a “millis()” é que a primeira retorna o tempo
em microssegundos, enquanto a segunda retorna em
milissegundos.
Dica.: Com funções como “millis()” e “micros()” sempre
trabalharemos em cima das diferenças de tempo entre
instantes. Por exemplo, se desejarmos saber quanto tempo
se passou entre um instante e outro, é necessário salvar o
tempo mostrado pelas funções em cadaum dos instantes e
realizar a subtração entre esses valores.
Tempo
1/5
19
Para realizarmos os exemplos e exercícios a seguir,
vamos considerar a seguinte montagem:
Exercícios
R2
R4
Slide 19
R2 de quanto deve ser o resistor e que tipo de led pode ser usado ?
Robinson; 06/10/2014
R4 trocar figuras para o arduino mega e deixar figuras mais visiveis
Robinson; 06/10/2014
1/5
20
Exercício 01:
Neste exemplo, o
led ficará aceso por
um segundo em
função do delay
dado. Logo após, o
mesmo irá apagar e
aguardar mais um
segundo para que o
código reinicie
juntamente com o
loop().
Exercícios
1/5
21
Exercício 02: Com base no exemplo anterior, faça com que o
led pisque (de maneira visível) cada vez mais lentamente com
o decorrer do tempo.
Exercícios
1/5
22
Exercício 03: Refaça o “exemplo 01” usando a função “millis()”
ao invés da função “delay()”. Faltou linha tempo=0;
Exercícios
1/5
23
Para os próximos exemplos e exercícios,
consideraremos a seguinte montagem:
Exercícios
R3
Slide 23
R3 trocar figuras para o arduino mega e deixar figuras mais visiveis
Robinson; 06/10/2014
1/5
24
Exercício 04: 
Para este exemplo,
vamos considerar
que o botão seja do
tipo “push button”.
Durante o código há
sempre uma variável
salvando o estado
do botão para poder
comparar e decidir,
a partir disto, se
acende ou apaga o
led.
Exercícios
1/5
25
Exercício 05: Implemente novamente o exemplo anterior,
porém desta vez considere o botão sendo do tipo “push-pull
button”.
Exercícios
1/5
26
Funções:
• analogRead(Pino): Esta função lê o valor do pino analógico
desejado. Ela converte automaticamente o valor de tensão
lido para um número de 10 bits, ou seja, um número entre
0 e 1023 na base decimal.
• analogWrite(Pino, Valor): Para escrever valores analógicos
de tensão nos seus pinos, o Arduino envia valores de PWM
variados de 0 a 255 (sendo 0 = 0V e 255 = 5V). Se
quisermos setar o valor de 2,5V no pino 5, por exemplo,
devemos enviar um valor de PWM de 127,5. Nesse caso a
função ficaria assim: “analogWrite(5, 127.5);”.
Analógico I/O
1/5
27
Obs.: O conceito de PWM (Pulse Width Modulation) é
baseado no valor médio de tensão dentro de um espaço de
tempo. Se em um determinado período eu tiver um
determinado espaço de tempo em nível lógico alto (seja qual
for essa tensão) e outro em nível lógico baixo (também
independente de qual seja a tensão), a média de tensão desse
período será o PWM do mesmo. Por exemplo, sabemos que a
frequência padrão do PWM do Arduino é de 490Hz.
Transformando isso para um período “p”, temos que p = 2ms,
aproximadamente. Seguindo pela lógica do valor médio de
tensão em um espaço de tempo, se dividirmos o nosso
período “p” em duas partes iguais de 1ms cada, sendo uma
delas em nível lógico alto, equivalente a 5V e outra de nível
Analógico I/O
1/5
28
lógico baixo equivalente a 0V, teremos que a média da
tensão nesse período será 2,5V. Em um segundo exemplo, se
pegarmos o mesmo período “p” e dividirmos novamente em
duas partes, sendo uma delas equivalente a 0,5ms em nível
lógico alto (5V) e outra de 1,5ms em nível lógico baixo (0V),
teremos um valor médio de tensão equivalente a 1,25V.
É bastante comum escrevermos o valor de PWM
entre 0 e 255, sendo uma espécie de “porcentagem” do valor
de tensão, onde 0 equivaleria a 0% da tensão total e 255
seria 100% da tensão total.
Para nossos estudos com o Arduino, o conceito de
PWM será útil apenas para entendermos como funciona a
Analógico I/O
1/5
29
função “analogWrite()”.
Porém, existem várias
bibliotecas mais aprofundadas
no assunto, onde pode-se
controlar diversos outros
parâmetros (como a
frequência, por exemplo)
importantes para algumas
aplicações.
Analógico I/O
1/5
30
Funções:
• map (Valor, Do Menor, Do Maior, Para o Menor, Para o
Maior): A função “map()” funciona basicamente como uma
operadora de regra de três. O primeiro parâmetro da função
é o valor a ser convertido (geralmente é uma variável
guardando o valor de alguma leitura). No segundo e terceiro
parâmetro temos os valores de mínimo e máximo de origem
do valor a ser convertido. Por exemplo, se estamos lendo um
valor de tensão, sabemos da função “analogRead()” que
esses valor estará entre 0 e 1023. Por tanto, o segundo
parâmetro, nesse caso, será 0 e o terceiro 1023.
Já no quarto e quinto parâmetro, devemos inserir o
valor mínimo e máximo para o qual o valor deve ser convertido.
Matemática
1/5
31
Seguindo o exemplo anterior, se quisermos converter o
valor de tensão lido que encontra-se entre 0 e 1023 para seu
valor original, que seria entre 0V e 5V, devemos inserir os
valores originais como quarto e quinto parâmetro,
respectivamente. Dessa forma, considerando que o valor a ser
convertido seja uma variável chamada “y”, a função se
estruturaria da seguinte forma: “map (y, 0, 1023, 0, 5);”.
Esta função tem como retorno o valor convertido.
Matemática
1/5
32
Para os exemplos e exercícios a seguir iremos
considerar a seguinte montagem:
Exercícios
1/5
33
Exercício 06:
Nesse exemplo é
feito uma leitura no
pino central do
potenciômetro, no
qual foi ligado 5V e
0V nos outros dois
pinos. O valor lido é
convertido para um
valor de 0 a 255, e
conforme a sua
variação, mudará o
brilho do led.
Exercícios
1/5
34
Exercício 07: Faça o led piscar e com o potenciômetro controle
a velocidade com que ele pisca.
Exercícios
1/5
35
A seguir,
basearemos nossa
montagem na
imagem ao lado:
Obs.: Para o
Arduino Uno será
necessário realizar
algumas alterações
na montagem.
Porém, os códigos a
seguir estão de
acordo.
Exercícios - a ligacao não é nos pinos 
analog e sim no dos pwm.
1/5
36
Exercício 08: Nesse exemplo os leds irão alternar entre qual
deles ficará aceso
em função do valor
convertido na leitura
do potenciômetro.
Exercícios
1/5
37
Exercício 09: Faça com que a fileira de leds acenda ou apague
sequencialmente de acordo com o lado de giro do
potenciômetro.
Exercícios
1/5
38
Funções:
• Serial.begin(velocidade): Essa é a primeira função da serial
que deve ser executada em um código. Esta função é
chamada no “void setup ()” e tem como parâmetro a
velocidade da transferência de dados entre a serial e o
Arduino, a qual é extremamente comum usar “9600” bits
por segundo. Não existe nenhum retorno associado a essa
função.
• Serial.available(): O objetivo desta função é retornar o
número de bytes que está sendo lido na porta serial. Não é
necessário nenhum parâmetro para executá-la.
Dica.: Para o Arduino Mega, podemos colocar somente essa
função sem nenhuma outra comparação em uma estrutura
Serial
1/5
39
de seleção, que o Arduino entenderá que a condição para
entrar na estrutura é somente se houver algum byte sendo
lido na serial. Por exemplo, se usarmos da seguinte maneira
“if(Serial.available()) {}” em uma estrutura de seleção, basta existir
um byte qualquer na serial que o código entrará na estrutura. Para
o Uno e os demais é necessário fazer uma comparação do tipo
“Serial.available() > 0” para saber se há algo sendo escrito na serial.
• Serial.print(“Frase” ou Variável): Nesta função podemos
imprimir na serial qualquer valor de variável, frase ou
palavra que desejarmos.
• Serial.println(“Frase” ou Variável): Da mesma maneira que
a função anterior, porém, com um espaço de enter entre
cada print.
Serial
1/5
40
• Serial.read(): Essa função não recebe nenhum parâmetro.
Seu objetivo é retornar o primeiro byte que foi escrito na
serial. Se não houver nada sendo escrito quando for
solicitada a leitura, a função retornará o valor “-1”.
Obs.: Para nossos estudos iremos utilizar a entrada serial
disponívelna própria IDE do Arduino, porém existem várias
outras formas de comunicação serial que utilizam as mesmas
funções, mas são conectadas de formas diferentes. Na placa
do Arduino existe uma parte dedicada somente à
comunicação.
Serial
1/5
41
Para realizarmos nossas tarefas ligadas à serial,
precisaremos saber alguns detalhes sobre a IDE. A imagem a
seguir mostra onde podemos abrir a serial da IDE:
Serial na IDE
1/5
42
A seguir, vemos em vermelho o comando de envio do
que está escrito no espaço em amarelo. Em verde está a
velocidade da serial, a qual deve ser igual à declarada no
código.
Serial na IDE
1/5
43
Para os próximos exemplos e exercícios,
consideremos novamente a seguinte montagem:
Exercícios
1/5
44
Exercício 10:
Nesse exemplo,
quando qualquer
botão é pressionado
na serial, o led
acende por um
segundo e depois
volta a se apagar. Ele
só retornará a
acender quando
outro botão for
pressionado na
serial.
Exercícios 10 – faltou uma linha ! 
1/5
45
Exercício 11: Faça com que o led seja aceso quando a tecla “L”
for pressionada e desligado quando a tecla “D” for
pressionada na serial.
Exercícios
1/5
46
Exemplo 12:
Neste exemplo, o
código permite
escrever uma frase
inteira na serial e ter
ela salva em um
vetor para
posteriormente ser
impressa na própria
serial.
Exercícios
1/5
47
Exercício 13: Com base na mesma montagem tomada como
base no início, faça que o brilho do led aumente quando a
letra “A” for pressionada e diminua quando a letra “D” for
pressionada. Mostre na serial o valor atual do PWM.
Exercícios
1/5
48
Exercício 14: Faça um cronômetro, o qual ao ser pressionada a
letra “S” comece a contar e quando for pressionada a letra “P”
mostre o tempo decorrido.
Exercícios

Outros materiais