Arduino
Arduino
ao
Arduíno
Definições Arduino é uma plataforma de prototipagem eletrônica,
Open-Source, e Hardware livre. Criado para ser simples,
de baixo custo, fácil uso e aprendizado.
3
Definições Open-Source e Hardware livre
4
Tipos de Existem vários tipos de Arduino para as mais diversas
Arduino
aplicações.
5
6
Tipos de O Arduino Uno é uma placa de prototipagem eletrônica
Arduino
amplamente utilizada para aprender, desenvolver e testar
projetos de eletrônica e automação.
Uno
7
Arduino Algumas aplicações do Arduino Uno incluem:
Uno •
•
Acender e apagar LEDs
Controlar motores e relés
• Criar projetos de automação residencial
• Desenvolver robôs
• Fazer protótipos de sistemas embarcados
• Ler sensores de temperatura, luminosidade, distância, etc.
8
E/S Digitais
Interface Serial
Arduino ou Microcontrolador
USB
Uno
Hardware
E/S de potência
9 E/S Analógicas
Arduino E/S Digitais
Hardware
utilizados como entradas ou saídas digitais (pinos 0 a 13),
sendo que os pinos 3, 5, 6, 9, 10 e 11 também podem
utilizar Modulação por largura de pulso, ou PWM (do
inglês, Pulse Width Modulation), que é uma técnica para
simular saídas analógicas usando sinais digitais, permitindo
gerar um conjunto de valores inteiros entre 0 e 255.
10
Arduino E/S Analógicas
Hardware
analógicas, que recebem uma tensão entre 0 e 5V e o
produzem em uma escala de 0 a 1023.
E/S de potência
11
Arduino Microprocessador
Hardware
memória RAM de 2KB, memória Flash de 32KB e clock de
16MHz.
Fonte
12
Arduino
Funcionamento
13
Arduino O ambiente de desenvolvimento do Arduino, chamado
Software
de Arduino IDE, pode ser gratuitamente baixado do site
[Link].
14
Arduino O passo a passo para instalação do Arduino IDE é:
15
Arduino Conectando a placa do Arduino no PC:
Software
16
Conhecendo a IDE
1. Verificar : Compila e aprova seu código. Ele vai
pegar erros de sintaxe (como falta de ponto e
vírgula ou parênteses).
17
Conhecendo a IDE
6. Serial Monitor: Isto irá abrir uma janela que
exibe todas as informações transmitidas pela
serial que a placa está enviando.
18
Arduino
Software O ambiente de programação é bem
simples e intuitivo. Um programa, que
no Arduino é chamado de sketch,
apresenta duas funções básicas: setup()
e loop().
19
Arduino A função setup() deverá conter o código que irá executar
Software
apenas uma vez, quando o sketch iniciar. Normalmente
colocamos nesta função as definições iniciais do programa,
como atribuição de variáveis e seus pinos correspondentes.
20
Arduino A função loop() irá executar continuamente as instruções
Software
que estão lá até que outro sketch seja carregado na memória
“flash” do Arduino.
21
Comandos Os primeiros comandos do código são feitos na seção de
básicos
setup():
digitalWrite(numero_do_pino, valor);
delay(milisegundos);
básicos
//Comentários começam com duas barras por linha
24
Comandos • Estrutura das funções
25
Primeiro Na placa Arduino UNO tem um
código
LED conectado ao pino 13 que você
pode utilizar para fazer seu primeiro
programa e testar seu Arduino.
26
Primeiro Depois de digitado o código ao
código lado pressione o botão upload.
LED internocorretamente,
Se você tiver digitado tudo
você irá ver o LED
piscando na própria placa do
Arduino.
27
Periféricos:
Protoboard
28
Periféricos: Os resistores têm a função limitar a corrente elétrica, eles são
necessários do modo a evitar que determinados componentes
Resistores eletrônicos recebam uma tensão ou corrente maior do que eles
podem suportar evitando, desta forma, que os mesmos sejam
danificados.
São componentes não polarizados, ou seja, podem ser
instalados em qualquer sentido do circuito, sem preocupação entre
diferenciar polo positivo e polo negativo.
29
Periféricos:
Resistores
30
Periféricos: O diodo emissor de luz ou simplesmente LED é uma variação do
diodo e apresenta, como principal característica, a emissão de luz
LED quando uma corrente flui através do mesmo. É um componente
polarizado, desta forma, o Cátodo sempre deve estar conectado ao
polo negativo (ou terra) do circuito. Suportam entre 2,2 a 3,3V de
tensão de entrada no Ânodo, o polo negativo.
31
Segundo Agora o segundo código tem a mesma função, de fazer um LED
piscar, mas um LED externo, conectado ao Arduino pela protoboard, e
código também conectado a um resistor para limitar a tensão de entrada e
Pisca LED
proteger o LED.
32
Segundo Material necessário:
código • 1 Arduino.
Pisca LED
• 1 Resistor de 330 ohms (laranja, laranja, marrom).
• 1 Led (qualquer cor).
• 1 Protoboard.
• Jumper cable.
33
Segundo
código
Montagem
34
Desafio Fazer dois LEDs piscarem de forma intermitente, ou seja,
LEDs
dois LEDs piscam em momentos separados. Enquanto o
primeiro está acesso o outro está apagado e vice-versa.
Intermitente
35
Tipos de No Arduino, usamos variáveis para guardar valores que o
Variáveis
programa precisa manipular, como leituras de sensores e
estados de componentes. Cada variável tem um tipo, que
define o tipo de dado que ela pode armazenar e a
quantidade de memória que ocupa.
• Int (Inteiro)
• Float (Ponto Flutuante)
• Bool (Booleano)
• Char (Caractere)
36 • String (Cadeira de caracteres)
Tipos de Variáveis inteiras (int) armazena números inteiros
Variáveis
positivos ou negativos, como o número de carros em um
estacionamento, por exemplo. Esse tipo de variável utiliza 2
Int
bytes da memória RAM do Arduino.
37
Tipos de Variáveis do tipo ponto flutuante (float) armazenam
Variáveis
números com casas decimais, ou seja, números reais. É ideal
para medidas mais precisas, como medição de temperatura.
float
Esse tipo de variável utiliza 4 bytes da memória RAM do
Arduino.
38
Tipos de Variáveis do tipo Booleano (bool) armazena apenas
Variáveis
valores binários, ou seja apenas dois valores: true
(verdadeiro) ou false (falso). É muito usada para testar
bool
condições.
39
Tipos de Variáveis do tipo Caractere (char) armazena um
Variáveis
caractere, que pode ser uma letra, número ou símbolo
especial. Utiliza aspas simples para definir o caractere.
40
Tipos de Variáveis do tipo Cadeia de Caracteres (string) armazena
Variáveis
textos ou frases, como se fosse uma expansão da variável
char. É muito útil para mostrar mensagens no monitor serial
string
ou no Display LCD. Utiliza aspas dupla para definir o texto.
41
Tipos de Variáveis globais x Variáveis locais
42
Tipos de Exemplo:
43
Periféricos Um buzzer é um dispositivo eletrônico que emite som —
Buzzer
geralmente um bip ou um alarme — quando recebe uma
tensão elétrica. Ele é muito usado em sistemas de
sinalização, alertas e avisos sonoros.
Aplicações:
• Micro-ondas que apita quando termina o tempo;
• Alarme de carro ou sistemas de segurança;
• Alerta de erro em equipamentos eletrônicos.
44
Periféricos Existem 2 tipos de buzzer:
45
Exemplo 1 O objetivo deste projeto é acionar um buzzer, alterando
Buzzer
sua frequência de vibração (o que altera o tom do ruído
produzido pelo buzzer) e o tempo de duração do seu som.
46
Material necessário:
Exemplo 1 • 1 Arduino.
• 1 Buzzer.
Montagem • 1 Resistor de 330 ohms
• 1 Protoboard.
• Jumper cable.
Montagem:
• Conecte o GND do Arduino
ao pino negativo do buzzer.
• Coloque o resistor de 330Ω
ligado ao positivo do buzzer.
• Nesse resistor, conecte um
jumper até a porta digital 9
do Arduino.
47
Exemplo 1 O objetivo deste projeto é acionar um buzzer, alterando
sua frequência de vibração (o que altera o tom do ruído
Programação produzido pelo buzzer) e o tempo de duração do seu som.
if
Executa o bloco de código apenas se a condição é verdadeira. Se o
resultado do teste for falso, ignora o conjunto e segue para a
próxima etapa do algoritmo. Equivalente ao se...então. No Arduino
o então (then), não é utilizado.
Forma:
Exemplo:
49
Estruturas if...else
Condicionais
Permite uma escolha entre duas ações. Equivalente ao se...senão.
Forma: Exemplo:
if...else if...else
Permite fazer várias verificações em sequência na mesma estrutura.
Forma: Exemplo:
50
Estruturas switch
Uma alternativa ao if, é bom para comparar uma variável com
Condicionais muitos valores fixos. Nela não existe mais uma condição a ser
avaliada: o próprio valor de algum dado vai determinar
(condicionar) qual das alternativas de conjuntos de ações será
executada.
Componentes:
Forma: • switch: palavra-chave que inicia a
estrutura.
• case: compara a variável com um
valor específico.
• break: encerra o case atual e evita
que o código "vaze" para o próximo
case.
• default: (opcional) executa um código
se nenhum dos case for satisfeito.
51
Periféricos Um potenciômetro é um resistor variável no formato de
um botão giratório que fornece um valor analógico. Se
Potenciômetro girarmos o potenciômetro, alteramos a resistência em cada
lado do contato elétrico que vai conectado ao terminal
central do botão.
52
Periféricos
Potenciômetro
53
Exemplo 2 Utilizar um potenciômetro para controlar o nível de
intensidade da iluminação de um LED, quanto menor a
Nível LED resistência do potenciômetro, mais forte será a luz do LED,
quanto maior a resistência do potenciômetro, mais fraca
será a luz do LED.
Material necessário:
• 1 Arduino.
• 1 Potenciômetro.
• 1 Resistor de 330 ohms.
• 1 LED de qualquer cor.
• 1 Protoboard.
• Jumper cable.
54
Exemplo 2 Montagem:
55
Exemplo 2 Informações:
56
Desafio 2 Utilizar um potenciômetro para controlar a frequência
que o LED irá piscar, ou seja, fazer o delay do LED depender
Frequência do potenciômetro.
Pisca LED Quanto maior a resistência mais lento o LED irá piscar,
quando menor a resistência, mais rápido o LED irá piscar.
57
Desafio 3 Repetir o desafio 2, mas dessa vez para controlar dois
LEDs piscando de forma intermitente, ou seja, alternados.
Frequência Quando maior a resistência, mais lento será a variação entre
os LEDs, quanto menor a resistência, mais rápido será a
Pisca LED variação entre os LEDs.
Intermitente
58
Periféricos Um botão (também chamado de push button) é um
Botão
dispositivo de entrada usado pra detectar quando algo foi
pressionado. No Arduino, ele é geralmente utilizado para
ligar/desligar uma função, acionar um motor, mudar o
estado de um LED.
59
Periféricos Quando um pino de entrada (INPUT) digital no Arduino
Botão
não está conectado a nada ou está mal conectado, ele fica
em um estado chamado flutuante (floating). Nesse estado O
valor lido pode ser HIGH ou LOW aleatoriamente.
Para corrigir isso é um utilizado um resistor conectado ao
botão, que dependendo da conexão pode ser chamado de
resistor de pull-down e resistor de pull-up.
60
Periféricos Resistor de Pull-Up
Botão
O resistor conecta o botão ao 5V. Garante que o pino
fique em nível lógico HIGH quando não está pressionado.
Quando o botão é pressionado, ele liga o pino diretamente
ao GND, ou LOW.
61
Periféricos Resistor de Pull-Down
Botão
O resistor conecta o botão ao GND. Garante que o pino
fique em nível lógico LOW quando não está pressionado.
Quando o botão é pressionado, ele liga o pino diretamente
ao 5V, ou HIGH.
62
Exemplo 3 Neste programa, enquanto o botão estiver pressionado o
Ligar LED
LED ficará acesso, caso contrário, o LED fica apagado.
com botão
63
Exemplo 4 Neste programa, ao apertar o botão e depois soltar, um
Ligar LED
LED acende e permanece ligado por um determinado
período de tempo.
com botão
64
Operações As expressões lógicas (AND, OR e NOT) são aplicadas em
Lógicas
circuitos em Arduino para realizar conjunções, disjunções e
negações, tal qual na montagem de circuitos lógicos,
geralmente aplicados junto de estruturas de decisão como o
if.
65
Operações Exemplo AND:
Lógicas
Exemplo OR:
Exemplo NOT:
66
Desafio 4 Ligar um LED através de 2
Ligar LED
botões utilizando a lógica AND,
ou seja, o LED somente será
com botão
ligado quando os dois botões
forem pressionados juntos.
67
Desafio 5 Neste programa ao pressionar e soltar o botão o LED
Botão
acenderá, a pressionar e soltar o botão novamente o LED vai
apagar e assim sucessivamente.
68
Desafio 5
Botão
pulsador
69
Desafio 6 Faça um programa com 4 entradas (4 botões: B1, B2, B3 e
Ligar LEDs
B4) de forma que esses botões alterem o acionamento de 5
LEDs de forma aleatória seguindo a lógica a seguir:
Envio de dados
71
Comunicação utiliza duas conexões: o TX, ou transmissor e o RX ou
A comunicação serial mais comum é a RS 232, que
Serial receptor.
72
Comunicação duas conexões principais de comunicação serial.
Os dois primeiros pinos digitais do Arduino correspondem as
73
Comunicação
Serial
74
Monitor O Monitor Serial é uma ferramenta do Arduino (IDE) que
serve como uma janela de comunicação entre o Arduino e o
Serial computador, via porta USB.
O monitor serial permite:
•Enviar dados do computador para o
Arduino (por exemplo, escrever
comandos ou números).
75
Comandos do [Link](velocidade);
Inicializa a comunicação serial com velocidade sendo a taxa de
Monitor transmissão de dados (em bits por segundo), o padrão é o
Serial
valor de 9600. Essa função é usada no void setup().
[Link](valor);
Envia dados para a porta serial sem adicionar uma nova linha.
Essa função é usada no void loop().
[Link](valor);
Semelhante ao anterior, mas cria uma nova linha toda vez que
chega um novo dado. Essa função é usada no void loop().
76
Exemplo 5 Utilizar um botão, quando esse botão for pressionado, printar
uma mensagem na tela do monitor Serial se o botão for
Mostrar um pressionado.
valor na tela
77
Exemplo 6 Realizar a contagem de quantas vezes um botão foi
pressionado e mostrar esse valor na tela do monitor serial.
Contagem
botão
78
Exemplo 6 Expandir o exemplo definindo uma condição para ligar um LED
a partir de um número de vezes que o botão foi pressionado.
Contagem
botão
79
Exemplo 6 Comando while (enquanto) aplicado para não contar um novo
valor do botão enquanto ele estiver pressionado (nível lógico
Contagem 0).
botão
80
Comandos do [Link]();
Verifica o número de caracteres (letras, números, símbolos)
Monitor foram recebidos pela serial do Arduino.
Serial
Essa função é usada no void loop().
[Link]();
Realiza a leitura de um caractere recebido pelo monitor serial.
Essa função é usada no void loop().
81
Exemplo 7 Criar um programa para que armazena uma variável do tipo
char e printa os caracteres escritos no monitor serial.
Leitura
82
Exemplo 8 Criar um programa para que ligue e desligue um LED através
de dois caracteres da serial.
Ligar LED
com a serial
83
Comandos do [Link]();
Realiza a leitura de uma variável do tipo string (pode ser uma
Monitor palavra ou mesmo um texto completo) recebido pelo monitor
Serial
serial. Essa função é usada no void loop().
84
Exemplo 9 Criar um programa para que ligue e desligue um LED através
de duas strings (palavras) “LIGA” e “DESLIGA” na serial.
Ligar LED
com String
85
Exemplo 9 [Link]();
Define o tempo que o monitor deve fazer a leitura da String.
Ligar LED Essa função é usada no void setup().
com String
86
Exemplo 9 equalsIgnoreCase();
Permite comparar strings sem se importar com caracteres
Ligar LED maiúsculos ou minúsculos.
Essa função é usada no void loop().
com String
\r \n
Os caracteres \r e \n são caracteres de controle
empregados para formatar textos na serial do Arduino:
87
Exemplo 9
Ligar LED
com String
88
Desafio
Ligar vários
LEDs
89
Display de O LCD (Display de Cristal Líquido) é um tipo de tela muito
usada em projetos com Arduino para exibir informações de
LCD forma visual, como textos e números. O modelo mais comum
é o LCD 16x2, que possui duas linhas com 16 caracteres cada.
90
Display de O LCD pode ser controlado por microcontroladores como o
Arduino através da biblioteca LiquidCrystal, que facilita
LCD comandos como posicionar o cursor, limpar a tela e escrever
textos.
91
Display de
LCD
92
Primeiro Fazer um programa que coloque a mensagem “PRIMEIRO
TESTE” na tela do LCD. A sequência de conexão dos pinos é
programa essa:
Display de • VSS - GND.
LCD
• VDD - 5V.
• V0 - Pino central de um potenciômetro.
• RS - 12
• RW - GND.
• E - 11.
• (D4-D7) – (5, 4, 3, 2).
• A - 5V;
• K - GND.
93
Primeiro
programa
Display de
LCD
94
Primeiro
programa
Display de
LCD
95
Primeiro
programa
Display de
LCD
96
Segundo
programa
Display de
LCD
97
Terceiro
programa
Display de
LCD
98
Quarto
programa
Display de
LCD
99
Quinto
programa
Display de
LCD
100
Sexto
programa
Display de
LCD
101
Entradas
Analógicas
102
Entradas
Analógicas
103
Entradas
Analógicas
104
Entradas
Analógicas
105
Parâmetros Por terem mais de um valor, as entradas analógicas possuem
alguns parâmetros que devem ser destacados, o primeiro
das Entradas deles é o Range.
Analógicas Range: valor mínimo e máximo que a entrada analógica pode
ter.
106
Parâmetros
das Entradas
Analógicas
107
Parâmetros Resolução: medida em bits. Define a exatidão da leitura do
sinal. Quando maior o número de bits, maior a exatidão da
das Entradas leitura.
108
Entradas
Analógicas
Arduino UNO
109
Entradas analogRead(); função do Arduino que lê o valor de um pino
do Arduino conectado a uma entrada analógica.
Analógicas
Arduino UNO
110
Periféricos O LDR (Light Dependent Resistor) é um componente que varia
a sua resistência conforme o nível de luminosidade que incide
LDR sobre ele. A resistência do LDR varia de forma inversamente
proporcional à quantidade de luz incidente sobre ele.
111
Exemplo 10 O objetivo deste projeto é controlar o estado de um LED
(aceso ou apagado) através da verificação de luminosidade do
LDR e LED ambiente utilizando um sensor de luminosidade LDR.
112
Exemplo 10
LDR e LED
113
Exemplo 10
LDR e LED
114
Periféricos Um Sensor Óptico Reflexivo é um componente que tem
um par emissor e receptor infravermelho, também
Sensor óptico chamado de TCRT5000. O funcionamento é:
116
Exemplo 11 Ligar um sensor óptico ao Arduino e mostrar no Monitor Serial
a mensagem “OBJETO DETECTADO” caso um objeto se
Sensor óptico aproxime do sensor e a mensagem “NADA DETECTADO” caso
não haja nenhum objeto detectado.
117
Desafio 7 Este projeto irá utilizar um Sensor Óptico Reflexivo TCRT5000
para implementar um interruptor de proximidade. Desta
Sensor óptico forma, não será necessário que a pessoa toque o sensor para
acender ou apagar um Led.
118
Desafio 7
Sensor óptico
119
Desafio 7
Sensor óptico
120
Periféricos O sensor HC-SR04 permite detectar objetos que lhe estão
distantes entre 1 cm e 200 cm. Este sensor emite um sinal
Sensor ultrassônico que reflete em um objeto e retorna ao sensor,
ultrassônico
permitindo deduzir a distância do objeto ao sensor tomando o
tempo da trajetória do sinal. A velocidade do sinal no ar é de
aproximadamente 340 m/s (velocidade do som). O sensor
possui 4 pinos, sendo:
122
Exemplo 12 A ligação dos pinos do sensor ultrassônico é feita de acordo
com a imagem abaixo, onde:
Sensor
• Pino GND do sensor ligado ao
ultrassônico GND do Arduino.
• Pino VCC do sensor ligado ao
5V do Arduino.
• Pino TRIG do sensor ligado ao
pino 13 do Arduino.
• Pino ECHO do sensor ligado
ao pino 12 do Arduino.
123
Exemplo 12 No void setup(), os pinos trig e
echo serão definidos de forma
Sensor diferente, o pino que envia o
ultrassônico
sinal ultrassônico é uma saída e
o que recebe o sinal é uma
entrada. Assim:
• pinMode(echo, INPUT);
• pinMode(trig, OUTPUT);
124
Exemplo 12 No void loop(), o pino trig deve começar desligado e após um
pequeno delay em microssegundos ligar e enviar o sinal e
Sensor após isso desligar novamente.
125
Exemplo 12 A função pulseIN(pino,valor) captura a duração de um
pulso. No caso utilize uma variável para receber a duração que
Sensor um pulso leva pra chegar no pino do echo:
ultrassônico
int duracao = pulseIn(echo,HIGH);
126
Exemplo 12
Sensor
ultrassônico
127
Periféricos Um servo motor é um motor com controle de posição
muito utilizado em projetos de robótica, automação e
Servo Motor eletrônica embarcada, como com Arduino. Ele é chamado de
"servo" porque possui um sistema de realimentação interna
que permite controlar com precisão o ângulo de rotação.
128
Periféricos Características do Micro Servo 9g SG90 da Tower Pro:
129
Periféricos Exemplos de aplicações de um servo motor:
130
Periféricos #include <Servo.h> // Inclui a biblioteca do servo motor.
Servo Motor Servo motor; // A função “Servo” cria um servo objeto para
controlar um servo motor.
Pinos Potenciômetro:
• Esquerda – GND;
• Direita – 5V;
• Central – Pino Analog.
132
Exemplo 13 Como a variação do potenciômetro é de 0 a 1023 e o do servo
motor é de 0 a 180, utilizamos a função map(), como o objetivo de
Servo Motor e converter o range do potenciômetro com o do servo motor. A função
map() é definida como:
Potenciômetro
map(valor, de Min, de Max, para Min, para Baixo)
Onde:
• valor: valor a ser convertido.
• de Min: valor mínimo do intervalo do valor.
• de Max: valor máximo do intervalo do valor.
• para Min: valor mínimo do intervalo a ser convertido.
• para Max: valor máximo do intervalo a ser convertido.
133
Exemplo 13
Servo Motor e
Potenciômetro
134
Exemplo 14 Montar um circuito onde digita-se no Monitor Serial o
ângulo do servo motor.
Servo Motor e
Monitor Serial
135
Exemplo 15 Montar um circuito onde o ângulo do Servo Motor varia a
uma taxa constante.
Variação do
Servo Motor
136
Exemplo 16
Servo Motor
com botão
137
Exemplo 16
Servo Motor
com botão
138
Exemplo 17
Servo Motor
E Sensor
ultrassônico
139
Periféricos O módulo a relé do Arduino serve para ligar e desligar cargas
elétricas de maior tensão e corrente do que o próprio Arduino pode
Módulo a relé controlar diretamente. Ele age como uma espécie de "interruptor
controlado eletronicamente", permitindo que o Arduino, que opera
com 5V e corrente muito baixa, acione dispositivos como:
140
Periféricos • O Arduino envia um sinal digital (por exemplo, HIGH ou LOW)
para o módulo.
Módulo a relé • O módulo possui um relé eletromecânico, que fecha (liga) ou
abre (desliga) o circuito da carga.
Funcionamento • O relé possui 3 terminais chamados COM (comum), NO
(normalmente aberto) e NC (normalmente fechado).
141
Periféricos • Sem sinal, a bobina está desernergizada, a ligação está entre o
COM e o NC e a carga (lâmpada) está desligada.
Módulo a relé
• Com sinal, a bobina está energizada, a ligação está entre o COM
Funcionamento e o NO e a carga (lâmpada) está energizada.
142