Primeiros Passos Com Arduino-V0RV1
Primeiros Passos Com Arduino-V0RV1
Primeiros Passos Com Arduino-V0RV1
Primeiros passos com
Arduino
Entre no fascinante mundo da eletrônica e programação
Fábio Souza
1ª Edição
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Aviso legal
Este eBook foi escrito com fins didáticos, e com todos os esforço para que ele
ficasse o mais claro e didático possível.
O objetivo deste eBook é educar. O autor não garante que as informações
contidas neste eBook estão totalmente completas e não deve ser responsável
por quaisquer erros ou omissões.
O autor não será responsabilizado para com qualquer pessoa ou entidade
com relação a qualquer perda ou dano causado ou alegado a ser causado
direta ou indiretamente por este eBook.
Se achar algum erro, ou tiver sugestões de tópicos ou melhorias, me envie
um e-mail: f s.embarcados@gmail.com
Este obra está licenciado com uma Licença Creative Commons
Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional.
2
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Aproveite e faça o curso online sobre o assunto tratado nesse ebook através da
plataforma Udemy. Estou disponibilizando um desconto especial de 80% para você
aproveitar esse curso.
3
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Sumário
Sobre o Autor 6
Introdução 7
O que é Arduino? 8
Referências 41
4
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Sobre o Autor
Engenheiro com experiência no Fábio Souza
desenvolvimento de projetos eletrônicos
embarcados. Hoje é diretor de operações
do portal Embarcados, onde trabalha para
levar conteúdos de eletrônica, sistemas
embarcados e IoT para o Brasil.
Também atua no ensino eletrônica e
programação. É entusiastas do movimento
maker, da cultura DIY e do
compartilhamento de conhecimento,
publica diversos artigos sobre eletrônica e
projetos open hardware.
Com iniciativas como o projeto Franzininho e projetos na área de educação, leva a cultura
maker para o Brasil capacitando e incentivando professores e alunos a usarem tecnologia
em suas vidas. Participou da residência hacker 2018 no Red Bull Basement.
Conecte-se com Fábio Souza:
Redes Sociais: Youtube:
Blog:
5
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Introdução
A plataforma Arduino foi lançada em 2005 na Itália com o objetivo de facilitar a
programação de microcontroladores por estudantes de design e leigos em eletronica. Ela
é muito popular atualmente sendo usada em diversas áreas, desde o
ensino/aprendizagem inicial de eletrônica e programação, até em prototipagem e
projetos comerciais.
Através de um hardware aberto e uma plataforma de programação de fácil uso, permite a
criação de diversos projetos aproveitando as facilidades de bibliotecas e uma grande
comunidade ativa.
Esse ebook apresenta o primeiros passos para você começar usar a plataforma. Você irá
aprender o que é Arduino, encontrará o caminho para instalar a IDE, conhecerá os
detalhes da placa Arduino UNO, e fará projetos que te darão base para continuar os
estudos na plataforma.
Espero que aproveite o conteúdo do ebook e que esse seja um gatilho para você entrar no
fascinante mundo da eletrônica e programação.
Conte comigo nessa jornada!
Sucesso!
Fábio Souza.
6
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
O que é Arduino?
Arduino é uma plataforma flexível open-source de hardware e software para
prototipagem eletrônica. É destinada a designers, hobbistas, técnicos, engenheiros e
pessoas interessadas em criar projetos ou ambientes interativos.
Criada em 2005, na Itália, com base no Wiring, foi a plataforma open hardware/Open
source de mais sucesso. Hoje ela é bastante usada na comunidade maker para o
desenvolvimento de projetos diversos. Por apresentar uma grande quantidade de
bibliotecas e placas, facilita a prototipagem tanto para os entusiastas quanto para
empresas. Isso mesmo, muitas empresas estão usando a plataforma Arduino para
prototipagem e validação das suas ideias.
Todos projetos das placas Arduino estão disponíveis para download em seu site
(www.arduino.cc) assim como a IDE (Integrated Development Environment ou Ambiente
de Desenvolvimento Integrado) para programação.
A figura a seguir exibe o teste de uma aplicação com relés usando Arduino.
Fonte: h
ttps://pixabay.com/photos/integrated-circuit-computer-arduino-441294/
Então, bora aprender programar o Arduino e dominar o mundo?
7
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
A plataforma é formada por dois componentes principais: Hardware e Software.
O hardware é composto por placas de prototipagem na qual são construídos os projetos.
8
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Hardware
Existem diversas placas oficiais de Arduino e muitas outras não oficiais. As placas
Arduino são Open Hardware, o que permitem a derivação e criação de novas placas para
aplicações específicas ou até mesmo com outras tecnologias de microcontroladores e
microprocessadores.
Placas Arduino
Acessando a Arduino Store, você encontra uma gama de placas oficiais para as mais
diversas aplicações. Placas como Arduino UNO, Arduino Mega e Arduino Nano, são
recomendadas para os iniciantes e estão na maioria dos tutoriais na internet. Usaremos
com base para esse ebook a Arduino UNO, oK?
Mas não fique limitado as placas Arduino oficiais, há uma infinidade de placas
compatíveis que são excelentes!
9
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
10
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Shields e módulos
Fonte: h
ttps://m.media-amazon.com/images/I/71q8CVKP0gL._SR500,500_.jpg
11
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Software
O software para programação do Arduino é uma IDE que permite a criação de sketches
(programas) para diversas placas e facilita a portabilidade de código entre as placas. A
linguagem de programação é modelada a partir da linguagem Wiring e possui uma
grande quantidade de bibliotecas. Confira a referência da linguagem no Anexo I.
Quando pressionado o botão upload da IDE, o código escrito é compilado para uma
linguagem que pode ser compreendida pelo microcontrolador. O upload é feito por uma
comunicação serial através de um programa chamado avrdude.
Fonte: https://balau82.wordpress.com/2011/03/29/programming-arduino-uno-in-pure-c/
12
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
A IDE apresenta um alto grau de abstração, possibilitando o uso de um microcontrolador
sem que o usuário conheça o mesmo, nem como deve ser usado os registradores internos
de trabalho. Não é necessário a configuração de toolchain, como geralmente acontece em
programação de microcontroladores.
O ciclo de programação do Arduino pode ser dividido da seguinte maneira:
1. Conexão da placa a uma porta USB do computador;
2. Desenvolvimento de um sketch com comandos para a placa;
3. Upload do sketch para a placa, utilizando a comunicação USB;
4. Aguardar a reinicialização, após ocorrerá à execução do sketch criado.
A partir do momento que foi feito o upload o Arduino não precisa mais do computador: o
Arduino executará o sketch criado, desde que seja ligado a uma fonte de energia.
13
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
14
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
15
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
A IDE é dividida em três partes: A Toolbar no topo, o código ou a Sketch Window no
centro, e a janela de mensagens na base, conforme é exibido na figura a seguir:
Na Toolbar há uma guia, ou um conjunto de guias, com o nome do sketch. Ao lado direito
há um botão que habilita o serial monitor. No topo há uma barra de menus.Os botões na
Toolbar fornecem acesso rápido às funções mais utilizadas dentro desses menus.
16
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
● Verificar:
○ Verifica se existe erro no código digitado.
● Carregar:
○ Compila o código e grava na placa Arduino;
● Novo:
○ Cria um novo s ketch em branco.
● Abrir:
○ Abre um sketch, presente no sketchbook.
● Salvar:
○ Salva o s
ketch ativo
● Monitor Serial:
○ Abre o monitor serial.
17
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Após a conexão do Arduino ao computador, é atribuído a placa uma porta serial. A
primeira vez que o programa Arduino for executado deve-se selecionar o modelo de placa
utilizado, no nosso caso escolhemos Arduino UNO, conforme figura abaixo:
18
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Após a definição do modelo, deve-se selecionar em qual porta a placa foi atribuída:
Após estas configurações o ambiente está preparado para uso e pode-se testar qualquer
um dos exemplos que acompanham a IDE ou até mesmo com um novo sketch.
19
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
O exemplo mais simples para iniciar a programação do Arduino, que pode ser
considerado como o conhecido “Hello World” das linguagens de programação, consiste
em acionar um LED através de uma saída digital.
A placa Arduino UNO já possui um LED ligado ao pino digital 13 que pode ser utilizado
para o teste, e na IDE podemos carregar o exemplo Blink:
20
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Para verificar de o código está correto deve-se clicar no ícone Verificar, após a
compilação é exibida uma mensagem de status da operação e caso esteja tudo certo será
exibida a quantidade de bytes gerados pelo programa:
Para gravar o código na memória flash do microcontrolador é necessário clicar no ícone
Carregar, será transferido o código para a placa e após alguns segundos o LED ligado ao
pino 13 começará a piscar em intervalos de 1 segundo.
21
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
22
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
“Pinout of ARDUINO Board and ATMega328PU” por pighixxx com licença Creative Commons
Attribution-Share Alike 4.0 International
23
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Programação Arduino
void loop() {
// put your main code here, to run repeatedly:
}
A função setup() é responsável pela configuração inicial do Arduino e a função loop() é
responsável pela execução das tarefas. Ambas as funções são requeridas para o correto
funcionamento do Arduino.
A função setup() segue logo abaixo da declaração de variáveis no início do programa. Esta
é a primeira função a ser executada. Ela é usada para configuração dos pinos ou
inicialização de periféricos.
A função loop() vem em seguida e inclui os comandos que serão executados durante o
funcionamento do Arduino, por exemplo: leitura de entradas, acionamento de saídas, etc.
Essa é a função principal do Arduino onde é executada a maior parte dos comandos.
24
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Saídas Digitais
As saídas digitais podem assumir dois níveis lógicos, HIGH e LOW. Esses níveis lógicos
correspondem a 5V e 0V no pino. Dessa forma podemos controlar dispositivos através
dos pinos do Arduino.
A placa Arduino UNO possui 14 pinos que são usados para saídas ou entradas digitais:
Para usar um pino como saída digital é necessário primeiro configurar o pino desejado
como uma saída digital e só depois colocar o estado lógico para acionamento da saída,
conforme a lógica do programa.
25
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Vamos conhecer as funções que são utilizadas para configuração e escrita no pino:
void pinMode();
Essa função é utilizada para configurar um pino como entrada ou saída digital. Ela
geralmente é utilizada dentro da função setup(). Apresenta as seguintes características:
Sintaxe:
pinMode(pino, modo);
Parâmetros:
pino: Número correspondente ao pino que se deseja configurar, conforme a placa que está
trabalhando. No caso da Arduino UNO pode ser de 0 a 13;
modo: Modo que deseja configurar o pino: I
NPUT, INPUT_PULLUP, OUTPUT:
- INPUT: Entrada digital;
- INPUT_PULLUP: Entrada digital com resistor de pull-up (ligado ao VCC) interno
habilitado;
- OUTPUT: Saída digital;
Retorno:
Essa função não tem retorno algum.
void digitalWrite();
A função digitalWrite() coloca um nível lógico Alto (HIGH, 5V) ou baixo (LOW, 0V) em um
pino configurado como saída digital.
Sintaxe:
digitalWrite(pino, valor)
Parâmetros:
pino: Número correspondente ao pino;
valor: HIGH ou LOW
Retorno:
Essa função não tem retorno algum.
26
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Vamos fazer um exemplo para piscar o LED 13 presente na placa Arduino UNO:
Código:
/*
Pisca LED
Liga o LED por 1 segundo e depois desliga por mais 1 segundo
*/
// rotina de configuração
void setup() {
pinMode(LED, OUTPUT); // inicializa pino do LED como saída digital
}
void loop() {
digitalWrite(LED, H IGH); // liga LED
delay(1000); // aguarda 1 segundo
digitalWrite(LED, L OW); //desliga LED
delay(1000); //aguarda 1 segundo
}
Análise do Funcionamento:
Vamos analisar a sequência do código. Conforme vimos na seção anterior, a primeira
função a ser executada é a setup(). No nosso exemplo, dentro da função setup() é feita a
configuração do pino 13, que foi chamado de LED, como uma saída digital (OUTPUT).
27
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
A função delay(ms) espera um tempo em milisegundos. No caso do exemplo acima, 1000
ms = 1 segundo;
28
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Entradas Digitais
digitalRead(pino)
Lê o valor presente e um pino digital. Este valor pode ser HIGH ou LOW.
Sintaxe:
digitalRead(pino);
Parâmetros:
pino: valor correspondente ao pino que se deseja ler.
Retorno:
HIGH ou LOW.
29
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Código:
/*
Leitura de tecla
Verifica o estado da tecla e aciona o LED
*/
nt LED = 1
const i 3; //pino do LED
const i nt BT = 2 ; //pino do botão
30
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Análise do Funcionamento:
O estado do botão é testado através do if. Se a função digitalRead(BT) retornar o valor
LOW, significa que o botão foi pressionado, assim a condição if(digitalRead(BT) == LOW)
é verdadeira, então o botão é ligado.
Caso o botão esteja solto o digitalRead(BT) retornará HIGH, então será executada a
cláusula else, apagando o LED.
31
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Entradas Analógicas
As entradas digitais só podem ler dois estados, HIGH e LOW, ou seja, 5 V ou 0 V. Por
exemplo, verificar se uma porta está aberta ou fechada, identificar se um botão está
pressionado ou solto, etc.
Em muitos casos precisamos ler valores que variam continuamente no tempo, como por
exemplo, temperatura, pressão, luminosidade, etc. O problema é que o microcontrolador
só trabalha internamente com sinais digitais. Para que o microcontrolador possa
trabalhar com sinais analógicos é necessário um circuito que faça a conversão de um
valor analógico para digital. Felizmente, hoje a maioria dos microcontroladores trazem
um conversor Analógico para Digital integrado. O Atmega328 possui um conversor AD de
10 bits, que pode converter valores analógicos (de 0 a 5 V, por exemplo) em um valor
digital de 0 a 1023.
A placa Arduino UNO possui 6 pinos que podem ser usados como entrada analógica:
32
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Para a leitura de um sinal analógico no pino que possui essa função (A0 a A5), não é
necessário configurar o pino como entrada analógica. Isso é feito na função de leitura:
int analogRead(pino)
Sintaxe:
analogRead(pino);
Parâmetros:
pino: valor do pino configurado como entrada analógica (A0 a A5)
Retorno:
int (0 a 1023)
Vamos fazer a leitura de um potênciometro e enviar o seu valor pela comunicação Serial:
Circuito:
33
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Código:
/*
Leitura de Potenciômetro
Lê o valor do potenciômetro e imprime o valor da conversão AD na Serial
*/
void loop()
{
Análise do Funcionamento:
A leitura do potenciômetro que foi ligado ao pino A0 é feita a cada 500 ms e o seu valor é
impresso no terminal serial:
34
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
PWM
Fonte: h
ttp://arduino.cc/en/Tutorial/PWM
Analisando as formas de onda nota-se que a frequência é fixa e varia-se o duty cycle da
forma de onda. Quando o duty cycle está em 0% o valor médio da saída encontra-se em 0
V e consequentemente para um duty cycle de 100% a saída assume seu valor máximo, que
no caso é 5V. Para um duty cycle de 50% a saída assumirá 50% do valor da tensão, 2,5 V e
assim sucessivamente para cada variação no duty cycle. Portanto, para calcular o valor
médio da tensão de saída de um sinal PWM pode-se utilizar a seguinte equação:
duty cycle
V out = 100 × V cc
35
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Onde:
● Vout - tensão de saída em V;
● duty cycle - valor do ciclo ativo do PWM em %;
● Vcc - tensão de alimentação em V.
A técnica PWM pode ser usada para diversas aplicações, como por exemplo:
● controle de velocidade de motores;
● variação da luminosidade de leds;
● geração de sinais analógicos;
● geração de sinais de áudio.
A placa Arduino Uno possui pinos específicos para saídas PWM e são indicados pelo
carácter ‘~’ na frente de seu número, conforme exibido a seguir:
36
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Sintaxe:
analogWrite(pino, valor);
Parâmetros:
● pino: corresponde ao pino que será gerado o sinal PWM (3,5,6,9,10 e 11);
● valor: corresponde ao duty cycle, ou seja, o valor que permanecerá em nível alto o
sinal.
O valor deve ser de 0 a 255 onde com 0 a saída permanece sempre em nível baixo e 255 a
saída permanece sempre em nível alto.
37
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Código:
/*
Controle de brilho de LED
*/
const int LED = 9; //pino onde o LED foi ligado
char brilho = 0; //variável auxiliar para controle do brilho
void setup()
{
pinMode(LED, OUTPUT); //configura pino como saída
}
void loop()
{
//loop para incremento do brilho de 0 a 100%
for (brilho = 0; brilho < 255; brilho++) {
analogWrite(LED, brilho); //atualiza brilho do LED
delay(10); // Espera 10 ms
}
Análise do Funcionamento:
O loops for fazem o controle de incremento e decremento do brilho do LED. O primeiro
for, inicia a variável brilho com 0 e a cada laço incrementa em 1 (soma 1) a variável brilho.
O laço é finalizado quando a variável brilho chega em 255.
Já o segundo for, inicia a variável brilho em 255 e decrementa em 1(subtrai 1) a variável
brilho a cada laço. O loop é finalizado quando a variável brilho chega a 0.
Dentro dos loops for, o valor do brilho do LED é atualizado a cada 10 ms através da função
analogWrite() que recebe o valor da variável brilho.
Assim o LED fica aumentando e diminuindo o brilho continuamente.
38
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Próximos passos
Chegamos ao final do ebook, mas os conhecimentos sobre Arduino não acabam aqui. A
partir de agora você poderá explorar mais recursos da programação Arduino e do seu
hardware. Você pode aprender criando projetos que podem te ajudar no seu dia a dia. Dá
pra fazer muita aplicação bacana com Arduino.
Sugiro que dê uma explorada nos projetos publicados no I nstructables e H ackter.io.
Caso precise de uma formação mais detalhada, tenho alguns cursos na Udemy que
podem te ajudar. Veja aqui os meus cursos: h ttps://www.udemy.com/user/fabiosouza/
Fique a vontade para me adicionar nas redes sociais e entrar em contato.
Desejo muito sucesso pra você.
39
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
Referências
● https://www.arduino.cc/
● https://www.arduino.cc/en/Guide/HomePage
● https://www.arduino.cc/reference/pt/
● https://www.embarcados.com.br/serie/primeiros-passos-com-arduino/
40
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
FUNÇÕES
Para controlar a placa Arduino e realizar computações.
Entradas e Saídas Digitais Funções Matemáticas Números Aleatórios
● digitalRead() ● abs() ● random()
● digitalWrite() ● constrain() ● randomSeed()
● pinMode() ● map() Bits e Bytes
Entradas e Saídas Analógicas ● max() ● bit()
● analogRead() ● min() ● bitClear()
● analogReference() ● pow() ● bitRead()
● analogWrite() ● sq() ● bitSet()
Apenas Zero, Due e Família MKR ● sqrt() ● bitWrite()
● analogReadResolution() Funções Trigonométricas ● highByte()
● analogWriteResolution() ● cos() ● lowByte()
Entradas e Saídas Avançadas ● sin() Interrupções Externas
● noTone() ● tan() ● attachInterrupt()
● pulseIn() Caracteres ● detachInterrupt()
● pulseInLong() ● isAlpha() Interrupções
● shiftIn() ● isAlphaNumeric() ● interrupts()
● shiftOut() ● isAscii() ● noInterrupts()
● tone() ● isControl() Comunicação
Funções Temporizadoras ● isDigit() ● Serial
● delay() ● isGraph() ● Stream
● delayMicroseconds() ● isHexadecimalDigit() USB
● micros() ● isLowerCase() ● Keyboard
● millis() ● isPrintable() ● Mouse
● isPunct()
● isSpace()
● isUpperCase()
● isWhitespace()
41
2019
Ebook - Primeiros Passos com Arduino - Fábio Souza
VARIÁVEIS
Tipos de dados e constantes da linguagem Arduino.
Constantes Tipos de Dados Escopo de Variáveis e
● Constantes ● String() Qualificadores
● Constantes Inteiras ● bool ● const
● Constantes de Ponto ● boolean ● escopo
Flutuante ● byte ● static
Conversão ● char ● volatile
● byte() ● double Utilitários
● char() ● float ● PROGMEM
● float() ● int ● sizeof()
● int() ● long
● long() ● short
● word() ● string
● unsigned char
● unsigned int
● unsigned long
● vetor
● void
● word
ESTRUTURAS
Os elementos da linguagem Arduino (C++).
Sketch Operadores Aritméticos Operadores para Ponteiros
● loop() ● % (resto) ● & ( referência)
● setup() ● * (multiplicação) ● * (desreferência)
Estruturas de Controle ● + (adição) Operadores Bitwise
● break ● - (subtração) ● & ( E)
● continue ● / (divisão) ● << ( deslocamento à
● do...while ● = ( operador de atribuição) esquerda)
● else ● Operadores de ● >> ( deslocamento à
● for Comparação direita)
● goto ● != ( diferente de) ● ^ ( OU EXCLUSIVO)
● if ● < ( menor que) ● | (OU)
● return ● <= ( menor que ou igual a) ● ~ (NÃO)
● switch...case ● == ( igual a) Operadores de Atribuição
● while ● > (maior que) Composta
Outros Elementos da Sintaxe ● >= (maior que ou igual a) ● &= ( atribuição por e)
● #define ( define) Operadores Booleanos ● *= (atribuição por
● #include ( include) ● ! ( NÃO lógico) multiplicação)
● /* */ (comentário em ● && ( E lógico) ● ++ (incremento)
bloco) ● || (OU lógico) ● += (atribuição por adição)
● // (comentário) ● -- (decremento)
● ; (ponto e vírgula) ● /=(atribuição por divisão)
● {} ( chaves) ● ^= ( atribuição por ou
exclusivo)
● |= ( atribuição por ou)
42
2019