Apostila Arduino
Apostila Arduino
1. História .................................................................................................................... 4
2. Aplicações de Arduino .......................................................................................... 4
3. Hardware ................................................................................................................. 6
Microcontrolador: Atmel ATMEGA328P .................................................... 6
Porta USB ......................................................................................................... 6
Botão Reset ....................................................................................................... 6
Conector P4 ...................................................................................................... 7
Pinos de alimentação e referência................................................................. 7
Pinos analógicos: ............................................................................................. 7
Pinos digitais:................................................................................................... 7
LED ON ............................................................................................................ 8
Capacitores....................................................................................................... 8
4. Grandezas analógicas e digitais ........................................................................... 8
Relembrando: O que são Bits ........................................................................ 8
Grandezas ........................................................................................................ 9
PWM ............................................................................................................... 10
5. Instalação da IDE .................................................................................................. 11
Verificação do Driver ................................................................................... 14
Arduino IDE .................................................................................................. 16
6. Componentes Eletrônicos ................................................................................... 18
Protoboard ..................................................................................................... 18
Capacitores..................................................................................................... 18
Diodo .............................................................................................................. 19
Diodos Emissores de Luz (LEDs) ............................................................... 19
Ponte H ........................................................................................................... 20
Display de Cristal Líquido (LCD)............................................................... 22
Resistor ........................................................................................................... 22
Potenciômetro ................................................................................................ 23
Resistor dependente de luz ......................................................................... 23
Servo motor ................................................................................................ 24
Piezo ............................................................................................................ 25
Motor DC .................................................................................................... 26
Botões .......................................................................................................... 26
Sensor de temperatura – LM35 ............................................................... 27
Transistor .................................................................................................... 27
7. Variáveis ................................................................................................................ 29
Variáveis mais usadas .................................................................................. 30
Variáveis Constantes .................................................................................... 31
8. Funções próprias do arduino.............................................................................. 32
Função Setup ................................................................................................. 32
Função Loop .................................................................................................. 33
Modo dos pinos ............................................................................................. 33
Leitura e envio de sinal digital .................................................................... 34
Leitura e envio de sinal analógico .............................................................. 34
Referência analógica de tensão ................................................................... 34
Funções de comunicação serial ................................................................... 35
Outras funções ............................................................................................... 35
9. Referências............................................................................................................. 36
1. História
2. Aplicações de Arduino
Vamos agora conhecer um pouco do nosso hardware, que nesse minicurso será
o Arduino Uno. Para falarmos onde fica cada parte e para o que ela serve
seguiremos a imagem abaixo.
9
Figura 4: Placa Arduino Uno
Fonte: Autoria
Porta USB
Botão Reset
Outra forma de alimentar a placa, utilizando uma fonte com conector do tipo P4
que forneça qualquer fonte de corrente continua entre 7V e 12V.
IOREF: Este pino na placa Arduino fornece a referência de tensão com que o
microcontrolador está operando. Um determinado circuito configurado
corretamente pode ler a tensão do pino IOREF e selecionar a fonte de alimentação
adequada ou habilitar tradutores de tensão nas saídas para trabalhar com o 5V
ou 3.3V.
RESET: Entrada para criar um botão de reset externo, no momento que uma
tensão é aplicada à essa porta, o Arduino é reiniciado de forma semelhante ao do
botão de reset.
3.3 e 5V: Pinos com saída fixa de 3.3V e 5V, respectivamente.
GND: Também conhecido como ground, é a referência negativa do circuito,
costuma ser adotado como 0V.
Vin: É outra forma para alimentação da placa, caso as portas USB e P4 não sejam
viáveis no momento pode-se alimentar seu Arduino por esse pino. Assim como
também é um pino de saída de energia, porém, não tem valor fixo, a mesma
energia recebida pelo conector P4 ou cabo USB será emitida no pino Vin.
Pinos analógicos:
Estes pinos são de entradas analógicas e podem ler valores analógicos variando
de 0 a 5V. Possuem resolução de 10 bits. Para medir os valores de entrada o
Arduino utiliza um conversor interno analógico-digital (ADC), que transforma o
valor analógico lido em um valor digital entre 0 e 1023 (pois 210 é 1024), de acordo
com o valor de referência da placa.
Obs.: O Arduino não possui um conversor digital-analógico, mas ele possui
algumas saídas que podem gerar pulsos, que se aproximam de saídas analógicas.
Explicação sobre grandezas digitais e analógicas será feita em breve.
Pinos digitais:
Todos os pinos digitais podem ser configurados tanto como entradas quanto
como saídas. Em geral, podem fornecer no máximo 40mA para outro circuito, e
possuem 8 bits. São de fácil entendimento pois possuem apenas dois estados:
HIGH (ou ON) – representa o valor de 5V.
LOW (ou OFF) – representa o valor de 0V.
Dentre os 14 pinos digitais que o Arduino UNO possui, 6 deles (3, 5, 6, 9, 10 e 11)
são PWM.
AREF: Configura a tensão de referência para a entrada analógica (o valor máximo
do intervalo de entrada), se não tiver conectado ao Arduino, o mesmo está com
referência de 0-5V para 0 -1023.
TX e RX: Portas de comunicação serial, usadas para comunicar a placa com
algum módulo ou shield externo.
Pino 13: De todos os pinos digitais o pino 13 particularmente possui o seu próprio
Led, que é muito útil para pequenos projetos ou testes quando não se quer usar
uma protoboard por exemplo.
LED ON
Capacitores
Quando compilamos algum código na placa, esse por sua vez fica salvo na
memória do Arduino, sendo executado toda vez que ele for ligado. Esses
capacitores mantém o mínimo de energia necessária para que essas informações
não sejam perdidas.
Grandezas
Grandezas digitais, podemos dizer que são aquelas que não apresentam valores
intermediários, possuem saltos numa faixa de valores bem definidos.
Grandezas analógicas, diferente das digitais podem assumir esses valores
intermediários entre uma faixa de valores, uma boa comparação para os dois
casos seriam os relógios digital e analógico respectivamente. Podemos comparar
a grandeza digital como uma escada, que tem subidas em “saltos” na vertical, e
a analógica como uma rampa que sobe suave e continuamente adotando valores
que na “escada” se perdem por conta dos saltos.
Você já deve estar se perguntando, “e se eu fizer cada vez mais degraus até a
escada ficar parecida com uma rampa?” Falaremos quando abordarmos as portas
analógicas.
Como foi dito anteriormente os pinos digitais podem ser configurados tanto com
entrada quanto saída, pelo fato de ler apenas HIGH ou LOW esses tipos de pinos
são usado como entrada geralmente quando a intenção é fazer um interruptor
externo, fazendo um caminho diferente dentro do programa dependendo do
estado do mesmo, porém, nesse caso devido à alta impedância que lhe é
atribuído, o pino fica sensível a ruídos elétricos do ambiente, podendo mudar seu
estado indesejavelmente, para corrigir esse problema usamos o que chamamos
de resistores pull-up e pull-down, ou definimos o pino como esse tipo de resistor
no próprio programa, trataremos deles mais à frente.
Figura 6: Representação grandeza digital e analógica.
Fonte: Site Portal Vida de Silício
Na vida real basicamente tudo é formado por valores analógicos, por conta disso
o Arduino possui os pinos de entrada analógicas como já foi mostrado
anteriormente, mas, no Arduino tudo é processado de forma digital e por conta
disso se faz necessário a utilização de conversor, para converter sinal analógico
para digital. Pensando na ideia da rampa, quanto mais degraus tivermos melhor
vai ser a aproximação de um sinal digital para um analógico, o pino analógico
possui 10 bits de resolução então são 1024 “degraus” que podemos dividir uma
faixa de tensão de 0V a 5V. Aumentando ainda mais o número de degraus, isto
é, o número de bits, o valor de tensão equivalente a um bit seria tão pequeno que
consideraríamos como um sinal analógico.
PWM
Mas se o Arduino só funciona com grandezas digitais como podemos usar pinos
de saídas analógicas? Bom nesse caso, existem pinos especiais que chamamos de
PWM (Pulse Width Modulation), que possuem resolução de 8 bits e que são
capazes de simular um sinal analógico por meio de sinais digitais. Esses pinos
são representados pelas portas digitais com o (~) ao lado do número. Esse recurso
consiste na geração de uma onda quadrada onde controla-se a porcentagem de
tempo em que a tensão fica em HIGH, essa porcentagem é chamada de Duty
Cycle, e dependendo do seu valor a tensão média pode variar, podendo assim
tomar valores intermediários que os sinais digitais não conseguem. Então, por
exemplo, se tivermos 0% de Duty Cycle teremos 0V marcando 0 bits e 100% de
Duty Cycle teremos 5V marcando 255 bits. De forma mais geral é o tempo em
que o sinal permanece em 5V dividido pelo tempo total de oscilação. A figura a
seguir mostra alguns Duty Cycles.
Figura 7: Duty Cycle.
Fonte: Site Portal Vida de Silício
5. Instalação da IDE
Por fim, o software está finalmente instalado e pronto para ser utilizado.
Verificação do Driver
O Arduino possui um dispositivo Plug & Play (PnP), ou seja, quando conectado
a uma porta USB de um computador ele é automaticamente reconhecido e
instalado. Logo após a instalação ele aparece como uma porta COM.
As portas seriais, também chamadas de portas de comunicação (COM), são
consideradas uma das conexões externas mais básicas para um computador e
permitem que cada dispositivo conectado a elas receba e envie dados
simultaneamente.
Conectando o cabo USB AB no Arduino e depois no computador, seu
computador reconhecerá o Arduino automaticamente e uma nova porta COM
será criada para o sistema operacional Windows.
Para configurar essa porta COM siga os passos como mostrados abaixo.
Clique em Gerenciamento do Computador > Gerenciador de Dispositivos >
Portas (COM e LTP) > Arduino UNO (COMX).
Pelo que for encontrado, podemos confirmar se o Arduino foi realmente
reconhecido pelo computador e qual o número da porta COM associada a ele.
*Obs.: Nesse caso a porta genérica COMX foi encontrada como COM3, mas ela
pode variar o valor de “X” de acordo com a configuração de cada computador.
De volta para o software do Arduino, devemos indicar para o IDE em qual porta
o Arduino está conectado para garantir que a comunicação do microcontrolador
com o computador seja executada de forma adequada.
Ferramentas > Porta > COMX (Porta do Arduino)
A IDE pode ser dividida em três partes: Toolbar, Sketch Window e Janela de
Mensagens.
Figura 18: IDE do Arduino
Fonte: Autoria
Protoboard
Capacitores
Diodo
Garante que a corrente flua apenas em uma direção. Útil quando há alta carga de
corrente/tensão no circuito. Este componente é polarizado, o que significa que a
direção em que ele é posicionado importa, porque colocado em um sentido ele
permite a passagem de corrente e, no outro, ele bloqueia. O catodo, que
normalmente marcado com uma faixa em um dos lados do componente, é
tipicamente conectado ao ponto de menor energia, ou à terra.
É um tipo de diodo que fica iluminado quando eletricidade passa através dele.
Seu funcionamento se dá de forma semelhante ao diodo. O anodo, que é
tipicamente conectado à maior tensão, tem normalmente a perna mais longa. Em
geral, os LEDs operam com nível de tensão de 1,6 a 3,3 V, sendo compatíveis com
os circuitos de estado sólido.
É interessante notar que a tensão é dependente do comprimento da onda emitida.
Assim, os LEDs infravermelhos geralmente funcionam com menos de 1,5V, os
vermelhos com 1,7V, os amarelos com 1,7V ou 2.0V, os verdes entre 2.0V e 3.0V,
enquanto os LEDs azuis, violeta e ultravioleta geralmente precisam de mais de
3V. A potência necessária está na faixa típica de 10 a 150 mW, com um tempo de
vida útil de 100.000 ou mais horas.
Ponte H
Resistor
Potenciômetro
Também conhecido pela sigla inglesa LDR (Light Dependent Resistor). Sua
resistência muda de acordo com a quantidade de luz que incide na sua superfície,
quando a luz que incide sobre o semicondutor tem uma frequência suficiente, os
fótons que incidem sobre o semicondutor libertam elétrons para a banda
condutora que irão melhorar a sua condutividade e assim diminuir a resistência.
Servo motor
Piezo
Botões
Onde R1 = −𝑉𝑠 /50 µA; 𝑉𝑜𝑢𝑡 = 1500 𝑚𝑉 a 150°C; 𝑉𝑜𝑢𝑡 = 250 𝑚𝑉 a 25°C e
𝑉𝑜𝑢𝑡 = −550 𝑚𝑉 a −55°C.
Transistor
Figura 46: Simbologia do transistor NPN Figura 47: Simbologia do transistor PNP
Fonte: Wikimedia Commons Fonte: Wikimedia Commons
7. Variáveis
Cada variável tem função de armazenar seu respectivo tipo de dado, tornando
possível o uso do dado posteriormente no programa. Para armazenar o dado é
preciso usar o operador de atribuição, ou seja, o sinal de igual. Antes de serem
usadas as variáveis devem ser declaradas, sem a necessidade de atribuir valor a
elas.
Exemplo:
Para saber qual tipo de variável usar, o programador deve saber o tamanho do
conteúdo que quer armazenar. O local em que ela é declarada também influencia,
porque isto muda a forma como ela é vista pelas funções. Isso é chamado de
escopo de variável.
Quando é atribuído um valor inicial à variável, é o mesmo que dizer que a mesma
foi inicializada. Vale lembrar que é uma boa prática de programação verificar o
dado dentro da variável, antes dela ser acessada.
Quando a variável excede sua capacidade máxima, volta a sua capacidade
mínima, ou máxima, dependendo da operação.
Exemplo:
x = 0;
x = x - 1; // x agora contém 255
x = 255;
x = x + 1; // x agora contém 0
Recomenda-se dar nomes descritivos às variáveis, para que o código fique mais
legível. É possível adotar qualquer nome para as variáveis, desde que não sejam
usadas as palavras-chaves do Arduino.
Variáveis mais usadas
Variáveis Constantes
b) Modos para Pinos Digitais: Pinos digitais pode ser usados como INPUT,
INPUT_PULLUP ou OUTPUT. Mudar o modo de um pino com
pinMode() muda o comportamento elétrico do pino.
Pinos configurados como INPUT são ditos estarem em um estado de alta-
impedância. Isso significa que é preciso muito pouca corrente para mover o
pino de entrada de um estado para outro e pode tornar os pinos úteis para
tarefas, como, implementar um sensor de toque capacitivo, ler um LED como
um fotodiodo ou ler um sensor analógico com um esquema como RCTime.
Existem resistores de empilhamento de 20K embutidos no chip Atmega que
podem ser acessados a partir do software. Esses resistores de pullup
integrados são acessados configurando o pinMode () como INPUT_PULLUP.
Isso inverte o comportamento do modo INPUT, onde HIGH significa que o
sensor está desligado e LOW significa que o sensor está ligado. Ao conectar
um sensor a um pino configurado com INPUT_PULLUP, a outra extremidade
deve estar conectada à terra. No caso de um interruptor simples, isto faz com
que o pino leia HIGH quando o interruptor está aberto e LOW quando o
interruptor é pressionado.
Pinos configurados como OUTPUT são ditos estarem em um estado de baixa-
impedância. Isso significa que esses podem fornecer uma quantidade
substancial de corrente para outros circuitos. Isso faz com que sejam úteis
para alimentar LEDs, pois estes usam menos de 40 mA. Cargas que exigem
mais de 40 mA (ex. motores) irão requerer um transistor ou um outro circuito
de interface. Pinos configurados como saídas podem ser danificados ou
destruídos se forem conectados diretamente ao ground ou na tensão de
alimentação.
A função setup é do tipo void e é classificada como uma das funções principais
do Arduino. Nela é onde setamos os comandos que serão executados uma única
vez, na inicialização do programa arquivo Arduino, algumas atribuições iniciais
podem ser executadas nessa função. Sua estrutura segue o modelo:
//Declaração de variável
void setup() {
/*
Código do setup
Ou Inicializações
Setar entradas e saídas
*/
}
Função Loop
A função loop é também do tipo void e é classificada como uma das funções
principais do Arduino. Em programação loop e laço são sinônimos e trazem a
ideia de ciclo, portanto é nela que escrevemos os comandos que serão executados
repetidamente pelo arquivo, seguindo o fluxo de comandos que possui interação
com o circuito. Sua estrutura segue o modelo:
//Declaração de variável
void setup() {
// Comandos
}
void loop() {
/*
Código do loop
Fluxo de comandos
Interatividade com o circuito
*/
}
Na função setup, a função dos pinos pode ser declarada com o comando pinMode.
Nesse comando, deve ser fornecido como dados de entrada o endereço do pino
(é um número inteiro) e o modo de fluxo de dados, que pode ser de saída
(OUTPUT), ou entrada (INPUT) ou um modo especial que conecta o circuito a
resistores internos do Arduino (INPUT_PULLUP).
int var_1 = 3;
void setup() {
pinMode(var_1 , OUTPUT);
}
Leitura e envio de sinal digital
Declarando um pino digital como OUTPUT, você poderá alternar o valor da tensão
entre HIGH (5V) e LOW (0V). Para isso é utilizada a função
digitalWrite(pino,HIGH); ou com o parâmetro digitalWrite(pino,LOW);
Declarando um pino digital como INPUT, você poderá ler o valor da tensão
recebida no pino como HIGH ou LOW. Para isso é utilizada a função
digitalRead(pino);
Outras funções
Acesso em 10/02/2020:
http://blogmasterwalkershop.com.br/arduino/arduino-utilizando-o-sensor-
ultrasonico-hcsr04-e-buzzer-5v/
Acesso em 10/02/2020: https://blog.usinainfo.com.br/alarme-com-arduino-e-
sensor-ultrassonico-projeto-pascoa-segura/
Acesso em 10/02/2020: https://www.tinkercad.com/
Acesso em 10/02/2020: https://www.arduinoecia.com.br/2013/06/sons-no-
arduino.html
Acesso em 10/02/2020: https://www.filipeflop.com/blog/sensor-ultrassonico-
hc-sr04-ao-arduino/
Acesso em 10/02/2020: http://mundoprojetado.com.br/efeito-piezoeletrico-
entenda-como-funciona-o-buzzer/
Acesso em 10/02/2020: http://fontesalternativaspth.blogspot.com/
Acesso em 10/02/2020: https://portal.vidadesilicio.com.br/medindo-
temperatura-com-termistor-ntc/
Acesso em 10/02/2020: https://www.tecmundo.com.br/programacao/227-o-
que-e-bit-.htm
Acesso em 10/02/2020: https://www.filipeflop.com/blog/controle-modulo-
rele-arduino/
Acesso em 10/02/2020: https://portal.vidadesilicio.com.br/modulo-rele-com-
arduino/
Acesso em 10/02/2020: https://www.infoescola.com/eletronica/rele/
Acesso em 10/02/2020: https://portal.vidadesilicio.com.br/sensor-de-
presenca-hc-sr501/
Acesso em 10/02/2020: https://blog.usinainfo.com.br/automacao-residencial-
arduino-ideias-para-deixar-sua-casa-igual-homem-de-ferro/
Acesso em 10/02/2020: http://fritzing.org/projects/iot-switch-onoff-220-240v-
device-with-nodemcu-5v-r
Acesso em 10/02/2020: https://www.filipeflop.com/blog/controlando-um-
lcd-16x2-com-arduino
Acesso em 10/02/2020: http://blog.eletrogate.com/guia-completo-do-display-
lcd-arduino/
Acesso em 10/02/2020: https://www.addicore.com/2004-20x4-Character-
LCD-with-I2C-backpack-p/157.htm
Acesso em 10/02/2020: www.orientlcd.com
Acesso em 10/02/2020: https://pt.wikipedia.org/wiki/Ponte_H
Acesso em 10/02/2020: http://tot.eng.br/sensor-de-temperatura-lm35-no-
arduino/
MOTA, Allan Deangelle. Apostila Arduino Básico: Vol. 2. Serra – ES: Vida de
Silício, 2015. 65p. Apostila