Apostila de Introdução À PE Com Arduino

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 96

Secretária de Estado da Educação - SEDUC

Secretária Adjunta de Educação Profissional e Integral - SAEPI


Supervisão dos Centros de Educação em Tempo Integral - SUPCETI
Coordenação de Inovação - COIN

Apos la de introdução às prá cas experimentais


com arduino

Prof. Esp. Thiago Gomes Aves

São Luís - Maranhão


2022
Sumário

O que é Arduino?
O que tem na placa?
Alimentação (USB/Conector P4)
Pinos (5V, 3V3, GND, Analógicos, Digitais, PWM, AREF)

Botão de reset
LED indicador de energia
LEDs TX e RX
CI principal
Reguladores de tensão
Qual placa usar com o kit?
Introdução à Arduino IDE
Instalando o driver da placa
Protoboard
Testando a protoboard
Lógica de programação
Introdução à eletrônica
Corrente, tensão e resistência
Polaridade
Curto-circuito
Hardware
Circuito
O que deve acontecer
EXPERIMENTO 1
Blink
Comentários
Saídas digitais
Pausando o programa
Piscando um LED fora da placa
Circuito
EXPERIMENTO 2
Semáforo
Circuito
Código
Entendendo o código
EXPERIMENTO 3
Funcionando um botão
Entradas digitais
Resistor de pull-down
Hardware
Circuito
Código
Entendendo o código
Criando condições
EXPERIMENTO 4
Buzzer
Buzzer passivo e buzzer ativo
Hardware
Circuito
Código
Entendendo o código
Variáveis
Criando uma variável
Frequencímetro
Circuito
Código
EXPERIMENTO 5
Projeto Piano
Notas musicais
Circuito
Código
O que deve acontecer
Piano
EXPERIMENTO 6
Sensor De Luz
Sensores fotoelétricos
Divisor de tensão
Lendo um LDR
Circuito
Código
Entendendo o código
Ampliando o experimento
Circuito
Código
EXPERIMENTO 7
Trabalhando Com Gráficos
Potenciômetro
Hardware
Circuito
Código
Entendendo o código
O que deve acontecer
Adicionando gráficos
EXPERIMENTO 8
Projeto Dimmer
PWM
Circuito
Código
O que deve acontecer
Dimmer com PWM
Circuito
Código
EXPERIMENTO 9
LED RGB
Circuito
Código
Entendendo o código
O que deve acontecer
EXPERIMENTO 10
LED RGB + Potenciômetro
Código
Entendendo o código
EXPERIMENTO 11
Aferindo temperatura e umidade relativa do ar
Como o DHT11 funciona?
Circuito
Código
O que deve acontecer
EXPERIMENTO 12
Alarme sonoro ativado por mudança de temperatura
Circuito
Código
Entendendo o código
EXPERIMENTO 13
Aferindo distâncias com o sensor HC-SR04
Circuito
Código
O que deve acontecer
EXPERIMENTO 14
Simulando um sensor de ré
Circuito
Código
Entendendo o código
EXPERIMENTO 15
Acionamento de cargas com módulo relé
Circuito
Código
O que é Arduino?

Antes de qualquer coisa, é importante que você saiba um pouco sobre a plataforma que
te acompanhará ao longo de todos os experimentos que preparamos para você!

Segundo o site dos próprios criadores, o Arduino.cc: "Arduino é uma


plataforma eletrônica de código aberto baseada em hardware e software fáceis de usar".
Então Arduino é um conjunto de ferramentas para facilitar o desenvolvimento de
dispositivos eletrônicos. Nessa plataforma estão incluídos o software de programação,
a IDE do Arduino (ou ambiente de desenvolvimento de códigos), e as placas que serão
programadas para serem usadas no projeto, como o Arduino Uno. Além disso, todas
essas ferramentas são de código aberto, ou seja, qualquer pessoa pode replicá-las ou
contribuir para o seu aperfeiçoamento (com algumas regras). Isso é o que permite o
surgimento de diversas placas compatíveis, melhoradas e para as mais diversas
aplicações.

Figura1: Arduino Uno e Arduino IDE

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-o-que-e-arduino

O que tem na placa?


Existe uma grande variedade de placas Arduino, que podem ser utilizadas para
diferentes propósitos. Algumas placas podem ser um pouco diferentes da placa abaixo,
mas a maioria das placas Arduino possui a maioria destes componentes em comum.
Figura 2: Arduino Blackboard UNO

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-o-que-e-arduino

Alimentação (USB/Conector P4)


Cada placa Arduino precisa de uma maneira de ser conectada à uma fonte de
energia. O Arduino UNO pode ser alimentado a partir de um cabo USB proveniente do
seu computador ou a partir de uma fonte de alimentação de parede que é terminada em
um conector P4. Na imagem acima, a conexão USB é rotulada (1) e a entrada do P4 é
rotulada (2).
A conexão USB também é como você irá carregar o código em sua placa
Arduino.

OBSERVAÇÃO
15 V, pois você irá superar a tensão máxima do seu Arduino (e assim
queimá-lo). A tensão recomendada para a maioria dos modelos Arduino é
de 6 V a 12 V.
OBSERVAÇÃO: quando alimentar a sua placa por uma fonte
externa, verifique que o terminal positivo (+) é o terminal interno do
conector P4.
Pinos (5V, 3V3, GND, Analógicos, Digitais, PWM, AREF)
Os pinos na sua placa Arduino são os lugares onde você conecta os fios para
construir um circuito. O Arduino tem vários tipos diferentes de pinos, cada um dos quais
é rotulado na placa e usado para diferentes funções.
GND (3): abreviação de "ground" (terra em inglês). Existem vários pinos de
GND no Arduino, qualquer um deles pode ser utilizado para aterrar seu circuito;
5V (4) e 3V3 (5): o pino de 5V fornece 5 volts de energia e o pino de 3V3 fornece
3,3 volts. A maioria dos componentes simples usados com o Arduino trabalham somente
com 5 V ou 3,3 V.
Analógico (6): a área dos pinos rotulada com "ANALOG IN" (A0 a A5 no UNO)
é para os pinos analógicos. Esses pinos podem ler o sinal de um sensor analógico (como
um sensor de luminosidade) e convertê-lo em um valor digital para usar no código;
Digital (7): a área dos pinos rotulada com "DIGITAL" (0 a 13 no UNO) é para
os pinos digitais. Esses pinos podem ser usados tanto para entrada digital (como dizer
se um botão está pressionado) como para saída digital (como alimentar um LED);
PWM (8): o til (~) sinalizado ao lado de alguns dos pinos digitais (3, 5, 6, 9, 10
e 11 no UNO). Esses pinos atuam como pinos digitais normais, mas também podem ser
utilizados para algo chamado Modulação por Largura de Pulso (PWM).

OBSERVAÇÃO:
geralmente os pinos analógicos do
Arduino podem também ser usados
como entrada ou saída digital (isso
vale para A0 a A5 no UNO).

Botão de reset
Assim como a Nintendo original, o Arduino possui um botão de reinicialização
(9). Empurrando, ele conectará temporariamente o pino de reset (RST) ao GND e
reiniciará o programa carregado no Arduino. Isso pode ser muito útil se o seu código
não repetir, mas você quer testá-lo várias vezes.

OBSERVAÇÃO: o reset não


apaga o código carregado na placa,
ele serve somente para reiniciar a
execução do programa.
LED indicador de energia
No centro da placa existe um pequeno LED ao lado da palavra "ON" (10). Este
LED deve acender sempre que você ligar o Arduino a uma fonte de energia. Se esta luz
não ligar, há uma boa chance de haver algo errado e/ou algum defeito.

LEDs TX e RX
TX é a abreviação para transmitir, o RX é a sigla para receber. Essas marcas
aparecem um pouco na eletrônica para indicar os pinos responsáveis pela comunicação
serial. No Arduino, há dois lugares onde TX e RX aparecem: uma vez ao lado dos pinos
digitais 0 e 1, e uma segunda vez ao lado dos LEDs indicadores TX e RX (11). Esses
LEDs nos darão boas indicações visuais sempre que nosso Arduino estiver recebendo
ou transmitindo dados.

CI principal
O maior componente da placa, com várias pernas metálicas, é um CI, ou
circuito integrado (12). Pense nisso como o cérebro do nosso Arduino, pois é nele que
o código é executado e todos os dados são processados. O CI principal no Arduino é
diferente entre modelos de placa, mas geralmente é da linha ATmega de
microcontroladores da empresa Atmel.

Reguladores de tensão
Os reguladores de tensão (13) não são realmente algo que você pode mexer
em seu Arduino. Mas é potencialmente útil saber que estão lá e para o que servem. Os
reguladores de tensão fazem exatamente o que o nome diz, eles controlam a tensão
interna da sua placa Arduino. Pense nisso como um tipo de registro automático, ele faz
com que a tensão do circuito seja sempre a mesma, independente da tensão de
alimentação. Claro, tudo tem seus limites, então não ligue seu Arduino a qualquer fonte
com uma tensão maior que 15 V.

Qual placa usar com o kit?


Arduino, BlackBoard, Mega, Nano... tantas opções! O melhor é saber que,
independente da placa que você escolher, você conseguirá usar este material. Isto
porque os pinos das placas usados nos experimentos deste material são comuns a
todas as placas. Veja abaixo a compatibilidade entre os pinos das placas.
Figura 3: Pinagem do Arduino UNO

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-o-que-e-arduino

Figura 4: Pinagem do Arduino Mega

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-o-que-e-arduino

Introdução à Arduino IDE


Após ter realizado a instalação do Arduino IDE, abra o aplicativo para conhecer
o ambiente de desenvolvimento. Você deve visualizar uma janela similar a esta:
Figura 5: Interface Arduino IDE

Fonte: www.sparkfun.com

1. . Verificar: compila e aprova o seu código. O compilador detectará erros


de sintaxe (como ponto e vírgula ou parênteses faltantes);
2. Carregar: envia o seu código para a placa Arduino;
3. Novo: abre uma nova janela de código;
4. Abrir: permite abrir um esboço existente;
5. Salvar: salva o esboço atualmente ativo;
6. Monitor serial: abre uma janela que exibirá qualquer informação serial
que sua placa Arduino está transmitindo para o seu computador. Você estudará
melhor essa funcionalidade ao longo do material;
7. Nome do esboço: mostra o nome do esboço no qual você está
trabalhando atualmente;
8. Área do código: esta é a área onde você compõe o código para o seu
esboço;
9. Área de mensagens: é onde a IDE diz se houve algum erro no seu
código ou se o código foi compilado e carregado corretamente;
10. Console de texto: mostra mensagens de erro completas. O console de
texto é muito útil para a depuração;
11. Placa e porta serial: mostra a placa e a porta serial selecionadas
Instalando o driver da placa
Após a instalação da IDE em seu computador, conecte o cabo USB em sua
placa e depois a uma porta USB do computador. A placa deve ser reconhecida
automaticamente pelo computador, uma vez que a IDE já foi instalada. Quando o
computador reconhece a placa Arduino, uma porta de comunicação é criada para que
a IDE consiga se comunicar com a placa. No Windows você pode verificar a porta criada
acessando o Gerenciador de Dispositivos do sistema. Esta porta terá o nome COMx,
onde x é um número, e esta porta deverá ser selecionada na IDE do Arduino, no menu
Ferramentas > Porta. No Mac esta porta terá um nome como /dev/tty.usbmodemX, onde
novamente o x representa um número específico para a porta criada. Ainda no menu
Ferramentas, você deverá optar pela sua placa Arduino em Placas. Selecione tanto a
porta de comunicação quanto a placa.

Figura 6: Arduino IDE

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-software-e-drivers

Protoboard
Imagine que você está montando um circuito eletrônico, dimensionou os
componentes corretamente e a gora só precisa testar para verificar se tudo o que foi
feito vai funcionar corretamente. Cada teste que fosse necessário demandaria a
montagem de uma placa de circuito impresso, que envolveria horas de trabalho, gasto
de componentes, visto, etc. Pensando em facilitar e agilizar os testes, foi criada a "placa
de ensaio", mais conhecida como PROTOBOARD, que basicamente é uma placa
repleta de contatos que facilitam a montagem e testes de circuitos eletrônicos. Abaixo
iremos apresentar as funcionalidades de uma protoboard e alguns exemplos de ligações
básicas.
Para este tutorial vamos usar a protoboard de 400 pontos e é capaz de atender
todos os projetos desenvolvidos na apostila. Mas isso não impede que os projetos sejam
desenvolvidos com outros modelos de protoboards, como os modelos de 840 e 1660
furos, além dos modelos mais compactos, como as minis protoboards.
A primeira coisa que devemos ter em mente para saber usar uma protoboard é
conhecer suas interligações internas e seu layout. Como é possível observar na imagem
abaixo, uma protoboard na maioria das vezes é dividida em "faixa de terminais" e "faixa
de barramento".

Figura 7: Protoboard suas divisões

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

A faixa de barramento é os pinos destinados a alimentação do circuito, ou seja,


recebem os pinos de VCC e GND e tem seus furos interligados horizontalmente. Já a
faixa de terminais é a área destinada aos componentes e tem seus furos ligados
verticalmente. Observe que esta faixa é dívida em duas partes. Isso ocorre para que
seja possível conectar CIs (circuitos integrados) na placa.
Figura 8: Protoboard suas ligações

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Experimento básico
Neste experimento vamos ligar um LED, usando os pinos de 5V e GND da
placa Arduino, para testarmos as ligações internas da protoboard.

Lista de materiais
1x Placa Arduino + Cabo USB
1x Protoboard
1x LED Branco de Alto Brilho 5 mm

Testando a protoboard
Com o esquemático abaixo podemos alternar a posição do jumper da faixa de
terminais e da faixa de barramento para conferir as ligações da protoboard.

Figura 9: Ligação fora do LED

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Figura 10: Ligação no barramento do LED

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Como é possível observar acima, o LED apenas acenderá se as trilhas


estiverem interligadas, ou seja, o fato do LED não acender indica que alguma trilha do
circuito não está conectada e, portanto, podemos verificar qual é o caminho que a
corrente percorre na placa de testes.
Como podemos observar ao fazer esse teste com os LEDs coloridos ou com o

a diferença seja bem perceptível.

Observação: quando realizar o


teste, fique sempre atento às
ligações. NUNCA conecte trilhas
com potenciais diferentes, ou
seja, GND e VCC, pois isso causa
um curto circuito que poderá
danificar algum componente.

Lógica de programação
Lógica de programação é basicamente o fato de criar uma sequência que deve
ser seguida ordenadamente a fim de chegar a um objetivo. Não é de hoje que você
segue sequências predeterminadas, você tem feito isso sua vida inteira. O simples fato
de caminhar gerou um processo de sequenciamento, quando crianças, elaboramos em
nossa mente toda uma sequência para iniciar a caminhar, desde manter o equilíbrio até
dar os primeiros passos.

Figura 11: Arduino IDE

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

A estrutura básica onde escrevemos nosso código consiste em:


Bloco de Variáveis: onde ficarão as variáveis globais que utilizaremos no
código e chamadas de bibliotecas;
Setup do Código: onde informaremos se os pinos serão entradas, saídas,
abriremos a comunicação serial, etc;
Loop Principal: a parte do código que ficará rodando em um laço (loop) infinito;
Demais Funções: caso tenhamos outras funções a serem usadas no código.
Note que setup() e loop() também são funções, e são as únicas funções
obrigatórias em todos os códigos em Arduino.
Introdução à eletrônica

Corrente, tensão e resistência


Você já parou para pensar porque que uma pequena lâmpada acende quando
conectada à uma fonte de energia (uma pilha, por exemplo)? A lâmpada acende porque
quando conectamos ela à bateria, um fluxo de partículas portadoras de energia
(elétrons) é criado entre o terminal positivo e negativo da bateria. Esse fluxo é
denominado corrente elétrica e ocorre devido a diferença de potencial elétrico entre os
terminais da bateria. A diferença de potencial elétrico também é conhecida como tensão
elétrica.
Figura 12: exemplo de tensão e corrente

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Para que fique mais fácil de entender, vamos fazer uma analogia e comparar a
bateria aos dois tanques de água da figura abaixo. Imagine que a água é a energia (ou
elétrons), o tanque à esquerda é o terminal positivo e à direita é o negativo. Quando
conectamos os dois tanques com um cano, a água fluirá entre eles até que os níveis
fiquem iguais. Podemos então dizer que a tensão (V) pode ser representada pela
diferença de pressão que força a água através do cano. A água fluindo pelo cano
representa a corrente (A): quanto mais pressão, mais corrente. Já a resistência (R) é
representada pelo diâmetro pequeno do cano, que restringe o fluxo de água, podendo
ser comparado a um resistor que restringe o fluxo de corrente em um circuito.
Figura 13: Exemplo de tensão, corrente e resistência

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Essas três grandezas são relacionadas pela lei de Ohm. Ela determina que,
para um condutor mantido à temperatura constante, a razão entre a tensão entre dois
pontos e a corrente elétrica é igual a resistência elétrica. Em termos matemáticos, isso
pode ser representado pela seguinte equação:

Figura 14: fórmula de resistência

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Essa lei é base para quase todos os outros estudos e aplicações da


eletricidade. Ao longo desse material você poderá vivenciar uma série de exemplos que
utilizarão regras que são derivadas dessa equação. E como essa equação representa
matematicamente um fenômeno físico, suas grandezas devem apresentar uma unidade
física. É aí que o SI (Sistema Internacional de Unidades) entra e define as unidades de
cada uma delas. A resistência elétrica é medida em ohms e é simbolizado pela letra
grega ômega ( ). Já a tensão elétrica é medida em volts e representada por uma letra
V maíscula. E por último, a unidade da corrente elétrica é o ampere e seu símbolo é
uma letra A maiúscula.
Figura 15: Lei de Ohm

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Você perceberá que muitas vezes os valores de resistência, tensão e corrente


são muito pequenos ou muito grandes dependendo do circuito que você estará

leitura desses valores, o Sistema Internacional de Unidades também criou


multiplicadores que são adicionados junto à unidade de cada valor. Os principais
multiplicadores para o nosso contexto de estudo você encontra na tabela abaixo:

Figura 16: Multiplicadores

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Polaridade
A corrente elétrica percorre os circuitos eletrônicos passando pelos
componentes que, por sua vez, desempenhem suas funções. Por convenção,
assumimos que ela flui do terminal positivo para o negativo da sua fonte de energia.
Esse sentido é importante para sabermos como ligar alguns determinados
componentes, pois alguns deles possuem polaridade, ou seja, seu funcionamento
depende do sentido que a corrente passa pelos seus terminais. Existe também os
componentes que não possuem polaridade e seu funcionamento não depende do
sentido da corrente, como é o caso dos resistores.
A polaridade dos componentes é indicada das mais diversas formas, desde
marcações do terminal positivo ou negativo, uma diferença no tamanho nas pernas ou
em um esquema detalhado em sua documentação.
No LED, por exemplo, os terminais são indicados de duas maneiras: na
diferença entre as duas pernas (o terminal negativo tem comprimento menor que o
terminal positivo) e em um chanfro no corpo que indica o terminal de polaridade
negativa. Identifique em um dos LEDs do seu kit qual é o terminal positivo e qual é o
negativo de acordo com a imagem ao lado.
Obedecer essa característica dos componentes na hora de montar o circuito
pode ser a diferença entre o projeto funcionar ou não. Existe também a possibilidade de
você queimar o componente ou até mesmo sua fonte de energia se ligar um componente
com sua polaridade invertida.

Figura 17: Polaridade do LED

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Curto-circuito
Assim como inverter a polaridade de um componente, criar um curto-circuito é
uma prática proibida para quem quer evitar danos aos seus componentes ou até causar
um acidente mais grave!
Damos o nome de curto-circuito para um circuito que possui uma resistência
pequena o suficiente para elevar a corrente que passar por ele a níveis acima do
suportado por seus componentes e/ou fonte. Isso normalmente ocorre quando
conectamos um fio, ou qualquer condutor elétrico de resistência desprezível, entre os
terminais de uma fonte de energia, como os pinos 5V e GND de seu Arduino. Isso é o
mesmo que colocar uma resistência nula no circuito e, pela lei de Ohm, teremos que
para qualquer tensão aplicada, a corrente tenderá ao infinito.
Na prática isso causa um fluxo de energia muito maior que os componentes
podem suportar. Essa energia é então transformada em calor até que os componentes
literalmente queimem.
Figura 18: Curto Circuito

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Hardware
Para esse experimento vamos basicamente utilizar LEDs e resistores. A
nossa placa Arduino atuará apenas como uma fonte de energia, portanto não iremos
programá-la ainda.
Lembre-se de identificar os terminais dos LEDs e que os resistores não têm
polaridade, portanto não importa a ordem de seus terminais no circuito. Além disso,
você pode visualizar a diferença entre os dois tipos de resistores pelas cores dos anéis
em seu corpo (utilize a imagem ao lado abaixo como referência).
Figura 19: Resistores e LED

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino + Cabo USB
2x LED 5mm

1x Protoboard
Jumpers

Circuito
Esse é o primeiro circuito que irá ser montando e temos algumas dicas que vão
ajudar na montagem dos circuitos:
Dica 1: antes de montar qualquer circuito em seu Arduino, certifique-se que o
cabo USB está desconectado do computador. Assim você evitará queimar seus
componentes ou sua placa Arduino durante a montagem.
Dica 2: sempre verifique a polaridade dos componentes antes de conectá-lo ao
seu circuito.
Dica 3: não se importe com as cores dos fios na hora de fazer as ligações, o
importante é fazer a ligação correta! Preste bastante atenção ao fazer as
ligações, pois apenas um fio no lugar errado pode comprometer todo o
experimento.
Dica 4: sempre revise o seu circuito antes de energizar sua placa Arduino pela
USB de seu computador. Lembre-se que você pode ter criado um curto-circuito
mesmo sem perceber.
Agora é só colocar os componentes conforme está sendo mostrado na imagem
abaixo, bem como suas ligações. Note que os resistores possuem valores diferentes:

Figura 20: Circuito Elétrico

Pensando no conceito
de tensão, corrente e
resistência, você
consegue imaginar o
que vai acontecer com
cada um dos LEDs?

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

O que deve acontecer


Depois de montar o circuito você pode conectar sua placa à porta USB de seu
computador e, se você realizou todas as ligações corretas, perceberá os dois LEDs

Será que isso faz sentido? Vamos analisar matematicamente os dois circuitos
e verificar se faz sentido. Sabemos que a tensão total no circuito é de 5 V do Arduino,
e, apenas para facilitar os cálculos, vamos assumir que a resistência e,
consequentemente, a tensão do LED (sim, o LED oferece uma resistência à passagem
dos elétrons) são nulas. Então teremos:
Note que a corrente elétrica que passa pelo LED 1 é mais de 30x maior que a
do LED 2 e isso pode ser visualizado na intensidade luminosa de cada um dos LEDs.
Com isso podemos comprovar na prática a lei de Ohm e ainda descobrir uma
característica interessante sobre os LEDs: a intensidade luminosa de um LED é
proporcional à corrente elétrica que passa por ele.

EXPERIMENTO 1

Blink
Vamos começar nosso aprendizado fazendo o que a maioria das pessoas
fazem ao pegar um Arduino na mão pela primeira vez: piscar um LED! Por mais simples
que este experimento possa ser, ele é fundamental para o uso desse material. Ao
passarmos o código deste experimento para a placa saberemos se o driver está
instalado corretamente, se a placa escolhida é de fato a que vamos usar, além de
conseguir se familiarizar melhor com a elementos de um código Arduino estudados no
capítulo anterior.
Abra o código Blink que está disponível no menu de Exemplos na IDE do
Arduino. Para acessálo vá em: Arquivo -> Exemplos -> 01.Basics -> Blink na sua IDE
como é mostrado na imagem abaixo:
Figura 21: Arduino IDE

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Feito isto, o código do programa irá aparecer na tela do ambiente de


desenvolvimento. Conforme figura abaixo:
Figura 22: Código Blink

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Agora você irá enviar o seu primeiro programa para o Arduino. Você só
precisará selecionar corretamente sua placa e a porta COM. Na parte inferior direita de
sua IDE (1) você pode visualizar rapidamente essa informação. Se algo estiver errado,
vá no menu Ferramentas para consertar.
Tudo dando certo. Então clique no botão Verificar (2) para que o seu código
seja verificado e compilado. Em seguida é só clicar no botão Carregar (3). Se tudo
correr bem você verá a mensagem "Carregado" na parte inferior esquerda da tela (4)
e o LED da sua placa irá começar a piscar com intervalos de 2 segundos.

Figura 23: Arduino IDE

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Comentários
Antes de entender as funções do Arduino que geram sinais eletrônicos,
precisamos separar o que realmente é código interpretável do que são chamados de
comentários. Eles são "anotações" que são feitas no corpo do código para servir de
auxílio na leitura do código por outras pessoas ou até mesmo pelo próprio criador no
futuro.
Para fazer um comentário que irá se desenvolver por mais de uma linha é só
usar as notações: /* e */. O primeiro (/*) indica onde começam os comentários e o
segundo (*/) indica onde os comentários acabam. Para comentários de única linha,
basta utilizar a notação //. Tudo o que estiver na mesma linha e após essa notação será
considerado um comentário.
Figura 23: Comentários

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Acredite, comentar o código é uma boa prática de programação e você deve
praticá-la sempre que possível. Na hora que se escreve o código tudo faz sentido, mas
daqui a alguns meses é bem possível que você não se lembre ao certo qual lógica
utilizou ou o que fazem algumas linhas. Apenas tome cuidado para não exagerar, use
poucas palavras para comentar as partes importantes.

Saídas digitais
Na introdução à eletrônica você aprendeu que o LED acende quando existe
energia passando por ele. Então o que o Arduino faz nesse projeto é usar um de seus
pinos para controlar a energia que passa pelo LED, deixando com que ela passe por
um tempo e cortando seu fluxo em seguida. Assim o LED acende e apaga, acende e
apaga, e assim por diante.
Antes de utilizar um pino do Arduino, precisamos configurá-lo como uma
entrada (INPUT) ou uma saída (OUTPUT) através da função pinMode(). Neste caso,
utilizamos pinMode(LED_BUILTIN, OUTPUT) porque queremos definir o pino onde
está conectado o LED (LED_BUILTIN) como saída. Como existem diferentes placas
Arduino, foi criada a constante LED_BUILTIN para representar o número do pino onde
o LED da placa está conectado. No caso do Arduino/BlackBoard UNO e Mega, por
exemplo, o LED está conectado fisicamente ao pino 13.
Quando usamos um pino como saída podemos comandá-lo para ser HIGH (5
V) ou LOW (0 V) por meio da instrução digitalWrite(). Nela definimos o pino e a tensão
que queremos na saída. Quando o pino do LED é colocado em 5 V
(digitalWrite(LED_BUILTIN, HIGH)) o LED acende. Quando colocado em 0V
(digitalWrite(LED_BUILTIN, LOW)) o LED apaga.

Pausando o programa
A maioria das placas Arduino trabalha com um clock de 16MHz, o que significa
que ela executa 16 milhões de operações por segundo (algumas placas podem trabalhar
com um clock mais rápido ou mais lento). A função digitalWrite() leva menos de 4 us
para ser executada. Esse tempo não é suficiente para vermos o LED piscar, então
precisamos usar uma função para pausar o fluxo de programa. E para isso utilizamos a
função delay(tempo_ms). Essa função faz o programa ficar parado durante o tempo
determinado entre parênteses, neste caso 1000 milissegundos (é o mesmo que 1
segundo).
Piscando um LED fora da placa
Vamos tornar as coisas um pouco mais legais e piscar um LED um pouco maior
do que o que está na placa.

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino + Cabo USB
1x LED 5mm
1x Resistor 300
1x Protoboard
Jumpers

Circuito
Desconecte a placa de seu computador e monte o circuito conforme a imagem
abaixo. Lembre-se do que falamos sobre os LEDs e resistores para conectá-los
corretamente em sua protoboard.

Figura 24: Montagem do Circuito

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
EXPERIMENTO 2

Semáforo
Chegou a hora de montarmos o nosso primeiro projeto! Os projetos são uma
maneira de fixar os seus conhecimentos aprendidos. A ideia é usar todos os conceitos
novos para montar algo que tenha uma funcionalidade ou aplicação mais complexa e
divertida, como, por exemplo, o semáforo de LEDs. Pois bem, vamos construir um
pequeno semáforo feito com LEDs e algumas linhas de código, e você ainda exercita
sua educação no trânsito.

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino com Cabo USB
2x LED verde 5mm
1x LED amarelo 5mm
2x LED vermelho 5mm
5x Resistor 300
1x Protoboard
Jumpers

Circuito
O circuito será basicamente uma extensão do que montamos no experimento
Piscando um LED. Só que dessa vez montaremos dois LEDs a mais para formar as três
luzes de um semáforo: verde, amarelo e vermelho. Você pode assumir a imagem abaixo
como referência para montagem.
Figura 25: Montagem do Circuito

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Como uma das principais ideias deste material é fazer você aprender a
programar placas Arduino, recomendamos que você sempre digite o código de cada
experimento em sua Arduino IDE daqui em diante. Isso fará com que você se acostume
com a capitalização, os caracteres especiais e com toda certeza fará você absorver
melhor a lógica e implementação de cada exemplo.
Abaixo está o código que você deve digitar e carregar em sua placa.
Figura 26: Programação projeto semáforo

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Entendendo o código
O que o código faz é acender apenas o LED correspondente a cada uma das
fases do sinal: siga (verde), atenção (amarelo) e pare (vermelho). Note que para cada
um dos estados o tempo de pausa é diferente, alternando em delays de 3, 2 e 5
segundos. Claro que antes de ligar ou desligar o LED, foi realizada a configuração dos
pinos onde cada um deles está conectado como saída.

EXPERIMENTO 3

Funcionando um botão
Agora que você já é capaz de acionar cargas simples através do seu Arduino,
vamos aprender a trabalhar com o nosso primeiro sensor, o botão.
O botão é um dos dispositivos mais populares quando se fala de interface
humano-máquina. Seja no seu smartphone, nos elevadores ou até mesmo o próprio
interruptor da luz da sua sala, os botões são responsáveis por disparar ações em
diversos sistemas eletrônicos presentes no nosso dia-a-dia. Com um simples apertar
você pode ligar uma lâmpada, travar a tela do seu celular ou interagir com um jogo
eletrônico.
Vamos então entender mais sobre esse recurso simples e barato, que é
extremamente versátil e será utilizado em diversos exemplos ao longo desse material.

Entradas digitais
No experimento anterior você viu como os pinos do Arduino funcionam como
saída digital, onde a energia flui por eles até a carga. Entretanto, eles também podem
ser configurados para fazer o contrário, deixando com que a energia flua de fora para
dentro, podendo então ser mensurada. Assim fica fácil detectar quando a tensão no pino
é 5 V e quando é 0 V.
Então quando queremos usar um botão com nossa placa, basta conectá-lo
corretamente a um pino que esteja configurado como entrada e poderemos detectar se
o botão está pressionado ou solto.

Resistor de pull-down
Se você simplesmente conectar um dos pares de terminais ao VCC e o outro
ao pino do Arduino, quando você pressionar o botão o pino terá 5 V. Mas qual sinal
chegará ao pino do Arduino quando o botão não estiver pressionado? Nada? Na
verdade, a melhor resposta seria "qualquer coisa", pois como não tem nenhum sinal
válido (5 V ou 0 V) conectado a ele, o caminho fica livre para os ruídos existentes no
circuito. O pino do Arduino então poderá assumir um valor lógico verdadeiro ou falso a
qualquer momento.
Para retirar essas flutuações que prejudicam a interpretação dos sinais, nós
utilizamos normalmente um resistor de pull-down. Ele atua garantindo que o sinal de
GND chegue até o pino enquanto o botão não for pressionado, e protege o circuito
contra um curto circuito quando você aperta o botão. Veja um exemplo de ligação na
imagem abaixo.
Figura 27: Circuito botão

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Hardware
Neste experimento vamos usar um botão para controlar o estado de um LED.
O botão possui quatro terminais que são interligados aos pares (terminal a com c e b
com d). Ao pressionar o botão, os quatro terminais são conectados entre si, gerando
continuidade no circuito. Podemos então utilizar esse funcionamento para alterar o
estado lógico de uma entrada digital do Arduino.
Figura 28: Circuito botão

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino com Cabo USB
1x LED 5mm
1x Resistor 300
1x Chave Momentânea (PushButton)

1x Protoboard
Jumpers

Circuito
Colocando um resistor para limitar a corrente do LED e um resistor de pull-
down no botão, podemos então montar o circuito para esse exemplo conforme a imagem
abaixo:
Figura 29: Montagem circuito botão

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Ao carregar o código abaixo em seu Arduino, você poderá ver o LED acender
quando pressionar o botão e apagar quando soltar.
Figura 30: Código circuito botão

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Entendendo o código
Você já tinha aprendido anteriormente a configuração do pino do LED como
saída e o seu acionamento. Para configurar o pino do botão como entrada, também
utilizamos a função pinMode, só que dessa vez usamos INPUT no lugar de OUTPUT.
E para realizar a "escrita digital" no pino do LED usamos digitalWrite, enquanto
que para realizar a leitura digital se usa digitalRead. Ao contrário da função de escrita,
que não retorna nenhum valor, a função de leitura nos retorna o valor atual do pino entre
parentesis (nesse caso, o 9). Isso significa que se o botão estiver pressionado, o valor
da tensão no pino é de 5 V e a função retornará HIGH. Enquanto o botão estiver solto,
o valor é de 0 V, retornando então LOW.

Criando condições
Até o momento só tínhamos construído códigos sequenciais, que sempre
executavam uma linha atrás da outra. Agora nós precisamos realizar algum tipo de
desvio, pois acender ou apagar o LED depende de uma condição: o botão estar ou não
pressionado.
É para isso que entra a estrutura condicional if/else. Ela realiza um teste lógico
para decidir entre dois trechos de código. Ela executa o primeiro se a condição for
verdadeira e o segundo se a condição for falsa.
Figura 30: Código circuito botão

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

EXPERIMENTO 4

Buzzer
Buzzers podem ser divertidos e úteis em circuitos eletrônicos. O buzzer
consiste em um invólucro exterior com dois pinos para ligá-lo ao 5 V e GND. Dentro
desse invólucro existe um elemento piezoelétrico que consiste em um disco cerâmico
central rodeado por um disco de vibração de metal, normalmente feito de bronze.
Quando aplicamos uma corrente ao buzzer, o disco de cerâmica é contraído ou
expandido. Isso é o que gera o som que ouvimos. Variando a frequência do sinal no
buzzer, a velocidade das vibrações é alterada e modificam o passo do som resultante.

Buzzer passivo e buzzer ativo


Em geral é possível encontrar dois tipos de buzzer: o ativo e o passivo. De
construção mais complexa, o buzzer ativo é o mais fácil de utilizar. Ele já possui um
circuito oscilador interno que reproduz um som sempre da mesma frequência quando é
energizado. Já o buzzer passivo é mais simples, apenas um transdutor similar a um
pequeno autofalante. Sendo assim, o microcontrolador deve gerar a frequência para
que ele emita um som.

Hardware
O primeiro passo que tomaremos é fazer
o controle simples do buzzer. A ligação deste
componente é similar à ligação de um LED.
Entretanto, não é necessário utilizar um resistor
para limitar a corrente dele, você deve-se apenas
ficar atento à sua polaridade. Observe que na parte
de cima de seu buzzer existe uma marcação com o
sinal de positivo que indica o terminal positivo do
mini autofalante. Você deve então obedecer esta
polaridade na hora de ligá-lo.

Lista de materiais
Você precisará dos seguintes materiais para montar os circuitos desse capítulo:
1x Placa Arduino + Cabo USB
1x Buzzer Passivo 5V
2x Chave Momentânea (PushButton)
1x Protoboard
Jumpers

Circuito
Veja um exemplo simples da ligação do buzzer à placa Arduino:
Figura 31: Montagem circuito buzzer

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Com uma simples modificação no código do exemplo Blink, obtemos o código
abaixo já adaptado para o buzzer. Escreva o código em sua Arduino IDE e carregue-o
em sua placa.
Figura 32: Código do buzzer

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Entendendo o código
Consegue perceber a semelhança desse código com o código Blink?
Acionamos o buzzer por um segundo e desativamos por mais um segundo em um loop,
resultando assim em um "pisca-pisca sonoro". Veja que, ao contrário de como fizemos
com o LED, não utilizamos a função digitalWrite (isso até funcionaria se nosso buzzer
fosse ativo, ou seja, se ele tivesse um oscilador interno). Usamos a função tone, pois o
nosso buzzer é passivo e precisamos gerar uma frequência para que ele emita algum
som.
Para fazer o acionamento utilizamos uma instrução tone(10, frequencia). Sua
utilização é bem simples: devemos definir, nessa ordem, em qual pino e em qual
frequência iremos gerar o sinal. Esse sinal então será gerado até que a função noTone
seja chamada e pare de gerar a frequência no pino.

Variáveis
Além da função tone, temos outra palavra nova em nosso código, a int. Essa
palavra está relacionada a um conceito muito importante, presente em praticamente
todas as linguagens de programação: as variáveis. Imagine que você quer armazenar
um valor numérico, o estado de um botão ou até mesmo a frequência com que o seu
buzzer irá oscilar. As variáveis nos permitem armazenar esses valores na memória de
nossa placa para que possamos recuperá-los em outro trecho do código.
Quando criamos uma variável, estamos na verdade atribuindo um nome para
uma seção da memória do microcontrolador, e assim aquele espaço fica reservado para
que possamos ocupá-lo com o valor que desejarmos. Uma boa analogia é você pensar
que essa memória é como se fosse um armário cheio de gavetas, e que quando criamos
uma variável, estamos na verdade rotulando uma delas para guardar um valor dentro
dela.
Para cada tipo e tamanho de conteúdo existe um tipo e tamanho de gaveta. De
acordo com o tipo do seu valor (booleano, inteiro, racionais, etc) e também do tamanho
dele, é necessário especificar um tipo de variável na hora de criá-la. Por exemplo, se
você está lendo o estado de um botão que só pode assumir HIGH ou LOW (que é o
mesmo que 1 e 0 ou verdadeiro e falso), podemos utilzar uma variável do tipo bool.
Já para valores inteiros devemos utilizar o tipo int, ou long se o valor for realmente
grande.
Criando uma variável
Nesse código criamos nossa primeira variável, a , responsável por
armazenar o valor da frequência do sinal que será usado para acionar o buzzer. Para
declarar uma variável você precisa definir o tipo, o nome e opcionalmente deve inicializá-
la com um valor válido.

A primeira coisa a se fazer é definir o tipo da variável de acordo com o tipo de


informação que você pretende salvar dentro dela. Por exemplo, se for um valor inteiro,
você pode usar int. Para um valor fracionário, você pode usar float, e assim por diante.
Abaixo você encontra uma tabela com esses tipos e respectivos tamanhos.

Figura 33: Tabela de variáveis

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Em seguida você determina o nome que você precisará usar sempre que
desejar usar ou alterar o valor que está armazenado dentro dela. Para isso existem
algumas regras que devem ser seguidas para que não aconteçam problemas de
compilação ou de mau funcionamento:
O único caractere especial que pode ser utilizado é o underline ("_").
Letras acentuadas também são proibidas.
O nome da variável não pode ser iniciado com um número. Você pode
usar números, mas só após o primeiro caractere válido.
Não pode haver espaços no nome da variável. Você pode separar
palavras compostas com um underline.
O nome de uma variável não pode ser igual ao de uma palavra
reservada (setup, int, loop, etc).

Por último você atribui um valor inicial na variável para garantir que ela não
esteja ocupada por sujeira da memória do microcontrolador, pois isso pode ser
inconveniente. Para atribuir esse valor fazemos uso de um operador de atribuição,
representado por um sinal de igual ("="). Este operador aritmético nos permite modificar
o conteúdo interno de uma variável. Os outros operadores permitem também que
façamos operações matemáticas com os valores, como soma, multiplicação ou divisão.
Tem também o operador módulo (%) que resulta no resto da divisão de um número
inteiro por outro.
Figura 33: Tabela de variáveis

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Quando utilizamos a instrução int frequencia = 2000 , estamos criando uma


variável inteira cujo conteúdo será 2000. Podemos então utilizá-la em outra parte do
código, como na linha tone(10, frequencia). Quando o compilador ler a palavra
frequencia, ele irá buscar o valor contido nela, que neste caso é 2000.
Frequencímetro
Para que possamos entender com clareza como a frequência influencia no som
emitido pelo buzzer e como que as variáveis funcionam, vamos ampliar nosso circuito e
montar um frequencimetro. Abaixo deixamos um exemplo de como realizar essa ligação.

Circuito
Para isso vamos adicionar dois botões ao circuito que já está montado em
nossa protoboard.
Figura 34: Montagem dos botões

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Vamos programar a placa para que os botões consigam alterar a frequência do
buzzer entre um acionamento e outro, permitindo estudar o comportamento em
frequências altas e baixas.
Figura 35: Código dos botões

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Antes de você apertar qualquer um dos botões, o comportamento do sistema


deve ser o mesmo do início do experimento, um som na frequência de 2000 Hz a cada
1 segundo. Ao apertar e segurar o botão, você poderá ver que a frequência sonora será
alterada, para mais ou para menos, dependendo de qual botão você mantiver
pressionado.
Na construção do código temos algumas novidades. Uma delas é a utilização
de variáveis para armazenar o número do pino no qual estamos conectando nossos
componentes. Isso é uma boa prática por dois motivos básicos: facilidade na leitura do
código, pois ao ler a variável você já sabe o que está conectado, e também na
manutenção do código, pois se você precisar mudar um componente de pino, basta
mudar apenas no valor atribuído na declaração da variável e não em todos os pontos
onde o pino foi utilizado. Note que tem uma palavrinha const antes do int. Essa palavra
indica para o compilador que o valor armazenado dentro da variável é constante e não
pode ser alterado ao longo da execução do código. Isso não é obrigatório, mas é uma
boa prática, pois estamos tratando de pinos que normalmente não mudarão durante a
execução do programa. Você pode utilizar esse recurso sempre que quiser prevenir a
mudança do valor de uma variável que deve permanecer fixo.
Outra novidade é a utilização da palavra INPUT_PULLUP na configuração dos
pinos dos botões como entrada. Ao utilizar essa instrução, não só estamos declarando
o pino como entrada, mas também habilitando internamente no chip um resistor entre o
pino e o VCC, portanto, criando um resistor de pull-up em nosso botão. A função deste
resistor é a mesma que o resistor de pull-down, mas dessa vez, quando você pressiona
o botão, o valor no pino é LOW e não HIGH. Por este motivo é que na comparação
temos if (digitalRead(pinoBotao2) == LOW) .

EXPERIMENTO 5

Projeto Piano

Notas musicais
Quando a corda de um violão vibra, ela movimenta moléculas de ar ao seu
redor na mesma frequência de vibração da corda. Os nossos ouvidos então captam
essa vibração, processando e transformando em um som ao nosso cérebro. Para cada
frequência de vibração, o cérebro atribui um som diferente, que são denominadas notas
musicais. Portanto, as notas musicais são os elementos mínimos de um som.
Para facilitar a escrita e aumentar a velocidade de leitura, foi criada uma
notação universal permitindo que cada nota seja identificada por uma letra, facilitando
assim a comunicação entre músicos de diferentes países. Existem sete letras para
representar as notas musicais:

Agora é hora de mostrar que você entendeu tudo sobre os componentes


estudados até aqui e realizar um circuito envolvendo LEDs, botões e buzzer.

Lista de materiais
Você precisará dos seguintes materiais para montar os circuitos desse capítulo:
1x Placa Arduino + Cabo USB
1x Buzzer Passivo 5V
1x LED verde 5mm
1x LED amarelo 5mm
1x LED vermelho 5mm

3x Chave Momentânea (PushButton)


1x Protoboard
Jumpers

Circuito
Deixamos abaixo o circuito que iremos utilizar até o final desse projeto.

Figura 36: Montagem do Projeto

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Nesse primeiro código iremos utilizar apenas o buzzer que está no circuito para
executar cada uma das notas musicais em uma sequência. De diferente, só as variáveis
que armazenam as frequências correspondentes a cada nota musical, porque o restante
já foi abordado antes. Escreva o código em sua Arduino IDE e carregue-o em sua placa.
Figura 37: Código do Projeto

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Figura 38: Código do Projeto

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
O que deve acontecer
Ao carregar o código para a placa, o buzzer deve tocar por um segundo cada
uma das notas musicais de maneira sequencial. Ao final, ele desligará o buzzer por 2
segundos e reiniciará a sequência.

Piano
Ao executar o código anterior você poderá ouvir as notas musicais, mas não
poderá controlá-las. Agora vamos implementar um código que permita o controle de
qual nota será executada e ainda acionar LEDs para indicar visualmente qual frequência
está sendo aplicada ao buzzer.

Figura 39: Código do Projeto Piano

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Figura 40: Código do Projeto Piano

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Notou algo diferente em como as instruções if e else foram utilizadas? Quando


usamos else if, estamos falando para o compilador só verificar se a instrução entre os
parêntesis é verdadeira quando o if anterior for falso. Ou seja, o compilador só verifica
se o botão 2 está pressionado quando o botão 1 não estiver acionado. E só verifica se
o botão 3 está apertado se os outros dois estiverem soltos. Se nenhum está
pressionado, ele executa o que estiver dentro do último else. Ao apertar os botões, cada
um será responsável por emitir uma nota, você pode então criar melodias.

EXPERIMENTO 6

Sensor De Luz
Sensores fotoelétricos
Resumidamente, um sensor fotoelétrico é um componente eletrônico que
responde eletricamente às variações de intensidade de luz incidente. Um bom exemplo
desse tipo de sensor são os LDRs ou Light-Dependent Resistor. Este componente varia
sua resistência em função da intensidade da luz, respondendo com máxima resistência
em situações de pouca luminosidade e mínima resistência em casos com alta
luminosidade (guarde esta informação, pois ela será útil mais para frente).

Divisor de tensão
Como as placas Arduino não medem resistência, pois a única coisa que o
Arduino consegue interpretar é tensão, precisaremos usar um artifício para efetuar a
leitura dos sensores. Para isso usaremos o circuito divisor de tensão. Este circuito é
necessário pois ele faz com que a tensão de entrada seja fracionada, permitindo que a
leitura da tensão possa ser efetuada. Na imagem abaixo podemos visualizar o
esquemático do circuito divisor de tensão e como devemos montá-lo para usar um LDR.
Repare que sem o resistor d
(GND), independente da resistência do LDR.

Figura 41: Circuito elétrico LDR

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Lendo um LDR
Nesta primeira etapa do capítulo, vamos entender como um sensor de
luminosidade LDR funciona com um Arduino.

Lista de materiais
Você precisará dos seguintes materiais para montar os circuitos desse capítulo:
1x Placa Arduino + Cabo USB
1x Protoboard
1x Sensor de Luminosidade LDR 5mm
1x Resi
Jumpers

Circuito
Depois de toda essa teoria, vamos aplicar o que foi visto. Para isso monte o
circuito abaixo:

Figura 42: Montagem LDR

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Código
Abaixo está o código que será utilizado neste experimento. Copie ele em sua
Arduino IDE e carregue para sua placa.

Figura 43: Código LDR

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Entendendo o código
O primeiro conjunto de instruções são as definições e declaração das mesmas:
const int pinoLDR = A0: isso significa que pinoLDR é uma
CONSTANTE INTEIRA, por isso o const int. É uma constante porque
a posição do sensor ligado no Arduino não mudará, ela ficará sempre
na entrada analógica 0.
int leitura = 0: a variável leitura vai armazenar o valor lido diretamente
pelo pino analógico depois da conversão feita pelo ADC, sem
tratamento nenhum. É do tipo inteiro (int) pois este valor vai de 0 a 1023.
float tensao = 0.0: aqui temos que tensao é uma variável do tipo float
e começa valendo zero. Este tipo de variável aceita casas decimais, e
nós teremos uma precisão de tensão de duas casas depois da vírgula
(acredite, será uma ótima precisão).
Seguindo com o programa vamos à parte do setup.
O comando Serial.begin serve para dizer ao Arduino que você irá
coletar ou escrever dados no Arduino utilizando a porta serial, ou seja,
através do cabo USB você vai ler ou escrever valores no mundo
externo. O número entre os parênteses trata-se da taxa de dados com
a qual a placa vai se comunicar com o computador, neste caso
usaremos 9600 bps.
Já o comando pinMode(pinoLDR, INPUT), como visto nos tutoriais
anteriores, declara o pino do LDR (A0) como entrada.
Quanto ao loop principal:
O loop é muito simples. Na primeira linha, o Arduino irá assimilar o valor lido
na entrada analógica 0 (que é nossa constante pinoLDR) à variável leitura. Após isto,
realizamos uma conversão de valor digital para tensão e salvamos o resultado na
variável tensao . Essa é uma fórmula fruto de uma regra de três simples.
Depois da operação, colocamos os seguintes comandos:
O primeiro comando significa que iremos escever na porta serial a frase
"Tensão: ". Logo depois, mostramos na tela o valor da variável tensao que já está em
Volts (V). Veja que nos primeiros comandos seriais, escrevemos Serial.print e no último
escrevemos Serial.println. A diferença entre print e println é que este último pula a linha
depois do que escrever. Então depois de enviar o valor de tensão, pulamos uma linha
pra ficar mais fácil de ler. Depois damos um delay, ou seja, uma espera de 1 segundo
para a próxima leitura.
Faça o upload do código para sua placa e abra, finalmente, o monitor serial de
que que tanto falamos, mas mal sabemos o que ele é e o que ele faz. O monitor serial
é a tela na qual são exibidas as mensagens que o Arduino envia para o computador, e
também a tela pela qual podemos enviar comandos em tempo real para o Arduino. Para
ver os dados no monitor serial, basta clicar no botão indicado com a seta vermelha na
figura a seguir, no ambiente de desenvolvimento do Arduino.
Figura 44: Código LDR

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Ao abrir o monitor serial você deverá observar os valores da leitura analógica


e de tensão do seu LDR, parecidos com os da imagem abaixo.

Figura 45: Monitor Serial

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Vale lembrar que a porta COM não é necessariamente 185, como está no topo
da imagem anterior. Cada computador tem sua numeração de portas conforme os
dispositivos que você já conectou a ele.
Veja que no canto inferior direito temos selecionado 9600 bps. Isto tem de ser
selecionado conforme a configuração do parâmetro no comando Serial.begin do setup
de seu programa.

Ampliando o experimento
Nosso objetivo é acionar um LED, ou uma carga, quando a luminosidade do
ambiente estiver baixa. Para isso o circuito que montaremos será o mesmo do sensor
de luz mais um circuito para acender um LED.

Lista de materiais
Você precisará dos seguintes materiais para montar os circuitos desse capítulo:
1x Placa Arduino + Cabo USB
1x Protoboard
1x Sensor de Luminosidade LDR 5mm
1x Resistor 10k
1x LED VERDE 5mm

Jumpers

Circuito
Nesse momento vamos montar o projeto de iluminação automatizada. Para
isso, monte o circuito abaixo e carregue o código na placa Arduino.
Figura 46: Montagem do sistema de LDR

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Carregue a programação abaixo.
Figura 47: Código do sistema de LDR

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
O entendimento do código é parecido com o anterior. Neste caso adicionamos
mais um comando pinMode, pois necessitamos de um pino extra para o acionamento
do LED. Já a estrutura condicional exemplificada abaixo determina quais são as
condições para que o LED acenda. No nosso código determinamos que o componente
ficará ligado para ambientes com pouca iluminação, é importante lembrar que este valor
pode mudar de projeto para projeto.

EXPERIMENTO 7

Trabalhando Com Gráficos


Até o momento, quando fazemos o teste de algum sensor ou qualquer outro
dispositivo, sempre usamos o monitor serial. Ele é um ótimo recurso, pois podemos
visualizar os resultados da programação ou usá-lo como uma ferramenta de auxílio na
correção dos códigos. Porém quando precisamos analisar os dados, nem sempre a
compreensão dos dados é fácil.
Mas o que poderia ser usado para compreendermos melhor os dados? Muitas
vezes, quando queremos avaliar alguma informação qualitativamente ou
quantitativamente. O recurso que proporciona isso da maneira mais rápida e fácil é o
gráfico. Este recurso será abordado neste tutorial com o Plotter Serial, mas não se
desespere, pois, este tutorial não se limitará a esta nova ferramenta. Como de costume,
vamos apresentar outro componente: o potenciômetro.
Figura 48: Plotter Serial

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Potenciômetro
Facilmente encontrado como opção para controlar o volume em aparelhos de
som, o potenciômetro é um componente eletrônico que possui resistência elétrica
ajustável. Normalmente é um resistor de três pinos onde a conexão central é deslizante
e manipulável. Podemos dizer que por si só o potenciômetro é um divisor de tensão. Em
esquemas elétricos ele é representado da seguinte forma:
Figura 49: Representação potenciômetro

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Hardware
Como explicado anteriormente, um potenciômetro pode ser considerado como
um divisor de tensão. Isso se reflete em suas ligações, que consiste em VCC, GND e
OUT. Neste caso, não precisamos nos preocupar tanto com qual lado do componente
ligaremos o 5V e o GND, porque apenas a direção de rotação será influenciada. Veja
na imagem abaixo.
Figura 50: Potenciômetro

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Vamos usar o potenciômetro para fazer uma leitura analógica com o Arduino e
visualizar os valores em um gráfico.

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino com Cabo USB
1x Potenciômetro
1x Protoboard
Jumpers

Circuito
Monte o circuito conforme a imagem abaixo.

Figura 51: Montagem potenciômetro

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Carregue o código abaixo em sua placa Arduino.
Figura 51: Código potenciômetro

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Entendendo o código
O código é praticamente o mesmo dos projetos anteriores, basicamente faz a
configuração e a leitura dos pinos analógicos e, por fim, exibe o resultado no monitor
serial. Mesmo que o código seja o mesmo, vamos recapitular os comandos principais
da comunicação serial: Serial.begin(9600), Serial.print() e Serial.println(). Estes
comandos também são usados para gerar os gráficos com a IDE do Arduino.
É importante saber o que cada comando faz, pois o plotter serial segue algumas
regras para exibir o gráfico:
Os gráficos gerados estão sempre em função do tempo;
Para que o gráfico seja exibido, é necessário que o código tenha pelo
menos um comando de quebra de linha (comando Serial.println());
E por fim cada informação deve ser separada por um espaço, ou seja,
adicione um comando Serial.print(" ") entre cada variável a ser exibida.
Veja que nosso código atende às regras. Dentro da rotina loop temos o
comando de quebra de linha e, como não enviamos mais nenhum comando de escrita
na porta serial, não necessitamos enviar um espaço.
O que deve acontecer
É esperado que, possamos visualizar um gráfico da tensão do potenciômetro
em função do tempo e que as mudanças exibidas no gráfico sejam proporcionais a
mudança de posição do potenciômetro. Porem assim como o monitor serial, precisamos
abrir uma janela que exiba o resultado, neste caso para plotar gráficos, clique em
"Ferramentas" e em seguida "Plotter Serial".

Figura 52: Localizando o Serial plotter

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Ao abrir a janela, o gráfico começará a ser plotado. Veja que as escalas são
geradas automaticamente e quando variamos a posição do eixo do potenciômetro, o
gráfico exibe estas variações.
Figura 52: Serial plotter

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Adicionando gráficos
Agora, e se você quiser plotar múltiplos gráficos? Muito simples, basta o usar
o comando Serial.print(" ") para separar uma variável da outra. Quando usamos este
comando no código anterior, podemos exibir a tensão sobre o potenciômetro e ao
mesmo tempo o valor que a porta analógica está lendo. Carregue o código a seguir para
entender melhor essa função.
Figura 53: Programação multi gráficos

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

No código acima criamos uma situação hipotética. Simplesmente multiplicamos


algumas variáveis e dividimos outras, só para mostrarmos que é possível plotar diversas
variáveis ao mesmo tempo. Veja o resultado na imagem abaixo.
Figura 53: Multi gráficos

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
EXPERIMENTO 8

Projeto Dimmer

O dimmer é um dispositivo usado para controlar o brilho de lâmpadas. Esse


dispositivo regula a tensão elétrica média (logo a corrente elétrica média) aplicada sobre
a carga (lâmpada). Você provavelmente deve se lembrar que a forma de controle de
brilho que abordamos nos primeiros tutoriais era feita com o uso de resistências. No
caso do dimmer, isso é feito pela variação do tempo em que mantemos uma carga ligada
e desligada. Esse conceito pode ser aplicado tanto para circuitos de corrente alternada
(AC) como para circuitos de corrente contínua (DC). Em circuitos AC, normalmente se
controla o atraso do acionamento da tensão aplicada na carga. Já em circuitos DC, esse
controle é feito por PWM, conceito que veremos a seguir.

Como a placa Arduino só é capaz de gerar pulsos de 0 ou 5 V, isso implica que


a placa não é capaz de gerar sinais analógicos, ou seja, o controlador da placa Arduino
realmente não possui saidas analógicas. Para que possamos obter uma "saída
analógica", usamos um artifício obtido com sinal PWM (Pulse Width Modulation).

PWM
O PWM é uma técnica que consiste em controlar a proporção de tempo em que
mantemos o sinal ligado e desligado, dentro de um período fixo. Essa proporção de
acionamento é conhecida como duty cycle. Resumidamente, quando dizemos que o
duty cycle de um pino PWM é de 50%, isso implicará que a corrente obtida será de 50%,
e o LED que estiver ligado a este pino, por exemplo, ficará com metade do brilho. A
figura a baixo ilustra essa ideia.
Vamos construir um dimmer simples, usando um pino digital comum para
controlar o brilho de um LED. Lembrando que o experimento que desenvolveremos
agora não é a forma ideal de usar sinais PWM, porém é a forma mais simples de mostrar
o fenômeno resultante de um controle por um sinal PWM.
Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino + Cabo USB

1x LED Branco de Alto Brilho 5mm

1x Protoboard
Jumpers

Circuito
Monte o circuito conforme a imagem abaixo.

Figura 54: Circuito dimmer

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Grave o seguinte código na placa:
Figura 55: Código dimmer

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

O que deve acontecer


Como o valor retornado pela leitura do potenciômetro varia de 0 a 1023,
utilizamos um período de 1023 para definir os tempos de acionamento. Assim, o tempo
de LED ligado é o valor lido no pino analógico, e, consequentemente, o tempo de LED
desligado é a diferença do tempo de LED ligado e do período.
Depois que o código for gravado, o LED simplesmente piscará com diferentes
intervalos de tempo, dependendo da leitura do potenciômetro. Se trocarmos o comando
delay (milissegundos) para delayMicroseconds (microssegundos), observamos que o
LED não piscará, mas terá diferentes brilhos.

Dimmer com PWM


Agora que conhecemos como é o funcionamento dos sinais PWM, vamos partir
para a implementação desse sinal nas placas Arduino.

Circuito
O circuito que montaremos para este experimento é semelhante ao circuito
usado anteriormente. Porém, ao invés do pino 12 usado no circuito anterior, vamos
usar o pino 11, que é um dos pinos dedicados aos sinais PWM. Lembrando que no
caso da placa Arduino Uno, o sinal PWM pode ser obtido nos pinos 3, 5, 6, 9, 10 e 11,
todos indicados com um til ( ) ou um asterisco ( ) (dependendo da versão da placa),
como a imagem abaixo:

Código
Grave o seguinte código na placa:
Figura 55: Código dimmer PWM

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

EXPERIMENTO 9

LED RGB

Seu funcionamento é muito parecido com os LEDs que usamos até o momento,
porém com algumas modificações. A primeira coisa que podemos ver de diferente é a
sua morfologia, que em vez de apresentar dois terminais, agora apresenta quatro, sendo
que o maior pode ser o cátodo, para LEDs de cátodo comum, ou o ânodo, para LEDs
com ânodo comum. Ou seja, isso nos indica que um LED RGB é basicamente a junção
de três LEDs. A imagem a seguir mostra a representação do componente em esquemas
elétricos, e ao mesmo tempo ajuda a entender como é a ligação interna do componente.

Figura 56: Morfologia LED RGB

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Como o componente apresenta um pino de cátodo, podemos concluir que é um


componente que depende da sua polarização, ou seja, devemos ligar o GND no pino
maior. Nos demais pinos ligamos a alimentação de cada cor. Por conter as cores
vermelho, azul e verde, este componente possibilita que as cores sejam misturadas,
permitindo a obtenção diversas cores.
Agora que conhecemos o LED RGB, vamos testá-lo e assim comprovar seu
funcionamento na prática. Neste experimento usaremos botões para acionar cada cor
individualmente.

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino com Cabo USB
1x LED RGB
3x Resistor 300
3x Chave Momentânea (PushButton)
1x Protoboard
Jumpers
Circuito
Monte o circuito abaixo com os componentes. Para posicionar o LED RGB,
considere que o pino maior é o cátodo comum, ou seja, ele deve estar conectado ao
GND da placa.
Figura 57: Circuito do LED RGB

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código

Carregue o código abaixo em sua placa.


Figura 58: Código do LED RGB

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Entendendo o código
Neste código fazemos todas os procedimentos habituais, de definir variáveis,
configurar os pinos, e por fim, escrever a rotina que será executada infinitamente (loop).
Essa rotina usa três condicionais if, que verificam o estado de cada botão. Caso o botão
seja pressionado, seu respectivo LED é aceso, senão ele é apagado.

O que deve acontecer


O nosso objetivo com este código é acender cada cor do LED RGB
separadamente usando os botões. Aperte dois ou mais botões ao mesmo tempo para
combinar as cores, e veja como você pode criar várias cores diferentes com o mesmo
componente!

EXPERIMENTO 10

LED RGB + Potenciômetro

Neste projeto utilizamos botões para selecionar a cor do LED RGB e um


potenciômetro para mudar o brilho.

Lista de materiais
1x Placa Arduino com cabo USB
1x LED RGB

4x Chave Momentânea (PushButton)


1x Protoboard
Jumpers
Figura 59: Circuito do LED RGB e potenciômetro

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
O código foi desenvolvido tendo como base o exemplo do experimento anterior,
por isso algumas partes são bem parecidas. Carregue o código abaixo em sua placa
Arduino.
Figura 60: Código do LED RGB e potenciômetro

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Figura 61: Código do LED RGB e potenciômetro

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Entendendo o código
O código foi dividido em três condicionais principais if, um para cada cor.
Quando um dos botões de seleção de cor é pressionado, verifica-se se o botão de ajuste
também foi acionado. Caso isso ocorra, o código atualiza a variável de PWM daquela
cor pelo comando pwmX = map(leituraPotenciometro, 0, 1023, 0, 255) . Caso o botão
de ajuste não tenha sido pressionado, o código apenas aciona o LED da respectiva cor
com o último valor de PWM definido. Se nenhum dos dois botões for pressionado, o
LED é desligado.

EXPERIMENTO 11

Aferindo temperatura e umidade relativa do ar

Temperatura e umidade são grandezas diretamente ligadas à nossa sensação


térmica. A alta umidade durante dias quentes, por exemplo, faz a sensação térmica
aumentar, ou seja, temos a impressão de que está mais calor. Esses valores geralmente
são relacionados com outras grandezas, como direção e velocidade do vento, e
fornecem uma boa base para a previsão do tempo. Nesse experimento aprenderemos
a realizar a leitura desses dois indicadores utilizando apenas um sensor: o sensor de
temperatura e umidade DHT11.

Como o DHT11 funciona?


Composto por um componente medidor de umidade e um termistor NTC para
temperatura, ambos conectados a um controlador de 8-bits, o DHT11 utiliza um
protocolo simples para enviar as leituras dos sensores usando apenas um fio de
barramento.
Figura 62: Hardware do sensor DHT11

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Vamos conectar o DHT11 no Arduino para fazermos uma leitura simples e


entender como ele funciona. Este sensor usa apenas um fio de sinal para transmitir
dados ao Arduino. A alimentação vem de fios separados de VCC e GND. É necessário
um resistor de pull-up de 10k ohm entre a linha de sinal (pino 2) e a linha de 5 V (pino
1) para garantir que o nível do sinal permaneça alto por padrão.
Dica: NC significa "não conectado", quando dá nome a terminais de
componentes em eletrônica.
Figura 63: Hardware do sensor DHT11

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino + Cabo USB
1x Sensor de Temperatura e Umidade DHT11

1x Protoboard
Jumpers

Circuito
O circuito é bem simples. Alimentamos o sensor com 5 V, através dos pinos
VCC e GND, e ligamos o pino de sinal ao pino 9 do Arduino. Observe que o resistor de
10k ohms foi colocado entre os pinos 1 e 2 do sensor.
Figura 64: Circuito do sensor DHT11

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Implementar o protocolo de comunicação com o sensor byte a byte não é o
foco desse material, por esse motivo iremos utilizar uma biblioteca chamada DHT.h que
fará isso por nós, assim podemos nos preocupar apenas com a lógica envolvida.
Internamente a biblioteca DHT.h faz referência à biblioteca Adafruit_Sensor.h, por
esse motivo precisaremos instalar as duas bibliotecas para que o código possa ser
compilado.
Após fazer o download das duas bibliotecas, abra a IDE do Arduino e vá até o
Gerenciador de Bibliotecas, onde você pode adicionar rapidamente uma biblioteca que
está compactada no formato ZIP ou até mesmo a pasta. Para isso abra o menu Sketch
> Incluir Biblioteca (Include Library) > Adicionar Biblioteca .ZIP (Add .ZIP Library...)
conforme a imagem abaixo.
Figura 65: Incluindo biblioteca do sensor DHT11

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Selecione a primeira biblioteca na pasta onde foi feito o download e clique em


Abrir. Caso tenha seguido todos os passos corretamente, você verá uma mensagem
"biblioteca adicionada às suas bibliotecas". Repita os passos para a outra biblioteca e
você estará pronto para prosseguir.
Carregue o código abaixo em sua placa Arduino.
Figura 65: Código do sensor DHT11

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

O que deve acontecer


Agora basta abrir o monitor serial e você deverá ver leituras dos valores de
temperatura e umidade como na imagem abaixo
Figura 65: Monitor serial.

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

EXPERIMENTO 12

Alarme sonoro ativado por mudança de temperatura

Vamos simular o funcionamento de uma estufa, onde se precisa ter um controle


de temperatura. Caso haja uma alteração de temperatura fora da faixa programada, irá
soar um alarme, evitando assim temperaturas indesejadas.

Lista de materiais
Você precisará dos seguintes materiais para o desenvolvimento dessa
atividade:
1x Placa Arduino + Cabo USB
1x Sensor de Temperatura e Umidade DHT11
1x Buzzer
1x LED RGB 5 mm
3x Resistor 300
1x Resistor 10 k
1x Protoboard
Jumpers

Circuito
O sensor DHT11, juntamente com um buzzer e um LED RGB, farão parte desse
circuito. Conforme mostra abaixo:
Figura 66: Circuito do sistema de alarme

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Digite o código abaixo em sua Arduino IDE, compile-o e envie-o para sua placa.
Figura 66: Circuito do sistema de alarme
Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Entendendo o código
O código desse projeto verifica a temperatura e identifica em qual faixa ela se
encontra. Se a temperatura estiver dentro da faixa ideal (20 a 30 ºC), o LED acende em
verde e o buzzer se mantém desligado. Caso a temperatura esteja levemente fora da
faixa recomendada (até 35 ou 15 ºC), uma luz azul acenderá e o buzzer tocará numa
frequência de 1000 Hz a cada meio segundo informando o leve desvio. Já se o valor
estiver muito fora do ideal, valores maiores que 35 ºC ou menores que 15 ºC, o LED
acenderá vermelho e o buzzer tocará a cada um segundo numa frequência de 2000 Hz
indicando um alerta máximo.
EXPERIMENTO 13

Aferindo distâncias com o sensor HC-SR04

Quando pesquisamos por sensores de distância, encontramos diversos tipos,


como sensor o ultrassônico, o infravermelho, o fotoelétrico, entre outros. Esta variedade
ocorre, pois como os próprios nomes demonstram, existem muitos fenômenos físicos
que possibilitam a medição de distâncias. Mas ao mesmo tempo que todos medem
distâncias, cada tipo de sensor tem situações específicas de aplicações, como os
sensores ultrassônicos, que podem ser encontrados em aplicações como sensores de
ré, sensores de presença para estacionamento, monitoramento de nível, etc.
O sensor HC-SR04 baseia seu funcionamento nas propriedades físicas de
ondas sonoras. Como essas ondas têm a capacidade de reflexão e de velocidade
definidas, é possível determinar distâncias através do intervalo de tempo que a onda
demora para atingir um objeto e voltar. Esta forma de medição é análoga ao meio que
os morcegos usam para sua localização, chamada de ecolocalização.
Agora que sabemos qual é a principal propriedade física envolvida no
funcionamento do sensor, vamos explicar o que realmente o sensor faz. Pegue o sensor
HC-SR04 que se encontra no seu kit e repare que ele possui quatro pinos: VCC, TRIG,
ECHO e GND. Para medir alguma distância com este sensor, a primeira coisa que
devemos fazer é enviar um pulso para o pino TRIG do sensor. Quando o sensor recebe
este pulso, oito pulsos sônicos consecutivos são emitidos pelo emissor do sensor, para
que logo em seguida seja feita a leitura do pino ECHO, que ficará em nível lógico alto
quando o sensor receber a onda refletida. Quando a onda é recebida, o tempo de ida e
volta será determinado pela placa controladora (Arduino UNO). Como sabemos que a
velocidade do som é de aproximadamente 340 m/s, é possível determinar a distância
usando a equação abaixo.

Observe que a equação usada é muito simples, trata se distância =


velocidade x tempo, com uma diferença, a equação acima é dividida por 2. Isso deve
ser feito pois o tempo obtido pelo sensor corresponde ao período de ida e volta da onda,
ou seja, se não dividirmos a equação, o resultado seria o dobro da distância real.

Lista de materiais
1x Placa Arduino + Cabo USB
1x Protoboard
1x Sensor Ultrassônico - HC-SR04
Jumpers

Circuito
Monte o circuito conforme a imagem abaixo.
Figura 67: Circuito do sensor ultrassônico

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código
Como explicado, o sensor ultrassônico precisa de um conjunto de comandos
para medir distâncias. Isso implica que, cada vez que algum projeto usar este sensor, o
mesmo conjunto de comandos deverá ser usado. Para evitar que o código fique muito
repetitivo, extenso, confuso e trabalhoso, é recomendado a utilização de funções, mais
especificamente para este caso, utilizar funções com retorno.
Carregue o código abaixo em sua placa Arduino.
Figura 68: Código do sensor ultrassônico

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

O que deve acontecer


Para este experimento, é esperado que ao acessarmos o monitor serial da IDE,
seja possível visualizar as leituras do sensor feitas com intervalos de 100 ms. Veja na
imagem a seguir as mensagens esperadas.
Figura 68: Monitor Serial do sensor ultrassônico

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

EXPERIMENTO 14

Simulando um sensor de ré

Quando for montar o circuito, verifique sempre a polaridade do buzzer e dos


LEDs. Caso a ligação não esteja correta, o componente não funcionará. Outro ponto
que devemos estar atentos é com relação à alimentação do sensor, que deverá ser de
5 V. Caso a alimentação seja feita em 3,3 V, o sensor não fará as leituras corretamente
e, se eventualmente a alimentação for superior a 5 V, o sensor irá queimar.

Lista de materiais
1x Placa Arduino + Cabo USB
1x Protoboard
1x Sensor Ultrassônico - HC-SR04
1x Buzzer Passivo 5 V

1x LED Vermelho 5 mm
2x LED Amarelo 5 mm
3x LED Verde 5 mm
Jumpers
Circuito
Monte o circuito conforme a imagem abaixo.
Figura 69: Circuito sensor de ré

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Código

Carregue o código abaixo em sua placa Arduino.


Figura 69: Código sensor de ré
Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard
Entendendo o código
Para ajudar no entendimento do código, vamos dividi-lo em duas partes:
Ler o sensor.
Acionamento dos LEDs e do buzzer.
Lembrando que as duas partes do código devem ser executadas infinitamente,
isso porque o sensor de ré deverá ficar constantemente em alerta, informando ao
usuário a aproximação de objetos a todo momento.

1. Ler o sensor
Para a leitura do sensor usaremos a função desenvolvida no experimento
anterior. A utilização é simples, primeiro implementamos a função do sensor, que neste
caso foi nomeada como sensor_morcego, lembrando que a função do sensor deve
ficar fora da função loop(). Outra coisa que não podemos esquecer é que uma variável
deverá ser criada para receber as leituras do sensor, aqui neste exemplo o nome da
variável será distancia .

2. Acionamento dos LEDs e do buzzer


Neste projeto vamos estabelecer intervalos de 10 cm para a mudança do
estado do conjunto de LEDs. Vamos acionar todos os LEDs se o objeto estiver muito
perto e nenhum LED se o objeto estiver longe.
Quanto à lógica de programação, o código foi desenvolvido da seguinte forma,
estabelecendo três situações diferentes para o acionamento do buzzer:
Situação 1: quando a leitura do sensor é menor que 10 cm, o buzzer ficará
ligado constantemente.
Situação 2: para leitura maiores que 60 cm, o buzzer não tocará.
Situação 3: quando o sensor estiver medindo distâncias entre 10 a 60 cm, o
buzzer tocará de forma inconstante, variando o intervalo de tempo em função da
distância.
Veja que o algoritmo do buzzer isola as três diferentes formas de acionamento.
Por exemplo, se a medida for menor que 50 cm, o código pula todos os condicionais até
else if (distancia <= 50) e executa os comandos dentro desse condicional, que por sua
vez faz o acionamento dos LEDS e determina o intervalo de acionamento do buzzer.
Após a execução, o código encerra o condicional, ou seja, o próximo comando else if
(distancia <= 60), que está atrelado ao primeiro if (distancia <= 10), não será
executado. Com isso, a próxima sequência de comandos, que se encontra fora dos
condicionais responsáveis pelo acionamento do buzzer, será executada.
Observe que os comandos de toque intermitente, listados anteriormente, não
serão executados para as medidas mínimas e máximas. Isso ocorre pelo isolamento
desempenhado pelos três primeiros condicionais if, else if e else, que delimitam as três
situações que determinamos para o desenvolvimento do código.

EXPERIMENTO 15

Acionamento de cargas com módulo relé

Acionar um relé com Arduino não é uma tarefa difícil. Um relé nada mais é que
um componente que, através de condução eletromagnética, faz uma chave se
movimentar. Portanto, um relé é simplesmente uma chave liga e desliga! Normalmente
um relé possui cinco terminais. Dois deles são os terminais da bobina de acionamento.
Esta bobina, no relé, é de 5 V. Ou seja, você precisa de uma tensão DC de 5 V para
fazer a bobina conduzir e fazer o relé "bater", ou acionar a chave. Os outros três
terminais são como os de um interruptor. Um é o terminal comum (C), ou seja, ele é
comum ao circuito. Nele sempre passará a corrente. Os outros dois terminais são os
contatos, um é normalmente aberto (NA) e o outro é normalmente fechado (NF). Eles
são contatos com funções cujo próprio nome está dizendo. O normalmente fechado está
em contato com o pino COMUM a todo momento até que a bobina conduza corrente.
Quando a bobina conduz corrente, o contato do relé se fecha, e o pino COMUM se liga
ao pino NORMALMENTE ABERTO, fazendo-o ficar fechado e conduzir a corrente.
Apenas para ilustrar, para acionar um relé com Arduino precisamos do seguinte circuito:
Figura 70: Circuito do relé

Fonte: https://www.robocore.net/tutoriais/kit-iniciante-v8-a-protoboard

Lista de materiais
1x Placa Arduino + Cabo USB
1x Módulo Relé
Jumpers

Circuito
Figura 71: Circuito do relé

Fonte: https://www.robocore.net/tutoriais/kit-avancado-para-arduino-modulo-rele
Código
Um código simples para ver o relé em funcionamento pode ser o exemplo mais
básico do Arduino, o Blink:
Figura 72: Código do relé

Fonte: https://www.robocore.net/tutoriais/kit-avancado-para-arduino-modulo-rele

O relé já está funcionando e agora sua imaginação é o limite. Veja abaixo um


exemplo de circuitos utilizando relé para acionar uma lâmpada, é uma das utilizações
mais comuns entre os projetos com relé:
Este material é baseado nos tutoriais e fóruns compartilhados no site da
fabricante ROBOCORE e tomou como referência o kit básico (V8) e avançado (V4). O
material poderá ser utilizado como norteador nos vários experimentos a serem
desenvolvidos. Aproveitem o material!!!

Você também pode gostar