0% acharam este documento útil (0 voto)
12 visualizações77 páginas

Arduino - Primeiros Passos - Parte 1

Enviado por

ana leticia
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
12 visualizações77 páginas

Arduino - Primeiros Passos - Parte 1

Enviado por

ana leticia
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 77

Apoio

Apoio: FUNPEC Fábio Meneghetti Ugulino de Araújo

Apoio

Ø Cultura Maker (DIY)


F Segunda a Wikipédia, “A cultura maker se baseia na ideia de que as pessoas
devem ser capazes de fabricar, construir, reparar e alterar objetos dos mais
variados tipos e funções com as próprias mãos”. (https://pt.wikipedia.org/
wiki/Cultura_maker)

F Considerado uma extensão da filosofia “Do It Yourself!” (DIY), que teve início
na década de 1960, o movimento da cultura maker apresenta a ideia de que
qualquer pessoa consegue construir, consertar ou criar seus próprios objetos.
(https://blog.lyceum.com.br/o-que-e-cultura-maker/)

2
Apoio

Ø Cultura Maker (DIY)


F Com a revolução digital e a facilidade de acesso aos recursos tecnológicos,
essa ideia vem tomando conta de um grande número de pessoas
interessadas em criar e compartilhar projetos pautados pela tecnologia;
F Um aspecto importante desse universo "maker" é o espaço físico, sendo
famosos os laboratórios de fabricação onde estão disponíveis máquinas e
ferramentas como impressoras 3D, cortadoras a laser, equipamentos e
acessórios para desenvolver projetos (os "makerspaces”), ambientes de
colaboração e transmissão de informações entre grupos e pessoas.

Fonte:https://www.columbiaspectator.com/spectrum/2019/11/
08/your-guide-to-the-makeover-at-the-columbia-makerspace/ Fonte:https://www.cie.auckland.ac.nz/newsroom/inno
vation-hub-and-maker-space/
3

Apoio

Ø O Arduino e a Cultura Maker


F A cultura maker vem tendo
grande crescimento devido à
popularização de sistemas de
prototipagem rápida como: Arduino,
Raspberry, ESP, dentre outros.
F Com um Arduino UNO, por
exemplo, mesmo pessoas com pouca
experiência em eletrônica e
programação podem se tornar makers,
criando projetos incríveis!

Fonte: By Unknown author - http://arduino.cc, Public Domain,


4 https://commons.wikimedia.org/w/index.php?curid=24588192

4
Apoio

Ø Cultura Maker (DIY)


F Além da (relativa) simplicidade para se usar, essas maravilhosas “plaquinhas”
contam com uma enorme quantidade de componentes, kits, módulos e
Shields que se comunicam facilmente com elas, aumentando enormemente
as possibilidades de uso.

F Dentre estes sistemas


de prototipagem, um
dos mais populares é
o Arduino UNO.
5

Apoio

Ø Conhecendo o Arduino
F Segundo o próprio site (https://www.arduino.cc/en/Guide/Introduction) do Arduino,
trata-se de uma plataforma de prototipagem eletrônica, open-source, que se
baseia em hardware e software flexíveis e fáceis de usar. Ou seja:
F É um equipamento adequado para o desenvolvimento de protótipos
eletrônicos. Várias ideias podem ser testadas antes de serem construídas de
forma definitiva.
F O Arduino é open-source. Todos os detalhes para construção de cada placa
Arduino foram amplamente divulgados. Qualquer um pode criar sua própria
placa Arduino.
F Embora a programação do Arduino seja essencialmente em linguagem C, um
conjunto de bibliotecas e arquivos de configuração são usados para criar a
chamada linguagem de programação Arduino, baseada na linguagem Wiring.
F Segundo o próprio site (http://wiring.org.co/): Wiring é uma estrutura
(framework) de programação de código aberto (open-source) especialmente
desenvolvidas para trabalhar com microcontroladores”.
6

6
Apoio

Ø O que é Arduino
F Qualquer um pode fazer seu próprio Arduino! E como já vimos, existe
uma grande variedade de modelos.
F Porém, a parte mais importante de um Arduino, “seu cérebro”, é seu
microcontrolador. No caso, um microcontrolador ATMega, da Atmel.
F Qualquer um pode fazer seu
próprio Arduino! E como já
vimos, existe uma grande
variedade de modelos.
F Porém, a parte mais
importante de um Arduino é
seu microcontrolador. No
caso, um microcontrolador
ATMega, da Atmel.
Fonte:https://aergiaee.wordpress.com/2014/09/01/aergia-
arduino-o-arduino-preguicoso-que-aguenta-12-meses-a-
7 pilhas/ Fonte:https://www.arduino.cc/en/Main/Standalone

Apoio

Ø Conhecendo o Arduino UNO


F O restante da placa é composto, principalmente, por circuitos de
alimentação, comunicação, segurança e pelos pinos (ou portas).
Alimentação USB
Externa

8 Fonte: https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf

8
Apoio

Ø Conhecendo o Arduino UNO


F É através dos pinos, ou portas, que uma placa Arduino se comunica com
elementos externos (componentes eletrônicos, kits, módulos e Shields), os
energizando, enviando e recebendo sinais eletrônicos.
F Podemos agrupar conjuntos de pinos, de acordo com suas funções.
F Os pinos de alimentação são:
F IOREF - Fornece uma tensão de referência, identificando
a tensão de funcionamento da placa (3,3V ou 5V).
F RESET - Conectado a pino de RESET do
microcontrolador, pode ser utilizado para um reset externo
Pinos de
da placa Arduino. Alimentação
F 3,3V - Fornece tensão de 3,3V para alimentação de shield e módulos externos.
Corrente máxima de 50 mA.
F 5V - Fornece tensão de 5V para alimentação de shields e circuitos externos.
F GND - pinos de referência, terra.
F Vin - pino para alimentar a placa através de shield ou bateria externa. Quando a placa
é alimentada através do conector Jack, a tensão da fonte estará nesse pino.

Apoio

Ø Conhecendo o Arduino UNO


F Além dos pinos de alimentação, a placa Arduino UNO conta com um
conjunto de pinos I/O, tanto digitais quanto analógicos
Pinos de Entradas e Saídas Digitais F São 14 pinos que podem ser usados
como entrada ou saída digitais,
trabalhando com dois níveis lógicos
(HIGH = 5V ou LOW = 0V).
F E 6 pinos que podem ser usados como
entradas analógicas, de 0 a 5V, com
uma resolução de 10 bits (0 – 1023).
F Contudo, os 6 pinos analógicos podem
ser usados como pinos de entrada ou
saída digital.
Pinos de Entradas Analógicas F E, 6 dos pinos digitais (3, 5, 6, 9, 10 e
Obs.: Alguns dos pinos também têm funções 11) podem ser usados com saídas
adicionais, como interrupção e comunicação. analógicas, gerando um sinal PWM de
10 8 bits (0 – 255)
10
Apoio

Ø Sinal PWM
F Neste momento do nosso curso,
pode ser interessante relembramos
como funciona um PWM (Pulse
Width Modulation).
F Alguns dos pinos do Arduino
(3,5,6,9,10 e 11, no UNO) podem
enviar um sinal PWM.

11

11

Apoio

Ø Dispositivos Periféricos: Componentes, Kits, Módulos e Shields

F Através dos pinos digitais e analógicos, podemos conectar “várias coisas”


à placa Arduino, desde componentes eletrônicos, como: resistores,
capacitores e díodos, até Shields, que são placas com funções especificas
e tamanho adequado para se encaixar sobre a placa do Arduino.

F Mas, como saber quando usar um pino digital ou analógico e se o pino


será usado como saída ou entrada?
F Precisamos entender a diferença entre:
F ‘Dispositivos’ de Entrada e de Saída; e,
F ‘Dispositivos’ Digitais e Analógicos.

12

12
Apoio

Ø Dispositivos de Entrada ou Saída


F A placa Arduino é o centro do projeto. Ela contém circuitos de alimentação,
segurança e comunicação. Mas, o mais importante! É na placa que está o
microcontrolador ao qual estamos programando.
F Então, quando pensamos em um dispositivo de entrada, estamos falando
de algo irá enviar um sinal para o Arduino. Um botão, um potenciómetro,
um sensor, algum dispositivo que, estando devidamente alimentado, ao
receber um certo estímulo irá produzir um sinal correspondente a este
estímulo e enviá-lo para “dentro” do Arduino.
F Portanto, os mesmos são considerado como sendo dispositivos de entrada.
F Ou seja, o Arduino deverá LER o sinal proveniente deles.

13

13

Apoio

Ø Dispositivos de Entrada ou Saída


F Por outro lado, existem dispositivos que precisam receber um sinal do
Arduino para reagirem de alguma forma.
F LEDs, Displays, Buzinas, motores e outros dispositivos irão funcionar de
acordo com os sinais que saem do Arduino e são enviados para eles.
F Para que um LED acenda ou apague, uma buzina emita som ou não, um
motor gire ou pare o Arduino precisa ESCREVER um sinal que será
enviado para eles.
F Tais dispositivos servem para que o Arduino envie informação, ou realize
ações.
F Por isso, são considerado como sendo dispositivos de saída.

14

14
Apoio

Ø Dispositivos de Entrada e Saída


F Existem também alguns dispositivos que funcionam tanto para entrada
quanto para saída.
F Existem vários exemplos deste tipo de dispositivo, módulos de
comunicação WiFi, Bluetooth, Ethernet e muitos outros.
F Um exemplo bem conhecido é a tela sensível ao toque (display
touchscreen).

15

15

Apoio

Ø Dispositivos Digitais ou Analógicos


F O termo: ‘digital’ se refere a existência de apenas dois estados possíveis. Por
exemplo: ligado ou desligado; 0 ou 1; Nível Alto (HIGH) ou Nível Baixo (LOW).
F Um rele é um dispositivo de saída que só pode assumir dois estados: Aberto
ou Fechado. Então, o Arduino só deverá enviar dois níveis de sinal para ele: 0
ou 1.
F Um LED, embora também possa simplesmente ligar e desligar, pode assumir
‘infinitas’ intensidades, desde totalmente apagado até totalmente aceso.

16

16
Apoio

Ø Dispositivos Digitais ou Analógicos


F Já os dispositivos analógicos estão associados ao conceito de continuidade, à
possibilidade da existência de infinitos (ou pelo menos um número muito
grande) estados possíveis entre os limites máximo e mínimo.
F Um botão, do tipo push button, é um dispositivo de entrada que só pode
enviar dois níveis lógicos para o Arduino. Se for acionado ele envia o sinal,
senão não envia nada.
F Já um potenciômetro pode enviar infinitos valores, entre um limite máximo e
um mínimo.

17

17

Apoio

Ø Programando o Arduino
F O microcontrolador na placa do Arduino UNO, o ATMEGA328, foi criado para
ser programado com a linguagem de programação Arduino, baseada na
linguagem Wiring (http://wiring.org.co/), usando o ambiente de
desenvolvimento integrado (IDE) própria do Arduino, que, por sua vez, é
baseado no ambiente Processing (https://www.processing.org/).
F Na verdade a linguagem de programação do Arduino é, essencialmente,
C/C++, acrescido de alguns comandos específicos para utilização das
funções dos microcontroladores.
F Quem já está habituado a programar, especialmente em C ou C++, não
deverá encontrar qualquer problema para programar um Arduino.
F Mas, mesmo para quem tem pouca experiência com programação, deverá se
familiarizar com a IDE do Arduino, e seus principais comandos, sem maiores
dificuldades.
18

18
Apoio

Ø Programando o Arduino
F O primeiro passo é fazer o download (gratuito) do arquivo de instalação da IDE,
em: https://www.arduino.cc/en/Main/Software.
F Porém, a IDE do Arduino foi
desenvolvida em Java. Então,
para instalar a IDE é
necessário já ter o Java
instalado e, de preferência,
atualizado.
F É possível verificar se há uma
versão instalada ou baixar,
gratuitamente, a versão mais
recente do java em:
https://www.java.com/pt_BR/
F Com o Java instalado, o próximo passo é instalar a IDE.
F Depois de instalar, é só abrir a IDE, usando um ícone ou atalho que tenha sido
19 criado, ou procurando o arquivo “arduino.exe”.
19

Apoio

Ø Programando o Arduino
F Com a IDE aberta é possível identificar 4 partes principais: Menu, Barra de
Ferramentas, Área, ou janela, do código e uma área de mensagens.
F Através do menu podemos realizar várias ações
relacionadas a própria IDE, aos programas,
configurações e muito mais.
F A barra de ferramenta traz atalhos para:
Verificar erros no programa aberto, Transferir o
programa para um Arduino conectado (Upload),
Criar novo programa, Abrir um programa
existente, Salvar o programa aberto e Abrir o
Monitor Serial.
F Na área do código podermos editar nossos
programas.
F E, a área de mensagens irá apresentar uma
série de mensagens (erros, compilação, upload
20
20
...), dependendo das configurações usadas.

20
Apoio

Ø Programando o Arduino
F No Menu podemos realizar várias ações. Cada opção do menu abre um
conjunto de novas opções.

21

21

Apoio

Ø Programando o Arduino
F No Menu podemos realizar várias ações. Cada opção do menu abre um
conjunto de novas opções.

22

22
Apoio

Ø Programando o Arduino
F Como já mencionado, a barra de ferramenta traz atalhos para:
Verificar erros no programa aberto
Fazer o Upload do programa
Criar novo programa
Abrir um programa existente
Salvar o programa aberto
Abrir o Monitor Serial

23

23

Apoio

Ø Programando o Arduino
F É na Área do código que escrevemos, e editamos, nossos programas.
F No contexto da programação do Arduino os programas, ou códigos
computacionais, são comumente chamados de SKETCH.
F Ao iniciar um novo sketch, com
duas funções, (void). São elas:
void setup() e void loop().
F A void setup() é executada uma
única vez, assim que o programa
começa a funcionar no Arduino.
F Já a void loop(), como o próprio nome sugere, fica sendo executada em
loop (infinito) até que o Arduino seja desligado, resetado ou tenha um novo
sketch carregado.
F Sendo assim, a void setup() conterá essencialmente comandos de
configuração daquilo que usaremos em nosso sketch. Mas, também poderá
conter alguns outros comando, que garantam que, quando a parte principal do
24 programa (void loop()) comece a rodar, esteja tudo conforme desejamos.
24
Apoio

Ø Programando o Arduino
F Na void loop() estará toda a lógica que desejamos implementar no Arduino.
F Há uma infinidade de comandos que podemos utilizar para fazer com que o
Arduino realize aquilo que queremos. Porém, com um pequeno conjunto de
comandos já conseguimos fazer muita coisa funcionar!
F Além destas duas partes principais,
existem outras partes comuns à
maioria dos sketchs.
F Antes mesmo da void setup()
podemos começar cada sketch com
um cabeçalho, um conjunto que
linhas do tipo comentário contendo
informações importantes sobre o
sketch que estamos criando.
F Em seguida, ainda antes da void setup(), devemos incluir as bibliotecas (se
for o caso) e definir as variáveis que usaremos.
F Por fim, em qualquer parte do código, que não seja dentro das void setup()
e void loop(), podemos criar outras funções (void).
25

25

Apoio

Ø Programando o Arduino
F No exemplo da imagem,
temos um exemplo de sketch
que faz um LED, existente na
própria placa Arduino, piscar.
F Primeiro temos alguns
comentários (entre: /* */).
F Depois, definimos 2
variáveis do tipo inteiras: int.
(https://www.arduino.cc/referen
ce/pt/)
F Daí, na void setup(),
configuramos o pino que será
usado como sendo de saída.
Pois usaremos ele para que o
Arduino envie (escreva) um
sinal para o LED.
F Por fim, na void loop(),
temos a lógica que desejamos
implementar.
26

26
Apoio

Ø Programando o Arduino
F Então, já usamos /* e */, para comentar
blocos inteiros, e //, para comentar uma linha
ou, no caso, um trecho dela.
F Também já definimos uma variável do tipo
inteira (integer), usando int, que, no Arduino
UNO tem resolução de 2 bytes. Ou seja,
armazena valores de -32,768 a 32,767 (-2^15
a (2^15 - 1)).
F Existem muitos outros tipos de dados que
podemos usar. Podemos saber mais em:
https://www.arduino.cc/reference/pt/.
F Configuramos um pino digital do Arduino
para funcionar como pino de saída, usando o
comando pinMode(PINO, MODO).
pinMode(PINO, MODO): Configura o modo como cada pino (digital) do Arduino será usado. Os
modos possíveis são: INPUT, OUTPUT ou INPUT_PULLUP, que correspondem, respetivamente, a:
entrada, saída e entrada com sistema de pull-up ativado.
OBS.: Os pinos digitais do Arduino UNO estão numerados de 0 a 13. Mas, podemos usar os
números
27 de 14 a 19 para configurar os pinos analógicos como pinos digitais.

27

Apoio

Ø Programando o Arduino
F Dentro da void loop(), por enquanto,
usamos apenas dois comandos.
F Primeiro usamos o comando
digitalWrite(PINO, VALOR) e em seguida
delay(MILIS). Repetindo duas vezes
essa sequência de comandos.
digitalWrite(PINO, VALOR) escreve um valor no pino selecionado. Como o próprio comando sugere
(digital) só podem ser enviados dois valores 0 (LOW => Nível Baixo = 0v) ou 1 (HIGH => Nível Alto = 5v).

delay(MILIS) provoca uma pausa na execução do sketch, correspondente à quantidade de


milissegundos passada ao comando como parâmetro (MILIS).

F O momento é oportuno também para conhecermos, um pouco, sobre um tipo de


dado muito usado na programação do Arduino. As constantes.
F HIGH e LOW, OUTPUT, INPUT e INPUT_PULLUP, são algumas das expressões
definidas na linguagem Arduino, com valores constates, para facilitar a programação e
tornar os sketches mais legíveis.
F Outras constantes são: FALSE, TRUE e LED_BUILTIN,
28

28
Apoio

Ø Usando Protoboards
F Porém, para experimentos mais interessantes, será sempre necessário criar
algum circuito eletrônico, usando componentes, kits e módulos.
F Uma forma prática e rápida de conectar todos esses dispositivos e
componentes entre si, bem como ao Arduino, sem precisar de soldas, é através
da utilização de uma protoboard (ou Matriz de Contatos ou Breadboard(inglês)).

29

29

Apoio

Ø Usando Protoboards
F A Protoboard, também conhecida como placa de ensaio, matriz de contato ou
breadboard (em inglês), é um equipamento que permite a prototipagem e teste
de circuitos eletrônicos sem a necessidade de soldar.
F Basta apenas ir “espetando” os componentes na protoboard.
F Com isso, é possível montar um circuito, realizar testes e, se necessário
substituir componentes da forma que desejar e só soldar o circuito em uma
placa definitiva quando tudo estiver testado e funcionando perfeitamente.
F Porém, existem algumas limitações e possíveis problemas, como a presença
de capacitâncias e indutâncias parasitas, resistências dos próprios contatos,
mau contato entre componentes e a protoboard, incapacidade de acomodar
circuitos integrados de montagem superficial (SMD) sem o uso de adaptadores.
F Por isso, na hora da montagem, certifique-se que tudo está bem preso em seu
devido lugar, isso pode economizar muitas horas de trabalho mais pra frente,
dependendo do tamanho do projeto que você está executando.

30

30
Apoio
Ø Usando Protoboards
F Uma protoboard consiste em um conjuntos de tiras de
metal condutivo embutidas em um encapsulamento de
material não condutivo, normalmente plástico.
F A disposição das tiras de metal condutivo podem ter
uma organização diferente em cada modelo de
protoboard.
F Mas, geralmente, existe uma certa quantidade de
colunas (numeradas) com 5 contatos cada. Podendo
haver, ou não, barramentos de alimentação.

31

31

Apoio
Ø Usando Protoboards
F Vamos analisar uma protoboard de 830 pontos (ou furos, ou contatos).
F Este modelo contém barramento de alimentação duplo (+ e -), formando
linhas, em cada lado da protoboard. Eles podem ser contínuos, de uma ponta
à outra da protoboard, assim teríamos 2 barramentos de alimentação.
F Ou podem apresentar um espaçamento, bem no meio dos barramentos,
indicando uma descontinuidade. Assim, teremos 4 barramentos de
alimentação distintos, permitindo usarmos, facilmente, 4 valores diferentes de
tensão em nosso circuito.
F O espaçamento central, entre as
fileiras de colunas, serve para o
encaixe de circuitos integrados
(Cis) e botões e outros
componentes.

32

32
Apoio
Ø Usando Protoboards
F É muito importante observar que cada conjunto de 5 contatos, partes superior
e inferior de uma coluna, representa um único nó de circuito. Por estarem
interligados, os 5 pontos estarão sempre o mesmo nível de tensão.
F Então, ligar, p.ex., os dois
terminais de um LED em pontos
de um mesmo conjunto de 5
contatos colocará esse LED em
situação de curto circuito.

F Mas, podemos usar a porção


inferior (pontos A, B, C, D, E)
para um terminal e a porção
superior, da mesma coluna
(pontos F, G, H, I, J) para o outro
terminal.
F Ou ainda, usar duas colunas
diferentes. Por exemplo, os
ERRADO CORRETO CORRETO pontos 5H e 8H
33

33

Apoio

Ø Nossa Primeira Montagem!


F Vamos “por a mão na massa”. Vamos usar
uma protoboard para montar um circuito com
a finalidade de ligar e desligar um LED,
alimentado por uma fonte de 5V, usando um
botão do tipo chave táctil (push button), para
permitir ou não a passagem da corrente.
F Por enquanto, vamos usar o próprio Arduino
UNO como sendo a fonte de 5V.
F Ainda não usaremos os pinos de entrada e
saída do Arduino. Consequentemente, não
estaremos usando seu microcontrolador. E,
não precisaremos programá-lo. Por enquanto!
F Porém, é importante notar que no diagrama
esquemático do circuito, além dos
componentes citados, aparece também um
Resistor de 220W.
F Para entendermos a necessidade de usarmos
esse resistor, precisamos conhecer um pouco
mais sobre os LEDs.
34

34
Apoio

Ø Conversando Sobre LEDs


F O LED é um importante componente eletrônico, cujo funcionamento se baseia
no principio dos semicondutores. Ou seja, os LED são construídos a partir de
uma junção de dois matérias semicondutores, sendo um denominado por P e o
outro por N. Assim como nos componentes eletrônicos chamados Diodos.
F Não vamos entrar em detalhes sobre os materiais semicondutores, nem sobre
os princípios por trás das junções de tais materiais. É importante sabermos que
essa é a base de toda eletrônica moderna.
F Por hora, só precisamos saber que esta
junção de semicondutores P-N, usada nos
LEDs, tem a capacidade de transformar
energia elétrica em luz.
F Ou seja, os LEDs emitem luz quando uma
corrente elétrica circula por entre seus
terminais.
F Por isso, esses componentes são
chamados de Diodos Emissores de Luz.
Ou, em inglês: Light Emitter Diode => LED.
35

35

Apoio

Ø Conversando Sobre LEDs


F Dependendo dos materiais semicondutores utilizados, os Cor- LED Tensão (V)
eletrões precisarão dar um “salto de tamanho diferente”, Típica: 1,8
Amarelo
emitindo luz em um espectro diferente (cores diferentes). Máxima: 2,3

Típica: 1,8
Laranja
F Além de ter cores diferentes, LEDs construídos a partir de Máxima: 2,3

Típica: 1,8
materiais diferentes irão suportar níveis de tensão diferentes. Vermelho Máxima: 2,3

Típica: 3,2
F Por exemplo, os LEDs de 5mm, que normalmente usamos, Rosa Máxima: 3,4

suportam tensões entre 1,8V e 3,4V, dependendo da cor. Branco


Típica: 3,2
Máxima: 3,4

F Por isso, quando usamos LEDs em circuitos cuja a Verde


Típica: 3,2
Máxima: 3,4
alimentação está em níveis de tensão superiores aos limites Típica: 3,2
Azul
suportados pelos LEDs, precisamos garantir que o LED não Máxima: 3,4

Típica: 3,2
receba uma tensão acima de seu limite operacional. Senão UV
Máxima: 3,4

podemos queimar o LED.

36

36
Apoio

Ø Conversando Sobre LEDs e Resistores


É para isso que serve o Resistor!
F
F Mas, como saber qual valor de resistor usar?
F Sabendo que ao ligar o resistor e o LED em série a tensão
fornecida a este ramo do circuito será dividida
proporcionalmente, entre eles: Valimentação = Vresistor + VLED;
F Sabendo também que o valor da resistência
é calculado dividindo-se a tensão no resistor

Fonte: Porw:en:user:Adam850-w:en:Image:Led2.PNG,Domíniopúblico,
pela corrente na malha, no caso, a corrente

https://commons.wikimedia.org/w/index.php?curid=1849185
𝑉!"#$%&'!çã* − 𝑉+,- fornecida por um pino do Arduino, podemos
𝑅=
𝐼 determinar que resistor deve ser usado para
cada LED e cada Fonte.
F Não é só uma tensão errada que pode queimar um LED. Esse
tipo de componente precisa ser ligado com a polaridade correta.
Senão, também poderá queimar.
F Se o LED for novo, deverá ter um terminal (perninha) maior que
o outro. O terminal mais comprido é o Ânodo (+) e deve ser
ligado ao Vcc (+) do circuito. Logo, o terminal curto é o Cátodo
37 (-) e deve ser ligado ao GND (-) do circuito.

37

Apoio

Ø Conversando Sobre Resistores


F O LED e o Resistor precisam estar em série. E, na prática, acaba não fazendo
muita diferença se o Resistor for ligado ao Ânodo (+) ou ao Cátodo (-) do LED.
F Porém, geralmente, a teoria recomenda ligar o Resistor ao Ânodo (+) do LED, e
então ao barramento positivo (Vcc).
F Uma vez determinado o valor de
resistência necessária, precisamos
determinar que resistor usar. Fonte: By Olli Niemitalo -
{www.danotherm.dk}, CC0,
F Existe uma relativa variedade de https://commons.wikimedia.org/w/inde
x.php?curid=27187147
modelos dos chamados resistores
de valor fixo: constituídos de carvão,
filme metálico, filme carbono, fio de
precisão, entre outros.
F Além de modelos e valores de
resistência, existem resistores
apropriados para diferentes
potências (P = V.i) Fonte: By Shaddack - Own work, CC
F Também existe relativa variedade de BY-SA 3.0,
https://commons.wikimedia.org/w/inde
resistores de valor variável. Mas, isso é x.php?curid=6733316
38 assunto para outro momento.
38
Apoio

Ø Conversando Sobre Resistores


F Em circuitos eletrônicos, são comumente utilizados resistores de filme
metálico/carvão. E, para a maioria das aplicações com Arduino, ¼ de Watts é a
potência mais adequada.
F Uma vez determinado o valor de
resistência necessária, precisamos
determinar que resistor usar.
F Os resistores comerciais, comumente,
têm seu valor de resistência
determinado por um sistema de cores
em um conjunto de faixas ou bandas.
F Existem resistores de 4, 5 e até,
embora seja mais raro, 6 bandas.
F A quantidade de bandas, de certa
forma, pode ser vista como um
indicador de qualidade do resistor.
A 6ª banda indica o coeficiente de temperatura.
39

39

Apoio

Ø Conversando Sobre Resistores


F Nos resistores de 4 5 bandas , uma delas fica mais afastada das demais. Ela
representa a tolerância para o valor da resistência. Ou seja, um resistor de
100W, com tolerância de ±5%, pode, na prática, medir entre 95W e 105W.
F As outras bandas, começando do
lado oposto à tolerância, vão
representar o valor da resistência.
F Veja, no exemplo da imagem, um
resistor de 4 bandas com as
seguintes cores: Marrom, Preto,
Vermelho e (tolerância) Dourada.
F A banda Marrom representa o
dígito: 1.
F A banda Preta representa o dígito:
0, formando um: 10.
F A banda Vermelha representa o
multiplicador: 100.
F Então o valor é de: 10 x 100 =
1000W ou 1KW ±5%.
40

40
Apoio

Ø Chave Táctil de 4 Contatos


F Agora, que já conhecemos melhor o funcionamento do Arduino, da Protoboard,
do LED e do resistor, só falta entender o funcionamento da chave táctil antes de
começarmos a montagem do circuito.

F Como podemos observar nas imagens, os terminais 1 e 2, bem como os


terminais 3 e 4 estão naturalmente conectados.
F Ao pressionarmos o botão, momentaneamente, fechamos o contato entre o par
de terminais 1 e 2 com o outro par (3 e 4).
F Se, no momento de motar o circuito, tivermos dificuldade em identificar a
posição (1, 2, 3 ou 4) dos terminais da chave táctil, uma dica é fazer a
montagem do circuito usando terminais cruzados.
F Assim garantimos que estaremos usando os terminais 1 e 4 ou 2 e 3.
41

41

Apoio

Ø Voltando à Nossa Primeira Montagem!


F Uma vez que já conhecemos um pouco sobre cada
um dos componentes que usaremos em nosso
circuito, podemos proceder a sua montagem.

F Para realizar a 1 Arduino UNO;


montagem de um 1 Protoboard (830 furos);
protótipo de circuito em
uma protoboard, 1 LED (Vermelho)
começamos separando 1 Resistor 220W (¼W);
todos os componente 1 Chave táctil (push button)
que usaremos. Vários Jumpers (fiozinhos)
42

42
Apoio

Ø Voltando à Nossa Primeira Montagem!


F Com todo material separado, podemos começar a
montagem usando 2 jumpers para ligar os pinos de
5V e GND do Arduino aos barramentos de
alimentação (+ e -, respetivamente) da protoboard.

F Depois, podemos colocar a chave táctil na protoboard, posicionando-a bem no


centro, onde temos aquele espaçamento central. E já podemos usar um jumper
para conectar um dos terminais da chave ao barramento negativo.
F Em série com terminal diagonalmente oposto da chave táctil, conectaremos o
resistor de 220W.
F Como Resistores são componentes eletrônicos que não tem polaridade
específica, é suficiente conectar cada um de seus terminais em uma coluna
diferente da protoboard.
43

43

Apoio

Ø Voltando à Nossa Primeira Montagem!


F Podemos observar no diagrama esquemático do
circuito que o LED está ligado em série com o
resistor, como já aprendemos que deve ser feito.
F Então, vamos ligar um dos terminais do LED na
mesma coluna na qual o terminal livre do resistor
está ligado.
F Porém, como já vimos, o LED é um dos
componentes eletrônicos que tem polaridade certa
para sua ligação.
F Observando que o resistor está em série com a
chave táctil que, por sua vez, está ligada ao
barramento negativo da protoboard.
F Portanto, o terminal negativo (mais
curto) do LED deve ser ligado na
mesma coluna do terminal do resistor.
F Por fim, o outro terminal (mais
cumprido) do LED é ligado em outra
coluna da protoboard que, por sua vez,
usando um jumper, deve ser ligada ao
44 barramento positivo.
44
Apoio

Ø Nossa Primeira Montagem!


F Se tudo foi montado corretamente, temos um circuito onde apertando o botão,
fazemos o LED ascender. Mas, não estamos usando o Arduino como
microcontrolador. Apenas como uma fonte de 5V (quase como 4 pilhas AA).

45

45

Apoio

Ø Agora, Realmente usando o Arduino!


F Primeiro vamos fazer um resumo de algumas coisa importantes sobre as quais
já conversamos:
F Em nossa primeira montagem, vimos:
F Como usar uma protoboard, tomando cuidado para evitarmos curto-circuitos;
F Como ligar uma fonte de alimentação ao barramento de alimentação da protoboard,
para fornecer, facilmente, energia a todas as partes do nosso circuito;
F Como usar um LED, identificando os polos (+) e (-) do LED e determinando o valor
do Resistor que deve ser ligado em série com o LED para que ele suporte a tensão
de alimentação;
F Como usar resistores e chaves tácteis.
F Antes disso, já havíamos visto:
F Como usar a IDE para programar Arduinos;
F Como está estruturado um sketch;
F Alguns comandos importantes.
F Então, juntando todo esse conhecimento, vamos usar o microcontrolador do
Arduino para fazer a mesma coisa da nossa primeira montagem.
46

46
Apoio

Ø Agora, Realmente usando o Arduino!


F Em nossa primeira montagem, tínhamos simplesmente um circuito elétrico, no
qual, fechando uma chave, permitimos que a corrente circulasse, alimentando o
LED, e consequentemente ligando-o.
F Para fazermos isso de maneira microprocessada, usando uma placa Arduino,
teremos que ligar chave táctil e o LED (com resistor) a pinos do Arduino.
F Note que é como se passarmos a ter dois subsistemas, um para a chave e outro
para o LED, porém, ambos ligados a um dispositivo em comum, o Arduino.
F Neste contexto, para garantir o bom funcionamento da chave táctil, vamos fazer
uma montagem um pouco mais elaborada, com um resistor de pull down.

47

47

Apoio

Ø Programando o Arduino
F Seguiremos a estrutura que já conhecemos para edição do sketch.
F Começaremos com um bloco de comentários, contendo uma descrição do sketch.
F Em seguida, definiremos as variáveis necessárias (nesse caso os 2 pinos usados).
F Depois, configuraremos os pinos de entradas (INPUT) e saídas (OUTPUT).
F Por fim, na void loop(), implementamos a lógica desejada. Onde usaremos dois
novos comandos: digitalRead(PINO) e if...else.

48

48
Apoio

Ø Programando o Arduino
F Primeiramente, precisamos ter um ideia bem clara de qual é a lógica que queremos
implementar. Ou seja, o que queremos que nosso sistema faça.
F Queremos que o Arduino saiba (receba/leia) se o botão está pressionado (sinal alto)
e, então, ligue (envie/escreva um sinal alto para) o LED. Caso contrário, se o botão não
estiver pressionado, o Arduino (envie /escreva um sinal baixo para) desliga o LED.

F Então, a primeira coisa é testar se o botão está pressionado. Para isso, precisamos
ler o sinal digital que chega ao pino ao qual o botão está ligado. Fazemos isso usando o
comando: digitalRead(chavePin).
F Se o valor lido for alto (HIGH ou
1), pela forma como montamos
nosso circuito, significa que o
botão está pressionado.
F Para realizarmos este teste (este SE), usaremos um comando classificado como
CONDICIONAL: o comando if (condição) {comandos}. Se a condição for satisfeita todos
os comandos entre chaves {comandos} serão executados. Porém, se a condição não for
satisfeita, todos esses comandos serão desconsiderados.
49

49

Apoio

Ø Programando o Arduino
F Se quisermos executar um outro conjunto de comandos caso a condição do
comando if NÃO seja satisfeita, devemos o usar o comando else {comandos}, como
complemento do if.
F Se, para você, parece que o
comando complementar else é
desnecessário, podemos testar
comentar esse bloco e ver como nosso
experimento funciona sem o else.
F Uma coisa interessante sobre o comando if (condição) {comandos} é que seu
resultado é uma expressão lógica (verdadeiro-TRUE ou falso-FALSE). Então, se
desejamos testar se a condição é TRUE ou ou, simplesmente 1, nem precisamos digitar
a parte == TRUE ou == HIGH.
F Podemos apagar o == HIGH do
comando if para verificar se tudo
continua funcionando como desejado.

50

50
Apoio

Ø Aprimorando o Experimento
F O dispositivo de entrada utilizado no experimento é uma chave táctil comum, sem
retenção. Então, da forma como montamos nosso circuito, quando a pressionamos
obtemos um nível alto na leitura do pino digital do Arduino. Mas, assim que a soltamos
passamos a ter uma leitura de nível baixo.
F Como poderíamos refazer a lógica do nosso sketch para não precisarmos ficar
segurando o botão para que o LED fique ligado?
F Poderíamos pressionar uma vez para ligar e outra vez para desligar (e assim por
diante).

51

51

Apoio

Ø Aprimorando o Experimento
F Uma possibilidade é usarmos uma ‘flag’, uma variável que nos auxiliaria a inverter o
estado do LED (Ligado ou Desligado) cada vez que o botão é pressionado.

F O novo sketch traz três novidades:


F A primeira é a utilização de uma nova variável: estado. Lembrando que toda
variável precisa ser devidamente definida.
F A segunda é a utilização do operador lógico de negação (!) para inverter o
valor da variável entre LOW e HIGH.
F A terceira é, simplesmente, usar uma variável no lugar do valor enviado pelo
52 comando digitalWrite(PINO, VALOR). Até agora, só havíamos usado constantes.
52
Apoio

Ø Usando Entradas e Saídas Analógicas


F Usando um dispositivo de entrada digital, a chave táctil, e um LED como dispositivo
de saída digital, apenas ligado ou desligado, tivemos a oportunidade de usar, além de
outros, os comandos : pinMode(PINO, MODO), digitalRead(PINO) e
digitalWrite(PINO, VALOR).
F Para utilizarmos dispositivos analógicos, o procedimento de programação é muito
parecido. Mas, no lugar de digitalRead(PINO) usamos analogRead(PINO) e no lugar
de digitalWrite(PINO, VALOR) usamos analogWrite(PINO, VALOR).
F Algumas diferenças que merecem destaque:
F Os pinos A0 – A5, quando usados como entrada analógica, não precisam ser
configurados com o comando pinMode;
F Mas, os pinos 3, 5, 6, 9, 10 e 11, mesmo quando usados como saída analógica (PWM)
precisam ser configurados como saída: pinMode(PINO, OUTPUT).
F O comando digitalRead(PINO) retorna apenas dois valores possíveis LOW(0) ou
HIGH(1). Porém, o comando analogRead(PINO) pode retornar qualquer inteiro entre 0 e
1023 (resolução de 210);
F Analogamente, enquanto no comando digitalWrite(PINO, VALOR), o campo VALOR só
pode enviar dois valores possíveis LOW(0) ou HIGH(1), no comando analogWrite(PINO,
VALOR), pode ser enviado qualquer valor inteiro entre 0 e 255 (resolução de 28).
53

53

Apoio

Ø Usando um Potenciômetro
F Um potenciômetro pode ser utilizado como um dispositivo de entrada analógica.
F Trata-se de um resistor variável que, quando submetido a níveis diferentes de
tensão em seus terminais fixos, p.ex.: 0V e 5V, funcionará como um divisor de tensão,
apresentando no terminal do cursor uma tensão, entre 0V e 5V, conforme o cursor é
girado de um lado até o outro.

54

54
Apoio

Ø Brincando com Potenciômetros


F Um potenciômetro
pode ser usado
simplesmente com um
resistor. Podendo ser
variável ou, até mesmo
fixo.
F Ou pode ser usado
como dois resistores,
formando um divisor de
tensão.
F Quando usamos um
potenciômetro como
divisor de tensão,
podemos controlar a
relação entre os valores
dos dois lados (2
resistores), obtendo a
tensão que precisamos
no terminal cursor.
55

55

Apoio

Ø Um Pouco Mais Sobre Divisor de Tensão


F Um divisor de tensão consiste em, pelo menos, dois resistores associados em série
num circuito elétrico, dimensionados para se obter, como tensão de saída, uma dada
fração da tensão de entrada.
F Um divisor composto por apenas dois resistores terá 3 terminais: Vin, Vout e GND.
F Mas, também é possível construir um divisor de tensão com vários estágios, usando
diversos resistores. Assim, teríamos diversos terminais Vout, fornecendo diferentes
valores de tensão.
F Outra opção é usar um elemento
resistivo contínuo, com diferentes (infinitos)
pontos de contato para o terminal Vout.

56

56
Apoio

Ø Usando um Potenciômetro
F Voltando a falar sobre a utilização de potenciômetros como
dispositivos de entrada analógica, vamos usar um modelo linear de
10KW (B10K).
F Os terminais fixos deverão ser conectados aos barramentos de
alimentação da protoboard, um lado ao barramento negativo (GND /
0V) e o outro lado ao barramento positivo (Vcc / 5V).
F O terminal do cursor, terminal do meio do potenciômetro, será
ligado a uma entrada analógica do Arduino, como p.ex. o A0.

57

57

Apoio

Ø Programando o Arduino
F Vamos salvar nosso último sketch com novo nome e então editá-lo, criando nosso
terceiro sketch.
F Como sempre, começaremos atualizando o bloco inicial de comentários,
acrescentando informações sobre a utilização do potenciômetro.
F Depois criaremos uma variável para definir o
pino analógico A0 como sendo o pino onde
conectaremos o potenciômetro.
F Lembrando que os pinos analógicos, quando
usados para realizar um leitura analógica, não
precisam se configurados como pino de entrada.
F Por isso, não precisaremos fazer nenhuma
mudança na void setup().
F Por fim, a void loop() terá algumas
alterações:
F Precisamos, entre outras mudanças, realizar a
leitura do potenciómetro, calcular o valor do PWM
e enviar o PWM para o pino que aciona o LED.

58

58
Apoio

Ø Programando o Arduino

59

59

Apoio

Ø Programando o Arduino
F A leitura do sinal que vem do potenciômetro é feita pelo comando
analogRead(PINO).
F É importante lembramos que os pinos do Arduino UNO, entradas e saídas digitais e
analógicas, aceitam uma tensão máxima de 5V.
F Então, se os terminais fixos do potenciômetro estão ligados no barramento de
alimentação da protoboard, que por sua vez está alimentado pelos pinos 5V e GND(0V)
do Arduino, então o pino analógico ao qual o terminal cursor do potenciômetro está
conectado irá receber uma tensão entre 0V e 5V, conforme giramos o cursor.
F Com uma resolução de 210 bits, o comando analogRead(PINO) retornará o valor 0
quando o pino receber 0V e 1023, quando o pino receber 5V.

60

60
Apoio

Ø Programando o Arduino
F Porém, enquanto as entradas analógicas têm uma resolução de 210 bits (0 - 1023),
as saídas analógicas, através de sinal PWM, têm uma resolução 4 vezes menores, de
28 bits (0 - 255).
F Então, simplesmente dividindo o retorno do comando analogRead(PINO) por 4, já
obtemos um valor compatível com o parâmetro do PWM, que usaremos no comando
analogWrite(PINO, VALOR), para ajustar a luminosidade do LED.
F Além disso, precisamos fazer uma pequena mudança na lógica de acionamento do
LED.
F Se a variável ‘estado’ receber um valor LOW, desligamos o LED usando o comando
digitalWrite. Caso contrário, ligamos o LED usando um sinal PWM.

61

61

Apoio

Ø Nossa Segunda Montagem!

62

62
Apoio

Ø Um LED é Legal! Três São Muito Mais!!!


F Para incrementar um pouco mais nosso experimento, vamos trabalhar com 3 LEDs.
F Cada vez que a chave táctil for pressionada, deverá mudar qual LED ficará ligado.
F Vamos considerar 4 situações possíveis: 1. Todos os LEDs desligados, 2. Apenas o
LED vermelho Ligado, 3. Apenas o LED Amarelo Ligado, e 4. Apenas o LED verde
Ligado.
F O potenciômetro continuará sendo usado para definir a intensidade dos LEDs.
Sendo a mesma intensidade para todos.

63

63

Apoio

Ø Programando o Arduino
F Novamente, vamos salvar
nosso último sketch com novo
nome e então editá-lo, criando
nosso quarto sketch.
F Como sempre, começaremos
atualizando o bloco inicial de
comentários, acrescentando
informações sobre a utilização dos
2 novos LEDs e Resistores.
F A partir do próximo exemplo,
não apresentaremos, nem
descreveremos, as novas
alterações no cabeçalho inicial de
comentários, sobre a descrição
dos sketchs.
F Porém, gostaríamos de
ressaltar, novamente, a
importância de se gastar um certo
tempo para comentar bem cada
código que desenvolvemos.
64

64
Apoio

Ø Programando o Arduino
F Podemos observar que nosso
sketch está começando a ficar
grande.
F Existe uma grande quantidade
de técnicas de programação que
podemos usar para deixar nossos
códigos “mais enxutos”, mais
eficientes e, porque não dizer, mais
elegantes.
F Notem que existe um conjunto
de 3 comandos que se repetem 4
vezes em nosso sketch, mudando
apenas seus parâmetros.
F Isso nos dá uma excelente
oportunidade para começarmos a
conversar sobre a criação e
utilização de FUNÇÕES (VOID).
65

65

Apoio

Ø Programando o Arduino
F Mas, primeiro, vamos entender o novo sketch.
F Agora, estamos usando 3 LEDs, então vamos definir 3
pinos, só para os LEDS. Fora o potenciômetro e o botão.
F Também precisamos definir esses 3 pinos como saída.
F Daí, temos a nova lógica.
F Agora, temos 4 estados possíveis, e não apenas 2 como
anteriormente.
F Por isso, não adiante ficar apenas trocando o valor da
variável entre 0 e 1. Em vez disso, incrementamos o valor da
variável em 1, cada vez que a chave táctil é pressionada.
F Assim, conforme o valor da variável ‘estado’ vai
aumentando ativamos uma das quatro configurações
possíveis. Até chegar em 4, quando o valor é retornado à 0.

66

66
Apoio

Ø Programando o Arduino
F Podemos fazer exatamente a mesma coisa, porém usando uma função para evitar
a repetição de conjuntos de linhas de comando.
F Vamos criar uma função, usando o comando VOID, chamada ligaLEDs().

F Nossa função terá 3


parâmetros, que
chamaremos de r, y, g,
referentes ao valor
enviado pelo comando
analogWrite(PINO, VALOR),
para os LEDs vermelho,
amarelo e verde.
F Daí, cada vez que
desejarmos mudar a
configuração de
acendimento dos LEDs,
basta chamarmos nossa
função, passando o 3
parâmetros desejados:
ligaLEDs(vR, vY, vG)
67

67

Apoio

Ø Programando o Arduino
F Então, usando nossa função , no lugar de:

F Temos, simplesmente:

F Assim, como já foi dito, o código fica mais organizado e eficiente.


F Podemos, facilmente, acrescentar novas combinações, aumentando o número de
estados possíveis.
F Por exemplo, poderíamos acrescentar um estado onde todos os LEDs ficassem
ligados ao mesmo tempo. Ou, entre desligar um LED e ligar o próximo, poderíamos
acrescentar estados de transição, onde os dois LEDs ficassem ligados.
F Para isso, basta chamar a nossa função, passando para ela os parâmetros que
desejarmos.
Além de receber parâmetros, uma função também pode RETORNAR valores. Mas, isso é
assunto para outro momento do curso.
68

68
Apoio

Ø Nossa Terceira Montagem!


Obs.: Usaremos os resistores ligados aos Cátodos dos LEDs. Pois, nesta montagem, a posição do
resistor em relação ao LED não traz qualquer implicação prática.

69

69

Apoio

Ø Usando um Resistor Dependente de Luz (LDR)


F Já sabemos que existem
vários tipos, tanto de
resistores de valor fixo,
quanto de resistores de valor
variável.
F Também já conhecemos
um tipo de resistor variável:
O Potenciômetro.
F Conhecemos como ele é
construído, como funciona e F Outro tipo de resistor de valor variável é o Resistor
aprendemos como usá-lo Dependente de Luz
com um Arduino.
F O LDR (Light Dependent Resistor) é um componente
muito interessante, no qual a resistência varia conforme
a luz incide sobre ele.
F Ele possui, em sua parte superior, um material
semicondutor que possui uma resistência elétrica
elevada, podendo ultrapassar 100MW, quando não há
incidência de luz sobre ele. Porém, com a incidência de
luz a resistência diminui, tendendo à se aproximar de
70
100W, para uma incidência muito forte de luz.
70
Apoio

Ø Como Funciona um LDR


F O material semicondutor do LDR, por ser de alta resistência,
impede que os elétrons passem de um terminal para o outro.
F Mas, conforme incide luz sobre ele, a resistência diminui,
permitindo a passagem dos elétrons.
F Porém, O LDR não é sensível a uma grande variedade de
ondas eletromagnéticas. Na verdade, a faixa que ele melhor opera
é o espectro de luz visível, especificamente, luz do dia.
F Enquanto um potenciômetro, por sua própria construção,
implementa naturalmente um divisor de tensão, um LDR
apresenta um único valor de resistência entre seus dois terminais.
F Ainda que possa variar a resistência com a
incidência de luz, a montagem do LDR em um circuito
é semelhante a de um resistor de valor fixo. Ele não
tem polaridade especifica e pode ser usado como
sendo um dos resistores de um divisor de tensão.
F Assim, para uma alimentação constante (p.ex 5V),
obtemos uma tensão de saída em função da
71 luminosidade que incide sobre o LDR.
71

Apoio

Ø Como Funciona um LDR


F Note que, em um circuito como o da figura, sendo
alimentado pelos 5V do Arduino (vcc = 5V) e usando
um resistor fixo R1 = 1kW = 1.000W, considerando
ainda uma condição de extrema luminosidade,
situação em que teríamos a resistência do LDR em,
aproximadamente, RLDR = 100W.
F Utilizando a equação do divisor de tensão, podemos calcular que o pino analógico
A0 receberia uma tensão vout = 4,5V, correspondendo a uma leitura analógica de ≅ 931.
F No outro extremo, para uma situação de total escuridão, podemos considerar que a
resistência do LDR chegaria a, aproximadamente, RLDR = 100MW = 100.000.000W.
F Assim, teríamos uma tensão de saída de vout ≅ 5x10-5V = 0V, correspondendo a
uma leitura analógica de, aproximadamente, 0.
F Se no lugar de um resistor fixo R1 = 1kW, usarmos um resistor de R1 = 10kW, a
leitura mínima, em total escuridão, continua sendo zero. Mas, a leitura máxima se
aproxima de vout = 4,95V, correspondendo a uma leitura analógica de cerca de 1014.
72

72
Apoio

Ø Um Novo Experimento (Mas, Nem Tanto!)


F Vamos realizar um novo experimento. Mas, utilizando parte do circuito já montado.
F Em nossa quarta montagem, vamos, simplesmente, substituir o potenciômetro por
um divisor de tensão, com um sensor LDR e um resistor de 10KW.
F Vale destacar que o
LDR não apresenta uma
resposta imediata às
mudanças na incidência
de luz, podendo demorar
alguns milissegundos
para detectar tais
mudança de ambiente.

F Outra observação importante é que,


como vimos anteriormente, o valor do
resistor fixo influencia no comportamento
da resposta do LDR, uma vez que, juntos,
formam o divisor de tensão.
73

73

Apoio

Ø Programando o Arduino
F Com relação ao sketch para utilização
do potenciômetro, este novo sketch precisa
de pouquíssima modificação.
F Apenas, mudamos o nome da variável
potPin por ldrPin., nas 2 linhas onde essa
variável aparece.

74

74
Apoio
Ø Aprimorando Nosso Sketch
F Como é muito difícil, em um ambiente comum, obter tanto a incidência máxima de
luz sobre o LDR, quanto a absoluta ausência de luz, acabamos não conseguindo enviar
ao pino analógico do Arduino valores nem tão próximo dos 5v, nem tão pouco de 0V.
F Consequentemente, não conseguimos valores da leitura do pino analógico tão
próximas dos limites de 0 e 1023.
F E, como estamos, simplesmente, dividindo a leitura analógica por 4 para obter o
valor do sinal PWM a ser enviado para os LEDs, podemos não conseguir nem iluminar
totalmente, nem desligar totalmente, os LEDs.
F Mas, como podemos saber que valores estamos obtendo?
F Já conversamos sobre o Monitor Serial da IDE do Arduino! Então, vamos usá-lo!!
F Para começarmos, precisaremos de apenas 2 comandos:
Serial.begin(baudrate) e Serial.println(MSG):

Serial.begin(baudrate) é o comando usado para inicializar e configurar a comunicação serial entre a


placa Arduino e o Monitor Serial da IDE do Arduino, no computador. O valor de Baud Rate deve ser
o mesmo no comando e na janela do Monitor Serial.
Serial.println(MSG) é o comando usado para imprimir uma mensagem (MSG) no Monitor Serial da
IDE do Arduino, no computador. Se usarmos a variante Serial.print(MSG) a próxima mensagem
será impressa ao lado da anterior. Se usarmos a variante Serial.println(MSG) acrescentamos um
quebra de linha e a próxima mensagem será impressa abaixo da anterior.
75

75

Apoio

Ø Aprimorando Nosso Sketch


F Então, acrescentamos duas novas linhas ao nosso sketch:

76

76
Apoio

Ø Aprimorando Nosso Sketch


F Com isso, podemos monitorar os valores que as variáveis podem assumir durante a
operação do nosso circuito.
F Mas, para sabermos de quanto a quanto a leitura do pino analógico varia, vamos
reescrever nosso sketch, separando a leitura do pino analógico do cálculo do PWM.
F Também vamos imprimir ambas as variáveis no Monitor Serial.

F Assim, podemos monitorar estas variáveis, possibilitando a verificação dos valores


máximos e mínimos que elas assumem.
F Dependendo a iluminação do ambiente onde estamos e da fonte de luz que
dispomos (flash da câmera do celular) para simular um aumento da incidência de luz
sobre o sensor LDR, esses valores podem variar.
F Supondo, p. ex., que o valor
77

77

Apoio

Ø Aprimorando Nosso Sketch


F Suponha, p. ex., que o valor mínimo da variável valLDR fique (oscilando) pouco
abaixo de 70, quando o máximo de incidência de luz for obtido e fique (oscilando)
pouco acima de 800, com mínimo de incidência de luz sobre o LDR.
F Podemos melhorar a estabilidade das leituras, usando comandos IF para impor
saturação aos limites da variável.

F A leitura do LDR, através do pino analógico, deverá ficar bem melhor assim.
F Porém surgi um problema com a variável valPWM. 800 divido por 4 é 200, um pouco
longe dos 255 máximos do PWM. Além disso, o inteiro mais próximo de 70/4 é 17, que
não desliga totalmente os LEDs.
78

78
Apoio

Ø Aprimorando Nosso Sketch


F Simplesmente dividir valLDR por 4 já não fornece uma boa aproximação para o
valor do PWM.
F Hora de conhecer um novo comando:
paraVal = map(deVal, deMenor, deMaior, paraMenor, paraMaior);
F O comando map faz a conversão de uma variável deVal, contida entre os limites
[deMenor, deMaior], para uma outra variável paraVal, com os novos limites
[paraMenor, paraMaior].
F Assim, não precisamos ficar encontrando formulas para regras de três!
F Em nosso sketch, usamos o comando map para converter a variável valLDR, que
pode assumir valores entre 70 e 800, para a variável valPWM, entre 0 e 255.

F Assim, garantimos que, sob uma baixa iluminação, o Arduino ilumine o LED ao
máximo, com um PWM de 255, e com alta incidência de luz sobre o LDR, o LED será
completamente desligado, com parâmetro 0 no PWM.

79

79

Apoio

Ø Uma Nova Experiência (Divertida!)


F Vamos tentar algo um pouco diferente!
F Já nos divertimos usando 1 potenciômetro, como dispositivo analógico de entreda, e
3 LEDs, como dispositivos analógicos de saída.
F Agora, vamos montar um circuito usando 3 potenciômetros e 1 único LED.
F Só que, o LED que usaremos é um LED RGB!
F Mas, antes de começarmos a montar o novo circuito, precisamos desmontar o
circuito que estamos usando atualmente,
F Tão importante quanto os cuidados para montar os protótipos dos nossos circuitos,
é o cuidado para desmontá-los!
F Remover os jumpers e componentes tanto do Arduino, quanto da protoboard com
cuidado, suavidade e delicadeza garantirá que não quebremos nada!
F Além disso, ajudará a aumentar a vida do Arduino, da Protoboard e até de alguns
componentes, evitando que casemos folgas nos contatos.

80

80
Apoio

Ø Uma Nova Experiência (Divertida!)


F Agora, vamos separar o material que precisamos.

1x Arduino (UNO);
1x Protoboard (830);
1x LED RGB;
3x Resistores 220W;
3x Potenciômetros;
(linear de 10KW)
Vários Jumpers M-M.

81

81

Apoio
Ø Sobre LED RGB
F A novidade em nosso novo experimento é a utilização de um LED do tipo RGB.
F Então precisamos conhecer um pouco mais sobre este tipo de LED.
F Um LED RGB pode ser entendido como sendo 3 LEDs, um vermelho, um
verde e um azul, todos em um mesmo encapsulamento.
F Ou seja, temos 3 diferentes junções de materiais semicondutores, cada
uma com seus próprios terminais, 3 ânodos e 3 cátodos.
F Porém, para simplificar sua utilização, os LEDs RGB podem ter seus 3
cátodos unidos em um único terminal de cátodo comum, mantendo os 3
ânodos independentes. Outros modelos são construídos unindo os 3 ânodos
em um único terminal comum e mantendo os 3 cátodos independentes.

82

82
Apoio
Ø Sobre LED RGB
F Seja um modelo de ânodo comum, ou de cátodo comum, é possível acionar, de
forma independente, cada cor básica (R-G-B) com a intensidade que se queira e, com
isso, produzir outras cores.
F Se usarmos, p.ex., sinais PWM de um Arduino, temos 256 (28) diferentes
intensidades para cada uma das 3 cores básicas, podendo formar (256x256x256 = 224)
mas de 16 milhões de cores.
F O organização dos terminais costuma seguir uma padronização: O maior terminal é
o comum (seja cátodo, ou ânodo). De um lado do comum, temos o terminal individual
da cor vermelha e do outro lado do comum, temos os terminais das outras cores.
F Normalmente, o mais próximo ao
comum é terminal da cor verde e o
mais afastado é o terminal da cor
azul.

Fonte: By SharkD at English WikipediaLater versions were


uploaded by Jacobolus at en.wikipedia. - Transferred from
83 en.wikipedia to Commons., Public Domain ...

83

Apoio
Ø Sobre LED RGB
F Para usarmos um LED RGB com uma fonte de 5V, p.ex.: um Arduino, precisamos
usar 3 resistores, um para cada terminal independente. Enquanto que, o terminal
comum, seja ânodo ou cátodo, será ligado diretamente à tensão correspondente.
F Se for um LED RGB de ânodo comum, o ânodo deverá ser ligado a um ponto do
circuito com tensão positiva constante (Vcc), p.ex., de 5V. Os outros terminais deverão
ser ligados a resistores e então, cada um, a um pino PWM. Porém, esse tipo de LED
RGB por um sinal complementar ao PWM (255 - PWM).
F O LED RGB de cátodo comum tem um funcionamento um pouco mais simples de
entender.
F O terminal do cátodo comum deve
ser ligado diretamente a um ponto GND.
Cada um dos terminais de cada cor será
ligado a um resistor, e então a um pino
PWM.
F O valor do sinal PWM enviado ao
terminal fará a cor correspondente variar
de apagada (PWM = 0) até sua
intensidade máxima (PWM = 255). Obs.: Ver: i) Limite de tensão por cor do LED na tabela do slide 36
e, ii) Fórmula para determinação do valor do resistor, no slide 37.
84

84
Apoio

Ø Montagem do Novo Protótipo


F Já temos (ou deveríamos ter) informações suficientes para começar a montagem do
nosso novo protótipo. Mas, vamos relembrar o passo a passo:
1º - Com o Arduino desligado de qualquer fonte de alimentação, inclusive a porta USB
do PC, começamos a montagem ligando os pinos 5V e GND do Arduino a um
barramento de alimentação da Protoboard;
Obs.: Em Protoboards com mais de um barramento de alimentação, temos que garantir que, pelo
menos, os barramentos negativos (GND) estejam todos interconectados.

85

85

Apoio

Ø Montagem do Novo Protótipo


2º - Também já sabemos como ligar os potenciômetros. Os terminais fixos devem ser
ligados a um barramento de alimentação da Protoboard (5V e GND) e o terminal cursor,
de cada potenciômetro é ligado a um dos pinos de entrada analógica do Arduino;
Obs.1: Usaremos os pinos analógicos A0, A1 e A2.
Obs.2: Podemos conectar os potenciômetros a partir de canto da protoboard, deixando espaço
suficiente, entre eles, para que possamos manuseá-los.
Obs.1: Pode ser necessário conectar um barramento de alimentação da protoboard, que fique
mais próximo dos potenciômetros, ao barramento já alimentado pelo Arduino.

86

86
Apoio

Ø Montagem do Novo Protótipo


3º - Por fim, vamos ligar o LED RGB. Para isso, usaremos 3 resistores de 220W, para
os ânodos R, G e B. O cátodo comum será ligado diretamente ao barramento negativo.
Obs.1: Usaremos os pinos digitais 9, 10 e 11. Pois, os 3 são PWM.

87

87

Apoio

Ø Programando o Arduino
F O sketch para este experimento usa apenas
conhecimentos que já forma vistos anteriormente.
F Vamos definir as variáveis para os pinos a serem
usados e, na void setup(), configurar os pinos de saída.

F Na void loop(),
usaremos o comando
analogRead(PINO), para
fazer a leitura dos
potenciômetros, definindo
os valores dos PWMs.
F E, para concluir,
reutilizaremos a função:
void ligaLEDs(r, g, b)
88

88
Apoio

Ø Uma Nova Experiência (Divertida!)

89

89

Apoio

Ø Uma Nova Experiência (Divertida!)

90

90
Apoio

Ø Um Pouco Mias Sobre LED RGB


F O LED RGB é o mais famoso membro da categoria dos LEDs multicores. Mais,
existem também os LEDs bicolores. O mais comum deles é o vermelho e verde.
F As aplicações dos LED multicores são diversas. Por produzirem pelos efeitos
visuais, são vastamente utilizados em sistemas de iluminação cujas funções vão, desde
decoração até sinalizações.
F Como vimos, a união do vermelho e do verde produz uma iluminação amarelada.
Então, podemos usar um único LED para indicar, p.ex., uma situação de baixo risco
(Verde), risco médio (Amarelo) e alto risco (Vermelho).

91

91

Apoio

Ø Um Novo Projeto!
F Vamos desenvolver um novo projeto, no qual usaremos um código de cores,
através do LED RGB, como sinalização de alerta de proximidade.
F Para avaliar a proximidade de um ‘obstáculo’ usaremos um Sensor de Distância
Ultrassônico HC-SR04.
F A ideia é que um obstáculo a mais de 20cm mostre uma luz verde. Conforme o
obstáculo se aproxime a luz vai mudando para amarela, até 15cm. Entre 15cm e 10cm
a luz vai mudando para vermelha, até ficar totalmente vermelha, para menos de 10cm.

92

92
Apoio

Ø O Sensor de Distância Ultrassônico HC-SR04


F O HC-SR04 é utilizado em uma grande quantidade de
projetos com Arduino. Principalmente, projetos envolvendo
robótica.
F Ele pode medir distâncias de 2 centímetros até 4
metros, com uma precisão de 3 milímetros.
F Além de um circuito eletrônico, para o tratamento dos
sinais, o HC-SR04 conta com um transmissor (T) e um
receptor (R) de pulsos ultrassônicos.
F Para funcionar com um Arduino, ele usa uma
alimentação de 5v (Vcc e GND) e, ainda, 2 pinos para
emissão e leitura do ultrassom (Trigger e Echo).
F Quando o pino Trigger recebe um sinal de 5V (HIGH) aciona a emissão de um pulso
ultrassônico. Se o pulso encontrar um obstáculo, bate e volta para o sensor.
F Se o receptor de ultrassom detetar o retorno do pulso ultrassônico, o sensor envia
para o Arduino, através do pino Echo, um sinal de 5V (HIGH).
93

93

Apoio

Ø O Sensor de Distância Ultrassônico HC-SR04


F Através da programação do Arduino é
possível determinar o intervalo de tempo
entre o disparo do pulso e a deteção de
seu retorno.
F Daí, sabendo-se a velocidade do som
no ar (≈ 340 m/s) é possível determinar a
distância total percorrida pelo pulso
ultrassônico, que é de 2 vezes (ida e volta)
a distância entre o sensor e o obstáculo.
F É necessário que o pulso de trigger
tenha duração de pelo menos 10µs.
F Também é recomendado um intervalo
de, pelo menos, 2µs antes de realizar
novo acionamento do trigger.

𝑇𝑒𝑚𝑝𝑜 𝑑𝑒 𝑅𝑒𝑠𝑝𝑜𝑠𝑡𝑎 𝑑𝑜 𝑆𝑒𝑛𝑠𝑜𝑟 × 𝑉𝑒𝑙𝑖𝑐𝑖𝑑𝑎𝑑𝑒 𝑑𝑜 𝑆𝑜𝑚


𝐷𝑖𝑠𝑡â𝑛𝑐𝑖𝑎 =
2
94

94
Apoio

Ø O Sensor HC-SR04 e o Arduino


F A programação do Arduino, para utilizar o HC-SR04 requer todas as atenções já
mencionadas, e mais alguns!
F Um exemplo de programação pode ser encontrado em:
https://blog.eletrogate.com/sensor-ultrassonico-hc-sr04-com-arduino/.
F Mas, quando temos que utilizar dispositivos (componentes, módulos, kits, shields
...) que requerem um programação mais complexa, podemos contar com um conjunto
de arquivos, prontos para serem usados, chamado de Bibliotecas.
F As Bibliotecas para Arduino nada mais são do que conjuntos de arquivos, que
podem ser instalados na IDE do Arduino e, depois disso, incluídas em nossos sketchs,
facilitando enormemente a tarefa de programação.
F Existe uma grande quantidade de dispositivos que podem ser conectados a um
Arduino. Alguns deles têm funcionamento muito complexo e, por isso mesmo, podem
exigir uma programação muito sofisticada para que tudo funcione corretamente.
F Muitas (talvez a grande maioria) das pessoas que resolvem utilizar os Arduinos não
são programadores experientes. E, nem estão interessadas em ser!
95

95

Apoio

Ø Usando Bibliotecas em um Sketch


F Uma das grandes vantagens dos sistemas de prototipagem rápida, como é o caso
do Arduino e seus dispositivos, está na possibilidade de montar equipamentos
complexos, utilizando componentes sofisticados como: Displays Touchscreens,
Sensores Biométricos, GPS, Teclados, Câmeras, Transmissores de radiofrequência,
Sistemas de Automação, Diversos tipos de Motores e Bombas, e muito mais, tendo
apenas conhecimentos mínimos de eletrônica e programação.
F Do ponto de vista da eletrônica, isso é possível graças ao desenvolvimento de
dispositivos (módulos, kits, shields ...), como é o caso do HC-SR04, que são
construídos com toda eletrônica necessária para que seu funcionamento dependa
apenas de alguns sinais eletrônicos, que podem ser enviados e/ou recebidos pelos
pinos do Arduino.
F Já do ponto de vista da programação, são as bibliotecas que facilitam a vida dos
que se aventuram no universo do Arduino.
F As bibliotecas trazem arquivos de suporte à utilização de funções e dispositivos
complexos. Elas também costumam instalar sketchs de exemplos.
F Mas, o mais importante, o arquivo principal de um biblioteca é na verdade um tipo
de sketch (um programa com extensão .h), normalmente apresentando um nível
elevado de programação, contendo várias funcionalidade muito úteis.
96

96
Apoio

Ø Usando Bibliotecas em um Sketch


F Não precisamos ser programadores experiente para usar funcionalidades
avançadas em nossos sketchs. Basta incluirmos as bibliotecas necessárias no início do
sketch e utilizar as funcionalidades que elas nos fornecem.
F Atualmente, existe biblioteca para quase tudo que precisemos fazer com um
Arduino e que seja um pouco mais complexo. Algumas estão no “CORE” da IDE, e
usamos, sem nem saber que estamos usando, em nossos sketchs mais básicos.
F Além das bibliotecas do ‘core’ da IDE, muitas outras já são instaladas junto com a
IDE, embora não sejam automaticamente carregadas em nossos sketchs. São
conhecidas como bibliotecas padrão. Por exemplo:
F SoftwareSerial – Permite a comunicação serial usando os pinos digitais da placa.

F Wire – Biblioteca que permite enviar e receber dados por meio de uma interface TWI/I2C
(interface a dois fios) em uma rede de dispositivos ou sensores.

F Servo – Controlar motores servo.

F Stepper – Controlar motores de passo...

97

97

Apoio

Ø Usando Bibliotecas em um Sketch


F Além disso, fabricantes de dispositivos, empresas especializadas, hobbistas,
entusiastas e várias pessoas com bons conhecimentos de programação formam uma
grande comunidade de desenvolvedores de bibliotecas para Arduino.
F As bibliotecas desenvolvidas por essas pessoas e empresas são chamadas de
Bibliotecas de Terceiros (ou Adicionais) e podem ser encontradas de duas formas:
F Algumas bibliotecas estão disponíveis através da própria IDE do Arduino. Podemos
encontrá-las usando o Gerenciador de Bibliotecas (Menu: Ferramentas à Gerenciar
Bibliotecas ...).

98

98
Apoio

Ø Usando Bibliotecas em um Sketch


F Muitas outras são disponibilizadas através da Internet, normalmente no GitHub.
(Saiba mais sobre o GitHub em: https://pt.wikipedia.org/wiki/GitHub. Mas, também
podem ser encontradas nos sites de seus desenvolvedores.
F Então, só precisamos encontrar a biblioteca que queremos, fazer o download e
instalá-la em nossa IDE do Arduino.
F Quando buscamos, na Internet, tutoriais sobre a utilização de alguma
funcionalidade ou dispositivo que requer o uso de uma biblioteca, normalmente, já
encontramos, no próprio tutorial (blog, vídeo-aula ...) um link para o download.
F Mas, cuidado!! Existem bibliotecas boas, ruins e até algumas que não funcionam.
Por isso, precisamos ficar atentos! Busquem o máximo possível de informação antes
de baixar e instalar um biblioteca.
F Bibliotecas de terceiros podem ser instaladas na IDE do Arduino usando a opção:
Menu: Sketch à Incluir Biblioteca à Adicionar biblioteca .ZIP.

F Depois, basta selecionar o arquivo .ZIP, que foi baixado da Internet, contendo a
biblioteca que desejamos instalar.
99

99

Apoio

Ø Baixando e Instalando uma Biblioteca para o HC-SR04


F Tomando como exemplo o nosso sensor de distância ultrassônico HC-SR04,
podemos encontrar um ótimo tutorial de como usá-lo com um Arduino em:
https://www.filipeflop.com/blog/sensor-ultrassonico-hc-sr04-ao-arduino/.
F Examinado esta postagem, do blog do Filipeflop, encontramos um link para uma
página do GitHub (https://github.com/filipeflop/Ultrasonic), onde podemos baixar a
biblioteca necessária para utilização do sensor.

100

100
Apoio

Ø Baixando e Instalando uma Biblioteca para o HC-SR04


F Depois de baixar o arquivo .ZIP da biblioteca, podemos proceder sua instalação na
IDE do Arduino, usando o menu: Menu: Sketch à Incluir Biblioteca à
Adicionar biblioteca .ZIP, e selecionando o arquivo baixado.

F Depois de marcar o arquivo .ZIP


e clicar em Escolher , na área
de mensagens da IDE, aparecerá
uma mensagem confirmando que a
biblioteca foi corretamente
adicionada.

101

101

Apoio
Ø Baixando e Instalando uma Biblioteca para o HC-SR04
F Uma vez adicionada a nova biblioteca, ela aparecerá na lista de bibliotecas que
podemos incluir em nossos sketch: Menu: Sketch à Incluir Biblioteca.
F Muitas vezes, serão incluídos sketchs de exemplos: Menu: Arquivo à Exemplos.

102

102
Apoio

Ø Montando Nosso Novo Protótipo


F Com todo cuidado possível, vamos reaproveitar parte da nossa montagem anterior.
F Vamos manter o LED RGB e toda sua ligação com o Arduino.
F Mas, vamos remover os potenciômetros e jumpers, tanto os usados para
alimentação (Vcc e GND), quanto aqueles que ligam o terminal cursor dos
potenciômetros aos pinos de entrada analógica do Arduino.

103

103

Apoio

Ø Montando Nosso Novo Protótipo


F Em seguida, vamos fixar o sensor ultrassônico na
protoboard e fazer as conexões necessárias.
F Precisaremos de 4 jumpers. Dois para alimentação,
Vcc e GND.
F Com um terceiro jumper vamos conectar o pino
Trigger, do sensor, ao pino digital 8, do Arduino.
F E, finalmente, vamos ligar o pino Echo, do sensor ao
pino digital 7, do Arduino.

104

104
Apoio

Ø Programando o Arduino
F Vamos começar um sketch novo: Arquivo à Novo.
F Para começar nosso novo sketch, vamos incluir a
biblioteca do sensor ultrassônico: Sketch à Incluir
Biblioteca à Ultrasonic-master.
F Acima da linha de
comando que inclui a
biblioteca do sensor, vamos
incluir nosso cabeçalho de
descrição.
F E, logo após ela,
definiremos as variáveis que
usaremos.

F Usaremos um novo tipo


de variável: float.
105

105

Apoio

Ø Programando o Arduino
F A biblioteca Ultrasonic.h, assim como acontece com várias outras, pode ser
usadas para manipular vários sensores ultrassônicos simultaneamente.
F Para cada sensor que desejemos utilizar, precisamos criar um ‘objeto’, que será
associado ao sensor desejado através de certos parâmetros, como, neste caso, os
pinos digitais do Arduino o o sensor está ligado.
Ultrasonic NomeObjeto(Pino do Trigger, Pino do Echo);
F A linha de código que cria este objeto ficará junto com a definição das variáveis,
antes da void setup().

F Na void setup(), vamos configurar a comunicação com o monitor serial e os


pinos do LED RGB.

106

106
Apoio
Ø Programando o Arduino
F Começaremos a implementar a lógica desejada, na void loop(), com dois
comandos específicos da biblioteca Ultrasonic.h: O primeiro, varTempo =
NomeObjeto.timing();, para determinar o tempo entre o disparo e o retorno do
pulso ultrassônico e o segundo, varDist = NomeObjeto.convert(varTempo,
Ultrasonic::CM);, para calcular a distância, em função do tempo medido.

F O restante da lógica implementada tem o


objetivo de realizar o projeto proposto.
F E, para concluir, reutilizaremos, novamente,
107 a função: void ligaLEDs(r, g, b)
107

Apoio

Ø O Sensor HC-SR04 e o Arduino

108

108
Apoio

Ø Protótipo de um Sensor de Estacionamento


F Podemos evoluir o nosso protótipo atual,
acrescentando mais alguns de dispositivos
e, consequentemente, suas funcionalidade.
F Com isso, podemos obter um protótipo de
sensor de estacionamento, ou sensor de ré.
F Já temos o mais importante, que é o sensor
de distância ultrassônico.
F Também temos um sinalização visual de
advertência, baseada em um LED RGB.
F Porém, a grande maioria dos sensores de ré
contam com, pelo menos, mais dois componentes.
F Um sistema de alerta sonoro, que pode ser feito
por uma buzina, é usado para chamar a atenção,
mesmo de um motorista mais distraído.
F E, a visualização da distância, que no momento
está sendo feita através do monitor serial, no
computador, pode ser feita através de mostradores
numéricos, como os displays de 7 segmentos.
109

109

Apoio

Ø Sobre Buzzers
F Vamos começar falando sobre os buzzers, ou buzinas, que são um tipo de
transdutor piezoelétrico apropriados para geração de sinais elétricos de baixa potência.
F Um buzzer típico e composto por 1 camada de material piezoelétrico, envolvida por
2 camadas de metal, uma de cada lado do piezoelétrico.
F Então, primeiramente, temos que entender um
pouco sobre o funcionamento de materiais
piezoelétricos.
F O materiais construídos à base de cristais
piezoelétricos tem uma propriedade eletromecânica
muito interessante: Se ele for deformado, por uma
pressão em suas faces, ele produz, instantaneamente,
um diferencial de tensão.
F Isso é conhecido como efeito piezoelétrico e, o mais
interessante é que, é um efeito reversível.
F No efeito piezoelétrico reverso, quando quando
Fonte:https://commons.wikimedia.org/wiki/File:Schema
submetemos o material a um diferencial de tensão, ele Piezo.gif#/media/File:SchemaPiezo.gif

se deforma.
110

110
Apoio
Ø Sobre Buzzers
F Baseado no efeito piezoelétrico reverso, enviando um sinal eletrônico que oscile em
determinadas frequências, podemos fazer uma pastilha de cristais piezoelétricos (ou
simplesmente: pastilha piezoelétrica) vibrar, produzindo sons.
F Este é o principio por trás dos buzzers, que podem ser de 2 tipos:

Buzzer Ativo Buzzer Passivo


• Mais fácil de testar e usar: ao • Difícil de testar e usar: ao energizar só
energizar já apita continuamente. ouve um débil estalo. Parece um buzzer
• Não é o mais apropriado para criar ativo com defeito.
melodias. É mais apropriado para • É o mais apropriado para fazer melodias,
alarmes/avisos/sinalização. porque tem o controlo sobre os tons
• Por norma a traseira do buzzer ativo é gerados.
lacrada com um pino maior (VCC / +) • Por norma a traseira tem o PCB à mostra
e outro menor (GND / -). com os pinos do mesmo tamanho.

111

111

Apoio
Ø Usando um Buzzer Ativo em Nosso Protótipo
F Como desejamos emitir um sinal sonoro, um buzzer ativo é o mais adequado.
F Ele é muito fácil de usar. Vamos inseri-lo em um cantinho da protoboard e,
observando sua polaridade, vamos liga-lo ao barramento negativo da protoboard
(GND) e ao pino digital 6 do Arduino.

112

112
Apoio
Ø Programando o Arduino
F A programação, para utilizar o buzzer ativo, também é simples.
F Vamos definir a variável que determina o pino que será usado para o buzzer e, em
seguida, na void setup(), configurar ele como saída.

F Depois disso, na void loop(), usamos as 3 situações já determinadas para


sinalização pelo LED RGB, para ativar também sinalizações sonoras.
F Para maior distância (maior que 20cm),
mantemos o buzzer desligado.
F Na distância intermediária (entre 10 e 20cm) o
buzzer será ligado e desligado, permanecendo
desligado por um tempo que varia
proporcionalmente à distância medida.
F Quanto menor a distância, menor o tempo em
que o buzzer fica desligado. Consequentemente, o
aviso sonoro se intensifica.
F Na curta distância (menor que 10cm) o buzzer
permanece, continuamente, ligado.
113

113

Apoio

Ø Usando um Displays de 7 Segmentos


F A próxima etapa na construção do nosso protótipo de um Sensor de
Estacionamento, será a utilização de displays, para visualização da distância medida.
F Com o passar do tempo e os avanços tecnológicos, diversos tipos de display
surgiram, chegando, atualmente, aos displays gráficos e touch screen.
F Porém os primórdios da exibição de números, e mesmo de letras, nos circuitos
eletrônicos, remetem ao uso dos display de 7 segmentos.

114

114
Apoio

Ø Usando um Displays de 7 Segmentos


F Ainda hoje, os sempre úteis displays de 7 segmentos são
bastante utilizados.
F Eles dispõem de alguma variedade
de cores, tamanhos e quantidade de
dígitos.
F Mas, basicamente, cada dígito é
formado por 7 LEDs, um para cada
segmento usado para formar os
caracteres, e, eventualmente, um
oitavo para o ponto.

115

115

Apoio

Ø Usando um Displays de 7 Segmentos


F Dependendo da montagem dos LEDs, internamente,
no display, ele pode ter um cátodo comum aos 8 LEDs e 8
ânodos, um para cada LED. Ou pode ser o contrário
disso: um ânodo comum e 8 cátodos.
F Seja como for, para cada dígito (mais o ponto) teremos
8 LEDs para serem alimentados.
F Dependendo da alimentação, serão necessários 8 resistores, um para cada LED
do display. Seja um display de cátodo comum, ou seja de ânodo comum, os 8
resistores devem ser usados nos pinos: A, B, C, D, E, F, G e DP do display. Para usar
um display de 7 segmentos com Arduino (5V), podemos usar resistores entre 150W e
330W. 220W é uma boa escolha, da mesma que para um LED comum.

116

116
Apoio

Ø Usando um Displays de 7 Segmentos Cátodo Comum


F Para utilizarmos displays de 7 segmentos
com um Arduino precisaremos de alguns
conhecimentos que ainda não abordamos.
F Portanto, antes de acrescentarmos
displays de 7 segmentos ao nosso protótipo
de Sensor de Estacionamento, vamos fazer
alguns experimentos apenas com displays e
Arduino.
F Vamos adquirir alguns novos
conhecimentos e desenvolver alguns novos
experimentos. Depois retomamos o projeto do
Sensor de Estacionamento.
F Então, vamos montar um novo
experimento. Um contador hexadecimal (0–F)
com display de 7 segmentos de um dígito.

117

117

Apoio

Ø Contador Hexadecimal com Displays de 7 Segmentos


F Para nosso novo experimento, vamos precisar de: 1 protoboard (de 400 pontos),
8 resistores de 220W, 1 display de 7 segmentos de 1 dígito e vários jumpers.
F Vamos colocar
os resistores na
protoboard,
começando da
coluna 1 e
pulando uma
coluna para cada
resistor.
F Precisamos tomar cuidado para os terminais dos
resistores não se tocarem, causando curto.
F Depois, podemos usar 8 jumpers de cores
diferentes, preferencialmente, e ligar em um dos
terminais de cada resistor.
F As outras pontas desses jumpers serão ligadas,
mais tarde, aos pinos do Arduino.
118

118
Apoio

Ø Contador Hexadecimal com Displays de 7 Segmentos


F Vamos fixar o display na protoboard e usar mais um jumper. Este será ligado ao
pino comum do display, que para o display que estamos usando é o cátodo (GND).
F Esse jumper
será ligado ao
GND do Arduino,
ou algum outro
ponto GND do
circuito.
F Em seguida, precisamos ligar o outro
terminal dos resistores ao pinos do display.
F O primeiro resistor, ligado na coluna 1 da
protoboard, deverá ser liado ao pino A do
display, o próximo resistor ao pino B, e assim
por diante, até que o último resistor, da coluna
15, seja ligado ao pino DP.

119

119

Apoio

Ø Contador Hexadecimal com Displays de 7 Segmentos


F Agora, sem desmontar nosso
protótipo de sensor de
estacionamento, vamos ligar, através
dos jumpers, os resistores aos pinos
digitais do Arduino.
F Precisamos de 8 pinos digitais.
Mas, nosso sensor de estacionamento
já está usando vários dos pinos do
Arduino.
F Porém, podemos usar os 6 pinos
analógicos como pinos digitais (A0- 14,
A1-15, A2-16, A3-17, A4-18 e A5-19).
F Então vamos ligar o resistor do
pino A do display ao pino digital 12 do
Arduino e assim por diante, até que o
pino DP do display seja ligado ao pino
digital 19 (A5) do Arduino.
F O cátodo deve ser ligado ao GND.
120

120
Apoio

Ø Programando o Arduino
F Vamos começar um sketch novo: Arquivo à Novo.
F Após os comentários iniciais, na definição das
variáveis, já teremos algumas novidades.
F Vamos utilizar vetores (nomeVetor[elementos]) e
matrizes (nomeMatriz[linhas][colunas]).

F Também usaremos um
novo tipo de variável: bool.
F Uma variável lógica, do
tipo booleana, aceita
valores de TRUE (1) e
FALSE (0), e pode ser
manipulada através de
operadores lógicos.
121

121

Apoio

Ø Programando o Arduino
F Na void setup(), usaremos o comando na for(), classificado como “estrutura de
controle”, para configurar todos os 8 pinos definidos no vetor seteSegsPins, como
pinos de saída.

F A sintaxe do comando for() é:


for(variável = valInicial; condiçãoParaValFinal; incremento){
lista de comandos;
}
F O momento é oportuno para destacarmos que a IDE do Arduino, por se basear na
linguagem de programação C/C++, começa a contar os elementos de vetores,
matrizes e qualquer array, a partir da posição 0 (zero).
F Ou seja, o primeiro elemento do vetor x é o elemento x[0], e assim por diante.

12 13 14 15 16 ...

122 Fonte: Adaptado de: https://www.programiz.com/cpp-programming/arrays

122
Apoio

Ø Programando o Arduino
F Na void loop(), simplesmente, iremos percorrer as 16 linhas da matriz que define
os dígitos, fazendo com que cada dígito seja exibido no display.

F Para realizar o ligamento, ou não, de cada segmento, exibindo da dígito


selecionado, criaremos um função.
F A void ligaSegmentosDisplay(int digit) recebe um valor inteiro,
correspondente ao dígito (índice da linha) que deve ser exibido e, então, liga os
segmentos do display necessários para exibição do dígito desejado.
F Para praticar o uso de funções, vamos criar uma (void ligaPonto(bool dot)) só
para ligar e desligar o ponto do display.

123

123

Apoio

124

124
Apoio

Ø Visualizando Mais Dígitos com Displays de 7 Segmentos


F Agora que entendemos como funciona um displays de 7 segmentos e já sabemos
usar um Arduino para exibir números de 0 à 9, como podemos exibir números com
mais dígitos? Como, por exemplo, uma distância entre 0cm e 99cm.
F Como em quase todos os problemas, existem várias soluções possíveis.
F Vamos começar pela solução mais didaticamente útil. Aquela que nos dará a
oportunidade de aprender os fundamentos teóricos, e práticos, que possibilitaram a
compreensão de várias outras possíveis soluções.
F Vamos utilizar vários displays de 7 segmentos!
(Vários de 1 dígito ou 1 de múltiplos dígitos)
F Parece ser uma solução simples.
F Mas, de início já surge um grande problema!

F Se para usar um display de 7 segmentos (mais


o ponto) precisa de 8 pinos digitais do Arduino,
para usar 2 displays serão necessários 16 pinos.
F Se contarmos com os pinos analógicos, um
Arduino UNO conta com 20 pinos que podem ser
usados como saída digital. Mas, não podemos
usar os pinos digitais 0 e 1 simultaneamente com a
comunicação USB entre o Arduino e o computador.
125

125

Apoio

Ø Visualizando 2 Dígitos com Displays de 7 Segmentos


F Então, para utilizar 2 displays de 7 segmentos, precisaríamos de 16
dos 20 (ou 18) pinos que podem ser utilizados como saídas digitais.
F Não sobrariam muitos pinos para ligar outros dispositivos ao Arduino!
F E se for necessário visualizar 3 dígitos? Precisaríamos de 24 pinos!
F Então, precisamos pensar em outras soluções.
F Podemos ligar todos os displays necessários usando os mesmos 8
pinos de saída digital.
F Porém, fazendo isso, estaríamos ligando cada segmento (A, B, C, D
,E, F, G, DP), de cada display utilizado, em paralelo, somando a corrente
que cada um requerer de cada pino do Arduino.
F Com poucos displays já ultrapassaríamos os limites do Arduino de
40mA por pino e 200mA total.
F Mas, o pior em simplesmente fizermos isso, é que termos todos os
displays mostrando o mesmo dígito, ao mesmo tempo!
126

126
Apoio

Ø Visualizando 2 Dígitos com Displays de 7 Segmentos


F Precisamos usar um artifício adicional.
F Precisamos ligar um display e exibir um
dígito, depois, desligamos ele, ligamos o
próximo e exibimos outro dígito.
F Vamos seguindo esse procedimento até
o último dígito e então voltamos ao primeiro
display e começamos tudo novamente.

F Para uma quantidade razoável de displays, se


este processo for realizado de forma suficientemente
rápida, não será possível notar o efeito dos displays
desligando e religando.
F O efeito visual será equivalente a termos todos os
displays ligados simultaneamente, cada um podendo
exibir um dígito diferente.
127

127

Apoio

Ø Visualizando 2 Dígitos com Displays de 7 Segmentos


F Mas, como ligar e desligar os displays?
F Poderíamos usar mais um pino digital do Arduino para cada display, enviando um
sinal baixo (LOW) para o cátodo comum (ou um sinal alto (HIGH) no caso de display de
ânodo comum). Fazendo assim o ligamento controlado de cada dígito.
F A ideia é essa. Mas, novamente, esbarramos nos limites operacionais do Arduino.
F O cátodo comum une os cátodos dos 8 LEDs que formam o display. Logo, estará
passando por ele a corrente de cada segmento que estiver ligado.
F Precisaremos da ajuda de um componente eletrônico importantíssimo, que
revolucionou o mundo e rendeu um Prêmio Nobel para os físicos que, pela primeira
vez, conseguiram implementá-lo.
F O Transistor

128 Fonte:https://clintonwhitehouse4.archives.gov/Initiatives/Millennium/capsule/mayo.html

128
Apoio

Ø Como os Transistores Podem Ajudar?


F O transistor é a base da eletrônica digital. Está presente em praticamente
qualquer dispositivo eletrônico moderno.
F Pode ser usado para amplificar um corrente elétrica, ou simplesmente para
barrar, ou não sua passagem.
F Analogamente a uma torneira, o transistor pode ser comandado para abrir ou
fechar, deixando, ou não, a corrente fluir pelo circuito.
F Por enquanto, vamos nos ater ao uso do Coletor
transistor com uma chave liga/desliga. Base

Emissor
Fonte:https://commons.wikimedia.org/wiki/File:Transbauformen.jpg#/media/Ficheiro:Transbauformen.jpg Fonte:https://commons.wikimedia.org/wiki/File:Transistor_animation.gif#/media/File:Transistor
_animation.gif
129

129

Apoio

Ø Um pouco sobre Transistores


F O transistor é a base da eletrônica moderna
e, principalmente, da eletrônica digital.
Atualmente, está presente em praticamente
qualquer dispositivo eletrônico.
F “Uma tensão ou corrente aplicada a um par
de terminais do transistor controla a corrente
através de outro par de terminais. Como a
Fonte:https://commons.wikimedia.org/wiki/File:NPN_transistor_basic_operation
potência controlada (saída) pode ser maior _english.svg#/media/File:NPN_transistor_basic_operation_english.svg

que a potência de controle (entrada), um


transistor pode amplificar um sinal.”
(https://pt.wikipedia.org/wiki/Transistor).
F Todos os transistores são feitos de materiais
semicondutores, como o silício e o germânio,
e funcionam controlando a passagem de
elétrons em seu interior, no entanto, existem Fonte:https://commons.wikimedia.org/wiki/File:NPN_BJT_(Planar)_Cross-
section.svg#/media/File:NPN_BJT_(Planar)_Cross-section.svg

diferentes tipos de transistor, e cada um faz


130 isso de uma forma diferente.

130
Apoio

Ø Um pouco sobre Transistores


F Duas categorias de transistor que merecem destaque são: o Transistor de
Junção Bipolar (BJT) e o Transistor de Efeito de Campo (FET).
F Ambos são formados a partir de 3 camadas de material semicondutor dopado,
apresentando funcionamentos levemente diferentes e sendo apropriados para
diferentes aplicações. Por ora, vamos nos concentrar nos transistores de junção.
F A dopagem é um processo em que se substituem alguns átomos do semicondutor
por átomos de outros materiais, como fósforo, boro, gálio e outros.
F Existem dois tipos de dopagem: a dopagem tipo-n e tipo-p.
F Na dopagem tipo-n (carga negativa), adicionam-se átomos à rede cristalina do
Silício capazes de fornecer um excesso de elétrons.
F Na dopagem tipo-p (carga positiva), adicionam-se átomos que causem uma
carência de elétrons, comumente chamada de buracos (holes).
F Assim, juntando 3 camadas de semicondutores, com dopagem diferente entre
uma camada e a próxima, podemos formar transistores PNP ou NPN, com um
terminal (Base, Coletor e Emissor) em cada camada.
131

131

Apoio

Ø Um pouco sobre Transistores


F No transistor NPN os terminais BASE e COLETOR devem
estar conectados a pontos de tensão positiva do circuito,
enquanto o EMISSOR deve estar ligado a um ponto de
tensão negativa (GND).
F Então, havendo corrente suficiente na BASE, se uma tensão
positiva é fornecida ao coletor, irá fluir corrente do
COLETOR para o EMISSOR.
F Um transistor PNP tem a construção diferente de um NPN.
Por isso, internamente, funciona de forma diferente e sua
ligação ao circuito precisa ser diferente.
F No transistor PNP os terminais BASE e COLETOR devem
estar conectados a pontos de tensão negativa (GND) do
circuito, enquanto o EMISSOR deve estar ligado a um ponto
de tensão positiva.
F Assim, havendo fluxo de corrente negativa suficiente na
BASE, se uma tensão positiva é fornecida ao lado do
EMISSOR, irá fluir corrente do EMISSOR para o COLETOR.
132

132
Apoio

Ø Um pouco sobre Transistores


F Usando um pequena corrente podemos energizar a BASE de um transistor NPN,
permitindo que uma corrente muito maior flua entre seu COLETOR e seu EMISSOR.
F Por outro lado, quando a BASE do transistor NÃO for energizada, ele NÃO permite o
fluxo de corrente entre o COLETOR e o EMISSOR, como um interruptor desligado.
F No transistor PNP a ideia é semelhante, porém com a corrente de comando sendo
drenada do terminal BASE para um ponto de tensão negativa (GND) do circuito.
F Para saber, realmente, se um determinado transistor é adequado para um dado
projeto e como podemos usá-lo, precisamos obter todas as informações possíveis
sobre ele. Suas características limites operacionais e muitas outras.
F Para obter todas as informações necessárias podemos consultar o datasheet do
componente.

133

133

Apoio

Ø Um pouco sobre Transistores


F Datasheet, folha de dados ou folha de especificações é um documento que
apresenta um série de informações sobre características técnicas e desempenho
de um produto, equipamento, máquina ou componente.
F Os datasheets são tão importantes para quem precisa trabalhar com
componentes eletrônicos, que existem ferramentas de busca especificas:
https://www.alldatasheet.com/, https://datasheet4u.com/.
F Porém uma simples busca no Google costuma ser suficiente para encontrar o
datasheet da maioria dos componentes.
F Nem sempre é fácil entender as informações contidas nos datasheets.
F Mas, existem excelentes tutorias, fóruns e até vídeo-aulas, sobre como procurar
e usar datasheets:
https://www.newtoncbraga.com.br/index.php/ingles-para-eletronica/548-datasheet-
como-usar-o-quadro-de-busca, http://maketronica.blogspot.com/2011/06/dica-de-hoje-
como-procurar-um-datasheet.html, https://www.clubedohardware.com.br/forums/topic/
530570-como-procurar-datasheets/, https://www.youtube.com/watch?v=8MOAkdYQ4WM,
https://www.youtube.com/watch?v=HPq73-WpgAs.
134

134
Apoio

Ø Voltando para Utilização de Displays de 7 Segmentos


F Pretendemos utilizar transistores 2n2222a. Mas, precisamos obter
informações importantes sobre ele.
F O 2n2222a é PNP ou NPN? Qual terminal é a base? E o coletor? E o
Emissor? Ou seja, qual é a “pinagem” (pinout) do transistor em questão?
Quais são a corrente e tensão suportadas entre coletor e emissor? Que
outras informações podem ser úteis? Ganho (hFE)? Velocidade de resposta
(Delay, Rise Time)? ...

135

135

Apoio

Ø Voltando para Utilização de Displays de 7 Segmentos


F Conhecendo as informações apresentadas no datasheet do componente, podemos
planejar sua correta utilização em nosso circuito.
F Sabemos que cada transistor será responsável por ligar um display com 8 LEDs (7
segmentos + o ponto). Cada LED acionado por um pino do Arduino que fornece 20mA.
Então, no pino comum do display, e consequentemente entre o coletor e o emissor do
transistor, teremos a circulação de uma corrente de até 160mA.
F O datasheet nos informa que o ganho hFE do transistor 2n2222a para essa faixa de
corrente é de cerca de 100. Então, precisamos de uma corrente de, aproximadamente
2mA na base do transistor. Embora para garantir o bom funcionamento do transistor
como um interruptor, abrindo e fechando, seria ideal usar cerca de 4mA.
F Outra informação importante que obtemos do datasheet, é que a tensão de
saturação do transistor, ou seja, a tensão que garante que o transistor esteja aberto,
fica entre 0,6 e 1,2v.
F Como o pino do Arduino fornece 5v, assim como fizemos com os LEDs,
precisaremos usar um resistor em série com o terminal base do transistor para obter a
tensão adequada ao seu funcionamento. (Um resistor de 1kW é comumente utilizado)
/!"#$%&'!çã* 0/+!' 207,6 /!"#$%&'!çã* 0/+!' 203,5
𝑅$#& = 1,!+%
= 3,338 =950W 𝑅$!. = 1,!+%
= 3,336 =2200W
136

136
Apoio
Ø Observações Finais Sobre Displays
F Aprendemos a forma mais básica de exibir múltiplos dígitos com displays de 7
segmentos. Usando múltiplos displays!
F Mas, como já foi mostrado, existem displays de 7 segmentos de 2, 3, 4, 8 e até mais
dígitos juntos em um único invólucros.
F Alguns apresentam um terminal para
cada segmento, de cada dígito,
necessitando de conexões equivalentes
às usadas em múltiplos displays.

F Outros fazem a conexão entre os mesmos segmentos


dos diferentes dígitos internamento, apresentando apenas
um terminal para cada segmento (8) e mais um para o
comum de cada dígito.
F Mas, o uso de transistores permanece necessário.
137

137

Apoio

Ø Retomando o Projeto do Sensor de Estacionamento


F Já temos conhecimento suficiente para retomar a montagem de nosso protótipo de
sensor de estacionamento de onde paramos.
F Vamos acrescentar, bem no centro de nossa
protoboard, dois displays de 7 segmentos.
F Manteremos uma segunda protoboard com os
resistores e transistores necessários para o acionamento
dos displays, como se fosse um módulo de acionamento.
F Observando que não precisaremos usar o ponto
decimal.

138

138
Apoio

Ø Retomando o Projeto do Sensor de Estacionamento


F Quanto maior o projeto, em termos de número de componentes e conexões, maior
precisa ser nossa atenção durante a montagem.
F Usaremos os pinos digitais 3 e 4, do Arduino UNO,
para acionar os terminais de base dos transistores, com
os resistores de 1kW em série, entre o pino e a base.
F Pino 3 para o display da direita e o 4 para o outro.
F Os terminais emissor, dos transistores, deverão ser
ligados ao barramento negativo (GND) da protoboard.
F O terminal coletor de cada transistor será conectado
ao terminal comum de um dos displays.

139

139

Apoio

Ø Retomando o Projeto do Sensor de Estacionamento


F Relembrando que, cada terminal (A, B, C,
D, E, F e G), de cada display estará ligado a
um pino do Arduino, com um resistor de
220W em série.
F Ou seja, um jumper liga o pino do Arduino
a um dos terminais de um resistor.
F No outro terminal do resistor teremos dois
jumpers, um ligado ao terminal de um display
e outro ligado ao outro display.
F Em ambos os displays, cada jumper
precisa estar ligado ao mesmo terminal.
F Por exemplo, o primeiro resistor (da
esquerda para direita) tem um dos terminais
ligados ao pino digital 12 do Arduino. O outro
terminal do resistor é ligado por 2 jumpers
aos terminais A de cada display. E assim por
diante, até o 7º resistor.
140

140
Apoio

Ø Programando o Arduino
F Nosso nono sketch pode ser visto como uma junção dos sétimo e oitavo sketchs,
obviamente, com as devidas adaptações.
F Após uma boa descrição inicial, definimos os pinos e
as variáveis que serão usadas.
F Temos a junção dos 2 códigos anteriores, acrescido
da definição dos pinos usados para os transistores.
F Não usaremos o pino 19 (A5), para o ponto decimal.

F Também não usaremos


os dígitos alfanuméricos.
Assim, podemos eliminar 6
linhas da matriz ‘digitos[ ][ ]’.

141

141

Apoio

Ø Programando o Arduino
F Na void setup() são necessárias mais algumas pequenas adaptações:
F Como não estamos
usando o pino 19, para o
ponto decimal (DP), temos 7,
e não 8, pinos para serem
configurados.
F Precisamos configurar os
pinos usados para acionar os
2 transistores.
F Na void loop()
temos apenas uma linha
a mais que no sétimo
sketch.
F Essa linha chama
uma função que, a partir
da distância medida,
determinará os dígitos
que serão exibidos em
cada display.
142

142
Apoio

Ø Programando o Arduino
F Na void determinaDigitos(int valor) o primeiro ‘truque’ está em receber o
valor enviado como um número inteiro (sem casas decimais, como em um float).
F Como o sensor pode medir até 4 metros, mas estamos trabalhando com distâncias
de apenas alguns centímetros, vamos impor uma limitação para que qualquer distância
maior que 99cm corresponda a um valor de 99.
F Assim, qualquer que seja a distância medida, teremos um variável ‘valor’ com
apenas dois dígitos, o dígito das dezenas e o dígito das unidades.
F Com um pouco de álgebra, conseguimos separar os dois dígitos da variável valor,
em duas novas variáveis.
F Enviamos os 2 dígitos para uma nova função: mostraDispaly(digito1, digito2).

143

143

Apoio

Ø Programando o Arduino
F Na void mostraDispaly(int valor1, int valor2), ligamos o primeiro display,
desligamos o segundo e chamamos a função de acionamento dos LEDs dos
segmentos para exibir o dígito das dezenas.
F Então esperamos um pouco (5 milissegundos) para estabilizar o acendimento dos
LEDs.
F Depois, desligamos o primeiro display, ligamos o segundo e chamamos novamente
a função de acionamento dos LEDs dos segmentos, agora para exibir o dígito das
unidades.
F E, terminamos esperando mais 5 milissegundos para estabilizar o segundo display.

144

144
Apoio

Ø “Houston, We Have a Problem!”


F Parecia que havíamos pensado em tudo! Mas, na
hora de usar surgiu um problema!! Isso pode ser mais
comum do que podemos imaginar.
F Na verdade, todo projeto precisa de muitos testes e
muitas análises antes de ficar minimamente em
condições de ser considerado ‘pronto’.
F Então, vamos tentar entender nosso problema,
para que possamos encontrar uma solução.
F Para exibir 2 dígitos, com 2 displays, precisamos
ligar e desligar os displays, alternadamente.
F O primeiro display é ligado primeiro e então
desligado para que o segundo display seja ligado.
F Com o primeiro display desligado e o segundo
ligado, retornamos ao segmento principal do sketch, o
void loop(), para darmos continuidade à nossa
rotina, fazendo medições, pausas e outras funções
necessárias
145

145

Apoio
Ø Problema Resolvido!
F Se tivermos um sketch muito grande, cujo
processamento leve muito tempo, ou se precisamos
usar pausas (comando delay(tempo)) em nosso
sketch, o ‘truque’ de desligar e ligar os displays ficará
compromentido.
F O último display a ser ligado, ficará assim por muito
tempo, enquanto os demais ficaram desligados por
muito tempo.
F Podemos notar que, no nosso caso, o primeiro
display fica desligado por mais tempo, principalmente,
quando temos distâncias entre 10 e 20cm.
F Isso acontece por que nesta faixa de distância
precisamos usar pausas para controlar a frequência de
acionamento do buzzer.

146

146
Apoio

Ø Problema Resolvido!
F Uma forma simples de lidar com o problema de sketchs muito grandes é repetir o
comando que chama a função de acionamento dos displays mais vezes, dentro do
fluxo lógico do nosso código.
F Também precisamos encontrar uma forma alternativa para realizar as pausas.
F Nossa função de
acionamento dos displays é
bastante simples, mas
contém duas pausas de 5
milissegundos. Ou seja, a
‘duração’ da função deve
ser de aproximadamente 10
milissegundos.
F Cada vez que chamamos esta função passamos 10ms
pausados.
F Então, uma forma de fazer uma pausa, p.ex., de 50ms
(delay(50)) é chamar esta função 5 vezes.
F Assim, podemos substituir os comandos delay(tempo),
de nosso skecth, por loops, em múltiplos de 10, de
chamados da função de acionamento dos displays.
147

147

Apoio

148

148
Apoio
Resumo do Curso
F Tomamos conhecimento da Cultura Maker.
F Conhecemos os sistemas de prototipagem rápida, como: Arduino, ESP e Raspberry.
F Aprendemos um pouco sobre:
F O Arduino UNO.
F Sinal PWM.
F Entradas e Saídas Digitais e Analógicas.
F Tivemos um contato inicial com a IDE de programação do Arduino e alguns de
seus principais comandos.
F Além da estrutura de um Sketch, criação de funções e utilização de bibliotecas.
F Vimos como uilizar Protoboards e Jumpers para criar e testar protótipos.
F Tivemos a oportunidade de aprender a utilizar componentes eletrônicos
importantes e muito úteis:
F Chave Táctil (Push Button) e Buzzer Ativo(buzina).
F LEDs comuns, RGB e Displays de 7 segmentos.
F Resistores e Potenciômetros (divisor de tensão).
F Sensor de luminosidade LDR (Resistor Dependente de Luz).
F Módulo Sensor de Distância Ultrassônico HC-SR04.
F O importantíssimo TRANSISTOR.
149

149

Apoio

Material (Mínimo) Utilizado no Curso


Componente Quantidade
Arduino UNO R3 + Cabo USB 1
Protoboard 830 Pontos 1
Protoboard 400 Pontos 1
LED difuso 5mm Vermelho 1
LED difuso 5mm Verde 1
LED difuso 5mm Amarelo 1
LED difuso 5mm RGB 1
Chave Táctil (push button) (4 terminais / 12x12mm com capa) 1
Resistor 220Ω - 1/4w (220R) 10
Resistor 1KΩ - 1/4w (1K) 2
Resistor 10KΩ - 1/4w (10K) 1
Potenciômetro 10KΩ Ohms – Linear (B10K) 3
Knob para Potenciômetro Estriado (1 Vermelho, 1 Verde e 1 Azul) 3
Sensor de Luminosidade LDR (5mm) 1
Sensor de Distância Ultrassônico HC-SR04 1
Buzzer Ativo 5V 12mm Bip Contínuo 1
Display 7 Segmentos 1 Dígito 0,56" Cátodo Comum 2
Transistor 2N2222A 2
Jumpers 20cm Macho-Macho >42
150

150
Apoio

Material Recomendado
Componente Quantidade
Arduino UNO R3 + Cabo USB 1
Protoboard 830 Pontos 1
Protoboard 400 Pontos 1
LED difuso 5mm Vermelho 4
LED difuso 5mm Verde 4
LED difuso 5mm Amarelo 4
LED difuso 5mm Azul 4
LED difuso 5mm Branco 4
LED difuso 5mm RGB 2
Chave Táctil (push button) (4 terminais / 12x12mm com capa) 5
Resistor 220Ω - 1/4w (220R) 10
Resistor 1KΩ - 1/4w (1K) 10
Resistor 10KΩ - 1/4w (10K) 10
Potenciômetro 10KΩ Ohms – Linear (B10K) 3
Knob para Potenciômetro Estriado (1 Vermelho, 1 Verde e 1 Azul) 3
Sensor de Luminosidade LDR (5mm) 1
Sensor de Distância Ultrassônico HC-SR04 1
Buzzer Ativo 5V 12mm Bip Contínuo 1
Display 7 Segmentos 1 Dígito 0,56" Cátodo Comum 2
Transistor 2N2222A 2
Jumpers 20cm Macho-Macho 40
Jumpers 20cm Macho-Fêmea 40
151 Jumpers 20cm Fêmea-Fêmea 40

151

Apoio

Componente Quantidade
Fonte de Alimentação Chaveada 12VDC 1A Plug P4-Compat. c/ Arduino 1
Outros Itens Básicos para Iniciantes

Fonte Ajustável Protoboard 1


Clip para Bateria 9V com Conector P4 1
Sensor de Temperatura Termistor NTC 10K 1
Sensor PIR HC-SR501 1
Resistores 300 Ohms 10
Resistores 620 Ohms 10
Resistores 2K2 Ohms 10
Capacitor Cerâmico 10nF 5
Capacitor Cerâmico 100nF 5
Capacitor Eletrolítico 100uF (16V, 25V ou 35V) 5
Capacitor Eletrolítico 1000uF (16V, 25V ou 35V) 5
Diodo 1N4007 5
Diodo 1N4148 5
Transistor BC 557 NPN 4
Transistor BC 558 PNP 4
Transistor TIP 120 NPN (ou TIP 122) 4
Buzzer Passivo 5V 12mm 1
DisplayLCD16x2 (ou 16x4) com I2C 1
Led Emissor de Infravermelho (sugerido: TSAL6200) 2
Receptor Infravermelho (sugerido: 1838B) 2
Módulo Relé 5V 1
Servo Motor 9g SG90 TowerPro 1
Mini Motor DC 3-6V (se possível com redução e roda) 1
Módulo Ponte H (sugerido: L9110S ou L298N) 1
152 Motor de Passo 5v + Driver Motor de Passo ULN2003 1

152
Apoio

Parabéns! Você chegou lá!!! Esse é o fim do curso


PRIMEIROS PASSOS COM ARDUINO – PARTE I

Na PARTE II saltaremos mais alto, com a utilização


153
de motores e outros componentes mais avançados!
153

Você também pode gostar