[go: up one dir, main page]

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

Arduino I

O documento apresenta um curso introdutório sobre programação com Arduino, abordando conceitos fundamentais como lógica de programação, algoritmos e a estrutura da plataforma Arduino. Ele detalha os modelos Arduino UNO e MEGA 2560, suas especificações técnicas e funcionalidades, além de explicar a importância da programação em sistemas embarcados. O material é voltado para iniciantes que desejam aprender a manipular circuitos eletrônicos através da programação.

Enviado por

marcuscesarses
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)
46 visualizações212 páginas

Arduino I

O documento apresenta um curso introdutório sobre programação com Arduino, abordando conceitos fundamentais como lógica de programação, algoritmos e a estrutura da plataforma Arduino. Ele detalha os modelos Arduino UNO e MEGA 2560, suas especificações técnicas e funcionalidades, além de explicar a importância da programação em sistemas embarcados. O material é voltado para iniciantes que desejam aprender a manipular circuitos eletrônicos através da programação.

Enviado por

marcuscesarses
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/ 212

Arduino I - Deivison charles

Material teórico

Leiaut Carielo – Escola de informática com eletrônica 1


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Apresentação

Por que aprender a programar?

Hoje em dia quase todo circuito eletrônico inteligente é provido de programação, ou


seja, neste circuito foi introduzido um algoritmo de programação em uma determinada
linguagem, e isso permite a manipulação em vários níveis diferentes do mesmo
circuito.

Aquele micro-ondas com visor digital que você faz pipoca, tem programação. Ou
mesmo o painel do carro (os mais modernos) com várias funções como: inclinação do
carro, configurações de portas abertas e aquela função que para o carro caso o
motorista estiver sem cinto, isso tudo envolve programação. Uma serie de passos e
instruções implementadas em um circuito eletrônico nos permite tudo isso e muito
mais.

Iremos então estudar neste material o funcionamento da programação numa placa


micro controladora chamada Arduino que é de código aberto, ou seja podemos
modificar alterar o código-fonte sem nenhum problema.

Leiaut Carielo – Escola de informática com eletrônica 2


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Sumário

INTRODUÇÃO 4

ARDUINO 5

PROTOBOARD 16

LÓGICA DE PROGRAMAÇÃO 22

ALGORITMO 23

IDE 24

INTERFACE ARDUINO 25

TIPOS DE DADOS 29

VARIÁVEIS 31

MÉTODOS 33

FUNÇÕES
PINMODE() 35
DIGITALWRITE() 35
DIGITALREAD() 36

CONSTANTES 37

OPERADORES 38

ESTRUTURAS 40
ESTRUTURAS IMPERATIVAS 41
ESTRUTURAS CONDICIONAIS 48
ESTRUTURAS DE SELEÇÃO 55
ESTRUTURAS REPETITIVAS 57

CONSIDERAÇÕES FINAIS 68

BIBLIOGRAFIA 69

MATERIAL PRÁTICO 70

Leiaut Carielo – Escola de informática com eletrônica 3


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

INTRODUÇÃO

Olá, neste material iremos estudar os fundamentos da programação, tal como


lógica e algoritmo, veremos também a sintaxe de programação referente ao
Arduino.

Através desse material você compreenderá as estruturas lógicas da


programação e o seu funcionamento voltado para o Arduino, serão abordadas
as estruturas imperativas, de seleção, condicional, e repetitivas onde teremos
em cada uma delas funções específicas para várias situações que iremos ver
ao decorrer do curso de Arduino.

Para que você entenda todo o material é essencial ter concentração e foco no
assunto, pois estaremos trabalhando com “mecanismos virtuais” de
programação onde não estaremos vendo necessariamente o que está
acontecendo, mas precisamos entender que realmente acontece e funciona.
Absorver a lógica e o conceito daquilo que estamos fazendo é o mais
importante.

Leiaut Carielo – Escola de informática com eletrônica 4


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Arduino

• O que é o Arduino?

É uma plataforma eletrônica de código aberto com um micro controlador de


processamento para sistemas embarcados, o Arduino é uma placa controladora que pode ser
programada através de um computador para controlar os mais diversos tipos de componentes
e até equipamentos, permitindo qualquer um fazer desde um simples painel de led até um
robô mais complexo, automação residencial, drones ou qualquer outra coisa que você
imaginar. Com o Arduino é possível fazer qualquer tipo de sistema eletrônico para controlar
qualquer coisa.

A linguagem de programação do Arduino é baseada em C/C++ e usa os frameworks da


Wiring que é um conjunto de bibliotecas contendo códigos para programar exclusivamente,
sistemas embarcados e micro controladores.

Neste curso estaremos aprendendo o Arduino, porém existem muitos outros micros
controladores como o Raspberry Pi, BeagleBone que são um pouco mais potentes, porém de
custo mais elevado.

• Por que sistemas embarcados?

Nas plataformas de sistemas embarcados o algoritmo programado para uma


determinada função, um semáforo por exemplo, é enviado para placa e todo o sistema é
encapsulado o que significa que para alterar o código de um determinado sistema é preciso
reescrever todo o algoritmo. Nas placas de sistemas embarcados o sistema operacional é o
próprio algoritmo que é enviado para a placa, todo esse sistema é dedicado a funcionalidade
da placa/circuito apenas, por esse motivo nos referimos ao sistema como um sistema
embarcado, pois o algoritmo embarcado no circuito da placa serve apenas para um
determinado fim projetado naquele circuito/placa.

Exemplos de sistemas embarcados: Letreiros digitais, Semáforos, luzes de pisca de natal.

Nesses sistemas o código já está carregado em um circuito/placa que controlará os


leds/lâmpadas de acordo com o que foi programado, e esse sistema executa sempre a mesma
rotina uma vez que seu código para ser alterado precisa ser reescrito.

Basicamente nos sistemas embarcados o código escrito para uma determinada funcionalidade
é enviado para a placa, e é executado continuamente até que seja substituído por outro.

Leiaut Carielo – Escola de informática com eletrônica 5


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Modelos

Atualmente existem vários modelos de Arduino e outras placa similares, porém os modelos
que iremos aprender a utilizar neste curso são os modelos Arduino UNO e Arduino Mega 2560.

v Arduino UNO

Portas de
Portas digitais comunicação

Chip/CI
controlador

Suprimento Portas
de energia analógicas

Esta é a placa Arduino modelo UNO, vamos explicá-la por parte.

Leiaut Carielo – Escola de informática com eletrônica 6


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Portas digitais

Nesta sessão temos as portas que serão usadas para manipular componentes digitais,
algumas poderão usar a função PWM ou pulso por modulação que é uma simulação de um
sinal analógico.

PWM - As portas 3,5,6,9,10 e 11 são portas PWM, aquelas que citamos anteriormente que
podem simular um sinal analógico, repare que ao lado dessas portas tem um tio (~) isso indica
que elas são PWM.

GND Aref - Logo após a ultima porta que é a 13 temos ainda as portas GND e Aref, o que seria
GND? GND é a abreviação de Ground que por sua vez significa terra em inglês, logo essas
portas servirão de neutro para fechar a ligação do circuito que estivermos montando no
Arduino.

Aref - Já a porta Aref é uma porta para referência analógica para indicar a tensão de referência
para o conversor Analógico/Digital do Arduino que atua nas portas analógicas traduzindo os
vários estados dos sensores analógicos para números inteiros entre 0 e 1023.

Portas analógicas

As portas analógicas do Arduino trabalham com um conversor A/D (Analógico para


Digital) internamente para converter os valores analógicos dos componentes analógicos para
valores digitais, por esse motivo é possível medir com precisão os estados dos componentes
analógicos conectados no Arduino. O conversor A/D do Arduino trabalha com uma tensão de
referência padrão que é de 5V, logo os sensores conectados as portas analógicas são
referenciados como tendo tensão igual a 5V.

Os componentes analógicos não enviam valores para o Arduino, esses componentes


variam a energia que passa por eles de acordo com os fatores externos EX: O sensor de luz é
um resistor dependente de luz, isso significa que seu valor resistivo depende da quantidade de
luz que é projetada sobre o sensor, permitindo assim passar mais ou menos corrente elétrica
pelo sensor.

Essa corrente que passa pelo sensor pode ser aferida pelo Arduino através do conversor A/D e
nos retornar um valor inteiro entre 0 e 1023 de acordo com a variação lida do sensor, o valor
indo de 0 a 1023 é equiparado com a tensão de 0 a 5V ou seja 0 representa 0V e 1023
representa 5V, logo 512 representa 2,5V. Se estivermos trabalhando com um sensor de
temperatura que opera com 2V devemos referenciar 2V na porta Aref para que o Arduino
possa entender que a tensão máxima de operação do componente é de 2V e fornecer os
valores de saída (0-1023) corretamente.

Leiaut Carielo – Escola de informática com eletrônica 7


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Portas de comunicação

TX RX - As portas 0 e 1 são portas de comunicação para transferência de dados e serão usadas


em componentes específicos apenas, como um sensor Bluetooth por exemplo. Essas portas
permitem enviar e receber dados de um determinado componente que pode estar ligado a
internet ou conectado a um smartphone.

A4 A5 - As portas analógicas 4 e 5 podem ser usadas também para comunicação L2C (veremos
mais adiante) onde a porta A4 é SDA e a porta A5 é SCL, veremos mais adiante o que significa
isso e para que serve esse protocolo de comunicação.

Suprimento de energia

As portas para suprimento de energia fornecem referencias sobre a tensão de entrada e saída
do Arduino e servem também para alimentar componentes que necessitam de uma
alimentação.

IOREF - Esta porta indica a tensão de entrada/saída do Arduino leia-se Input Output Reference
ou referência de entrada e saída, essa porta serve apenas de referência.

Reset - Esta porta serve para resetar/reiniciar o micro controlador e substitui o botão de reset
na placa. Para resetar a placa através dessa porta basta mandar o sinal de LOW para a mesma.

3v3 - Fornece 3,3v de alimentação para componentes.

5v - Fornece 5v de alimentação para componentes.

Portas GND servem de terra.

VIN - Essa porta fornece alimentação a partir de uma fonte externa conectada ao Arduino, por
exemplo, se você estiver usando uma fonte de alimentação de 12V para alimentar o Arduino
na porta VIN você terá os mesmos 12V disponíveis na porta VIN, você poderá usar essa porta
para alimentar componentes que necessitem de uma tensão maior que 5V.

Leiaut Carielo – Escola de informática com eletrônica 8


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Especificações técnicas
Micro controlador ATmega328P
Tensão de operação 5V
Tensão de entrada (recomendada) 7-12V
Tensão de entrada (limite) 6-20V
14 (das quais 6
Portas Digitais I/O
proporcionam saída PWM)
Portas PWM 6
Portas analógicas 6
Corrente DC por porta Digital 20 mA
Corrente DC para a porta 3v3 50 mA
32 KB (ATmega328P)
Memoria flash¹ dos quais 0.5 KB são usados
pelo bootloader
SRAM² 2 KB (ATmega328P)
EEPROM³ 1 KB (ATmega328P)
Velocidade do Processador 16 MHz
Led acoplado 13
Comprimento 68.6 mm
Largura 53.4 mm
Peso 25 g

¹ Armazenamento do Arduino. Onde o Sketch (código) fica gravado/armazenado.


² SRAM (static random access memory) é onde o Sketch (código) cria e manipula as
variáveis quando o mesmo está sendo executado.
³ EEPROM é uma memoria onde os programadores podem usar para guardar
informações de longo termo.

Memoria Flash e EEPROM são memórias não voláteis as informações gravadas nelas uma vez
continuam lá mesmo quando o Arduino é desligado.
SRAM é uma memória volátil e toda informação que passa por ela é perdida quando a placa é
desligada.

• O chip controlador ATmega328 encontrado no Arduino tem as seguintes


especificações de memoria:

Memoria Flash 32k bytes (dos quais 0.5 KB são usados para o bootloader)
SRAM 2k bytes
EEPROM 1k byte

Leiaut Carielo – Escola de informática com eletrônica 9


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Documentação

Toda a documentação da placa Arduino modelo UNO você pode encontrar no endereço abaixo

www.arduino.cc/en/Main/ArduinoBoardUno

Leiaut Carielo – Escola de informática com eletrônica 10


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

v Arduino MEGA 2560

Suprimento Chip/CI
de energia controlador Portas digitais

Portas
analógicas Portas de
comunicação

GND 5V

Portas digitais

No Arduino modelo MEGA 2560 temos uma quantidade maior de portas, permitindo conectar
mais componentes a placa viabilizando a construção de um projeto maior.

Todas as portas no modelo MEGA se comportam de mesmo modo que no modelo UNO com
uma vantagem em relação as portas que fazem a comunicação L2C, onde no UNO essas portas
(SDA e SCL) são interpretadas pelas portas analógicas A4 e A5 respectivamente. Porém no
modelo MEGA 2560 essas portas estão disponíveis separadamente, ou seja, além do modelo
MEGA 2560 vir com uma quantidade maior de portas o mesmo ainda disponibiliza de forma
distinta as portas com suas devidas funções.

Leiaut Carielo – Escola de informática com eletrônica 11


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Especificações técnicas
Micro controlador ATmega2560
Tensão de operação 5V
Tensão de entrada (recomendada) 7-12V
Tensão de entrada (limite) 6-20V
54 (dos quais 15
Portas Digitais I/O
proporcionam saída PWM)
Portas analógicas 16
Corrente DC por porta digital 20 mA

Corrente DC para a porta 3v3 50 mA


256 KB dos quais 8 KB são
Memoria flash¹
usados pelo bootloader
SRAM² 8 KB
EEPROM³ 4 KB
Velocidade do Processador 16 MHz
Led acoplado 13
Comprimento 101.52 mm
Largura 53.3 mm
Peso 37 g
¹ Armazenamento do Arduino. Onde o Sketch (código) fica gravado/armazenado.
² SRAM (static random access memory) é onde o Sketch (código) cria e manipula as
variáveis quando o mesmo está sendo executado.
³ EEPROM é uma memoria onde os programadores podem usar para guardar
informações de longo termo.

Memoria Flash e EEPROM são memórias não voláteis as informações gravadas nelas uma vez
continuam lá mesmo quando o Arduino é desligado.
SRAM é uma memória volátil e toda informação que passa por ela é perdida quando a placa é
desligada.

• O chip controlador ATmega2560 encontrado no Arduino tem as seguintes


especificações de memoria:

Memoria Flash 256k bytes (dos quais 8 KB são usados para o bootloader)
SRAM 8k bytes
EEPROM 4k byte

Leiaut Carielo – Escola de informática com eletrônica 12


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Documentação

Toda a documentação da placa Arduino modelo Mega2560 você pode encontrar no endereço
abaixo:

www.arduino.cc/en/Main/ArduinoBoardMega2560

Leiaut Carielo – Escola de informática com eletrônica 13


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Comunicação i2C

I2c é um protocolo de comunicação, que no Arduino através de uma


conexão de barramento nos permite trabalhar com vários componentes sem
o uso de portas adicionais, permitindo assim amenizar o uso de portas
quando estamos trabalhando com componentes que fazem uso de várias
portas do Arduino, Ex: Tela Lcd, Teclado matricial etc...

Imagine a seguinte situação, você precisa montar um sistema de alarme


onde um arduino monitora uma série de sensores de uma residência, porém
são necessários além dos sensores o teclado matricial e a tela lcd para
controlar o alarme, porém para todos esses componentes, que irão precisar
de no mínimo 22 portas do Arduino, você só tem disponível um Arduino
modelo UNO que dispõe de apenas 16 portas no seu total, qual seria a
solução?

Justamente por esse motivo foi criado o protocolo padrão de comunicação


i2c, a saber Inter-Integrated-Circuit que foi criado pela Philips-
Semicondutor, com esse protocolo de comunicação através de uma conexão
de barramento podemos ter em um único Arduino UNO mais de 50 telas Lcd
funcionando em conjunto, veja abaixo um exemplo de como funciona essa
comunicação:

Um dispositivo atua como mestre e os demais conectados na extensão do


barramento atuam como escravos, dessa forma podemos ter vários
componentes conectados ao barramento sem precisar usar portas adicionais
do Arduino.

Leiaut Carielo – Escola de informática com eletrônica 14


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Para que isso funcione é necessário um módulo que irá fazer a comunicação
entre o componente e o Arduino para isso usaremos o módulo i2c:

• Exemplo de componente com módulo i2c

Porém, como enviar informações para um componente especifico em um


barramento com 50 Telas Lcd?

Para isso o protocolo i2c usa o endereçamento dos dispositivos, ou seja,


cada componente no barramento tem seu endereço com isso podemos
enviar informações para qualquer um dos componentes.

Para gerar os endereços são usados 7 bits e um oitavo bit para definir se é
leitura ou escrita, com isso temos 128 possíveis endereços, porém a faixa
de endereços de 0 a 7 são reservados com isso temos apenas 120 possíveis
endereços.

Você pode conferir toda a documentação do protocolo i2c no Arduino no


endereço abaixo:

www.arduino.cc/en/Reference/Wire
Leiaut Carielo – Escola de informática com eletrônica 15
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Protoboard

Para montar nossos circuitos iremos usar uma placa de prototipagem, a protoboard, que é
uma placa de ensaio com trilhas condutoras formadas por furos para realizar conexões de
circuitos elétricos sem a necessidade de soldar os componentes, veja abaixo um exemplo
da protoboard que usaremos neste curso:

Essa protoboard contém 760 furos, veja abaixo como funciona a protoboard:

Exemplo de conexão

A ligação de qualquer trilha neste quadrante é vertical


Divisão

As trilhas que estão dentro do quadrante têm continuidade vertical apenas, no meio do
quadrante há uma divisão, que elimina a continuidade do que está em cima com o que
está embaixo.

Leiaut Carielo – Escola de informática com eletrônica 16


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Na trilha horizontal, as que ficam nas extremidades, a ligação é horizontal, observe o


exemplo abaixo:

Nestas trilhas a continuidade é horizontal

Divisão 1 Divisão 2

Na trilha horizontal existem duas divisões que separam três conjuntos de trilhas, como está
ilustrado na imagem acima, a trilha de um conjunto não tem ligação com a trilha de outro
conjunto, para interligar todos os conjuntos precisamos “jumpear” a trilha de um conjunto
com a trilha de outro conjunto, dessa forma poderemos alimentar toda a trilha sem a
necessidade de conectar a alimentação em cada furo de uma trilha de cada conjunto,
observe um exemplo dessa ligação abaixo:

Ligação Ligação “Jumpeamento”

Ligação Ligação

Depois de efetuada essa ligação entre as divisões, será possível alimentar toda a trilha
horizontal conectando o pino de alimentação em apenas um furo da protoboard.

Cuidado ao montar circuitos na protoboard, uma ligação errada e seus componentes serão
danificados, o Arduino também pode ser danificado devido a uma ligação errada, antes de
ligar tudo verifique se o componente possui polaridade (+ -).

Leiaut Carielo – Escola de informática com eletrônica 17


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Para montar nossos circuitos iremos usar os jumpers, que são pequenos fios com
conectores apropriados para a protoboard e para o Arduino, existem três tipos de jumper,
Macho x Macho, Fêmea x Fêmea, e Macho Fêmea, veja abaixo um exemplo de cada:

Jumper Macho x Macho

Jumper Macho x Fêmea

Leiaut Carielo – Escola de informática com eletrônica 18


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Jumper Fêmea x Fêmea

Veja abaixo o exemplo de um circuito montado na protoboard:

Ânodo Cátodo

Resistor de 1k Ohm

Na montagem acima temos circuito simples com um led, O jumper verde representa a
alimentação o jumper branco é referente ao aterramento ou (GND), montaremos nossos
circuitos de forma semelhante.

Leiaut Carielo – Escola de informática com eletrônica 19


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

O que dá para fazer com Arduino?

De tudo um pouco, quando eletrônica e programação se juntam para fazer


um sistema integrado as possibilidades são vastas, desde um simples painel
de led até um robô ou drone mais sofisticado. Você precisará apenas de um
pouco de lógica de programação e um pouco de eletrônica, depois basta
deixar sua imaginação fluir e por em práticas as ideias que você teve.
Confira abaixo alguns exemplos feitos com Arduino.

Carro de controle remoto com Arduino Nano.

Leiaut Carielo – Escola de informática com eletrônica 20


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Drone com Arduino UNO.

Controle de alarme com Arduino.

Leiaut Carielo – Escola de informática com eletrônica 21


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Lógica de programação

A lógica de programação consiste em usar o raciocínio lógico para programar


algoritmos racionais com o intuito de atingir um determinado objetivo,
solucionando um problema ou satisfazendo uma determinada função.

Neste tópico entenderemos o que é a lógica aplicada a programação e como


aplica-la na programação do Arduino.

A lógica está ligada ao raciocínio, mas precisamos saber como aplica-la na


resolução de um problema.

Veja a questão a seguir:

Usando a lógica para resolver essa questão:

Se na escola temos 200 alunos, o total de alunos que praticam esportes + o


total dos alunos que não praticam esportes não pode ser superior a 200. No
enunciado temos 120 alunos que jogam futebol e 100 que jogam basquete
se somarmos a quantidade de alunos que jogam basquete com a
quantidade de alunos que jogam futebol teremos 220 alunos, porém a
questão também nos informa que temos 60 alunos que praticam ambos os
esportes, neste caso dos 220 alunos que obtivemos na soma dos que
Leiaut Carielo – Escola de informática com eletrônica 22
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

praticam futebol e basquete 60 deles são os mesmos alunos, ou seja se 60


deles são os mesmos logo podemos subtrair os 60 alunos que praticam
ambos os esportes nos 220 que obtivemos na soma dos alunos que
praticam um ou outro esporte, logo temos o resultado de:

220-60 = 160

160 alunos praticam esporte nessa escola, portanto 40 deles não estão
praticando atividades esportivas na escola.

Lógica é um sentido racional

Algoritmo

Algoritmo é uma sequencia de passos, uma lista de instruções a serem


executadas para atingir um determinado objetivo.

Exemplo:

Algoritmo Trocar Pneu

• 1º Passo: Pegar a chave de roda e o macaco


• 2º Passo: Pegar estepe
• 3º Passo: Suspender o carro com o macaco
• 4º Passo: Retirar os parafusos do pneu furado
• 5º Passo: Retirar o pneu furado
• 6º Passo: Colocar estepe
• 7º Passo: Colocar os parafusos
• 8º Passo: Baixar o carro
• 9º Passo: Guardar ferramentas

Neste exemplo temos como algoritmo uma lista de instruções para trocar o
pneu de um carro, repare que as instruções são sequenciais, bem objetivas
e em ordem, assim qualquer pessoa que seguir essa sequencia de passos e
instruções conseguirá trocar o pneu de um carro.

Leiaut Carielo – Escola de informática com eletrônica 23


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Na programação a intenção é a mesma: criar uma sequencia de passos e


instruções para executar uma determinada tarefa no computador ou em
algum micro controlador (que é o nosso caso), nessa sequencia de passos
teremos comandos específicos que executarão uma determinada função no
computador ou micro controlador, a junção desses comandos combinados
com vários outros, proporcionam o desenvolvimento de uma aplicação que
pode ser implementada em computadores e circuitos eletrônicos.

Integrated Development Environment


(IDE)

Integrated development environment é o significado de IDE, onde temos um


ambiente projetado para programar, nesse ambiente teremos as ferramentas
necessárias para criar um programa em uma determinada linguagem de
programação.

Para cada linguagem de programação teremos uma IDE veja alguns exemplos
abaixo:

Linguagem IDE

Python PyCharm

Php PhpStorm

Java Eclipse

C++ Code Blocks

C# Visual Studio

Swift Xcode

Leiaut Carielo – Escola de informática com eletrônica 24


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Interface do Arduino

Botão Verificar

Botão Carregar

Abrir o Monitor
Serial

Botão Abrir

Botão Abrir

Botão Novo Menu das abas

Console de saída(reporta
erros)

Leiaut Carielo – Escola de informática com eletrônica 25


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Botão verificar à Verifica o código procurando por erros de


sintaxe(parênteses que não estão fechados, falta de vírgulas e chaves no
código etc..), caso haja erros o console de saída alerta.

Botão carregar à Verifica novamente o código e caso a sintaxe esteja


correta ele é carregado para o Arduino.

Botão novo à Cria um novo “Sketch” um novo projeto.

Botão abrir à Abre um projeto salvo.

Botão salvar à Salva o projeto atual.

Abrir o monitor serial à Abre o serial monitor para vermos os dados que
estão sendo comunicados entre o Arduino e o computador.

Menu das abas à Menu referentes as abas que temos no Arduino


(semelhante as abas do navegador), nesse menu você pode criar novas
abas, renomeá-las etc..

Consola de saída à Aqui você verá os erros de sintaxe e outros tipos de


erros que impedem de o código ser carregado para a placa Arduino.

Barra de ferramentas do Arduino

Aqui iremos explicar apenas os itens mais importantes

Preferences ou preferências à Menu de configurações do programa.

Leiaut Carielo – Escola de informática com eletrônica 26


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Preferences:

Onde seus projetos


ficam salvos

Marcar numeração
das linhas

Salvar projeto toda


vez que verificar ou
carregar

A opção de salvar projeto ao verificar ou carregar pode incomodar


um pouco, se deseja programar sem ter que salvar o código toda
vez que fizer um novo carregar ou verificar o mesmo, desmarque
esta opção.

Toda vez que conectarmos uma placa nova no computador, ou desconectar


e conectar novamente uma mesma placa é necessário configurar a porta e
o tipo de placa conectada.

No menu Tools(Ferramentas) temos acesso a essas configurações.

Veja os passos a seguir que devemos executar para configurar a placa que
deve estar conectada no computador.

Leiaut Carielo – Escola de informática com eletrônica 27


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

1º Passo: Antes de tudo devemos conectar a placa do Arduino no


computador.

2º Passo: Em Port devemos escolher a opção referente a placa que será


apresentada quando detectada:

A referência pode variar de computador para computador, de acordo com o


sistema operacional.

3º Passo: Depois de ter configurado a porta devemos configurar a placa,


para isso em “Board” (que significa placa) selecione o modelo referente a
sua placa.

Após isso o computador está pronto para mandar os códigos para o Arduino
através da interface de programação.
Leiaut Carielo – Escola de informática com eletrônica 28
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

É possível haver uma mesma IDE para várias linguagens visto que a mesma
suporte não há problemas.

Tipos de dados

Abordaremos agora alguns tipos de dados que o Arduino interpreta, a


linguagem do Arduino é baseada em Wiring que é uma linguagem de
prototipagem para micro controladores baseada em C , se você já
programou em Java, C# ou C++ será de fácil entendimento a sintaxe do
Arduino.

Os tipos de dados que podemos manipular no Arduino são os seguintes:

• void
• boolean
• char
• unsigned char
• byte
• int
• unsigned int
• word
• long
• unsigned long
• short
• float
• double
• string - char array (Lista)
• String – object (Objeto)
• array
Temos muitos tipos de dados que podemos manipular, mas no nosso curso
precisaremos de apenas alguns deles. Provavelmente na maioria dos
projetos em que você trabalhar, não precisará usar todos os tipos de
variáveis, pois alguns tipos são bem específicos para determinadas funções,
como a tipo byte que interpreta bytes sendo um byte formado por um
conjunto de 8 bits, EX: 01011101 à 1 byte neste byte temos 256
combinações diferentes gerando assim números de 0 a 255 apenas, então
em cada byte temos o valor variante que vai de 0 à 255. Então esse tipo de
dados não usaremos eventualmente.

Leiaut Carielo – Escola de informática com eletrônica 29


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Vamos a uma breve explicação dos tipos de dados que usaremos

ü int
Esse tipo de dado serve para números inteiro, int é uma abreviação de integer
que é um tipo inteiro na linguagem de programação Exemplos de dados
aceitáveis pelo tipo int à 0,1,2,3,4 não aceitará por exemplo: 1.1,1.2,1.3.

O tipo int ocupa 16 bits de memória (2 bytes) e aceita valores na faixa de -


32768 á 32767

ü char
Tipo que recebe caracteres, esse tipo interpreta um caractere único,
usaremos esse tipo de dados para estruturas de escolha onde teremos um
menu em que o usuário poderá escolher em uma lista uma série de funções
que teremos no Arduino. Esse tipo recebe um número EX: 61 e o interpreta
como a letra “a” pois é o número equivalente segunda a tabela ASCII*

O tipo char ocupa 8 bits de memória(1 byte) seu valor varia de 0 a 255

ü float
O tipo float é um tipo que também recebe números, porém diferente do tipo
int o tipo float recebe todo tipo de números EX: 1,2,3,4,5.5,6.6,7.7,
usaremos esse tipo de dado para valores fracionários onde precisaremos
fazer divisões no nosso programa e obter certos resultados a partir dessas
divisões.

O tipo float é do tipo ponto flutuante (dados com várias casa decimais) e
ocupa 32 bits(4 bytes) e seu valor pode variar entre -3.4028235E+38 e
3.4028235E+38

ü String
O tipo String abrange todo tipo de caractere, porém mesmo os números são
interpretados como um caractere, ou seja se você tentar somar dois dados
do tipo String mesmo sendo números, eles irão se concatenar EX: “1”+”1” o
resultado que teremos é “11” os dados deverão estar entre aspas pois todo
texto na programação é interpretado entre aspas.

ü Void
Este tipo indica vazio, ou seja, nenhum retorno, o tipo void referencia um
método para que o mesmo não retorne nenhum tipo de dado.

Leiaut Carielo – Escola de informática com eletrônica 30


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ü Long
O tipo long é o tipo que assim com o float recebe números reais e inteiros,
porém com uma diferença, o tipo long possui menos casas decimais e por
esse motivo não é tão preciso como o float.

o long tem seu valor variando entre -2,147,483,648 e 2,147,483,647 e


ocupa 32 bits (4 bytes) de memória.

ü boolean ou bool
Tipo de dado que tem apenas dois estados true ou false, ou seja,
verdadeiro ou falso. O tipo boolean geralmente é usado para estruturas
condicionais onde teremos duas situações verdadeira ou falsa, na qual o
tipo boolean se adequa.

O tipo boolean ocupa 1 byte de memória (8 bits).

ü double
O tipo double abrange os mesmos dados que o tipo float, porém na placa
Arduino Due o tipo double tem uma precisão maior 64 bits(8 bytes).

Variáveis

Variáveis são espaços alocados em um endereço da memória onde iremos


armazenar dados para posteriormente manipular os mesmos, esses espaços
tem um endereço e pode ter um “rótulo”

Exemplo de um endereço físico:

os “rótulos” por sua vez são as variáveis onde teremos a interação usuário-
maquina pois são através dos programas com o uso de variáveis que é
possível manipular receber e enviar dados em qualquer dispositivo.
Leiaut Carielo – Escola de informática com eletrônica 31
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

É através dessas variáveis que iremos configurar as portas no Arduino,


enviar e receber valores de um componente e até criar aplicativos para
interagir com a placa.

Imaginemos que você irá criar um programa para somar dois números,
primeiramente você precisará saber como fazer essa operação:

Aà2
Bà3

Se somarmos A+B teremos 5, dessa forma podemos fazer a seguinte


atribuição:

C à A+B

Logo C armazenará todo o resultado da soma de A+B, essa seria uma


operação matemática simples.

Na programação não seria muito diferente visto que a matemática é a raiz


da programação. Precisamos apenas especificar alguns detalhes, pois o
computador não entende a sintaxe semântica qual nos entendemos.

Na declaração de variáveis temos primeiramente que informar o tipo de


dados que iremos trabalhar, logo após, o nome da variável que não pode
conter caractere especial como: ^Ç”áóíéú%! Etc...

A linguagem do Arduino é sensível a letras maiúsculas/minúsculas, isso


significa que se você declara uma variável em minúsculo a mesma deverá
ser usada sempre em minúsculo.

Leiaut Carielo – Escola de informática com eletrônica 32


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Métodos
Método Setup:

à Nesta estrutura temos o método que irá executar os


comandos uma única vez, no Setup iremos colocar apenas os comandos
essenciais para que o Arduino identifique os componentes e os modos da
pinagem (INPUT,OUTPUT)

Exemplo de um algoritmo para acender um Led:

Neste código declaramos a variável led e atribuímos 2 ao seu valor (que é a


porta do Arduino na qual o anodo do led está conectado), logo mais no
setup através do comando estamos definindo que o componente
que está na porta 2 será do tipo saída de dados. Por que o componente que
está na porta 2? à Porque declaramos uma variável chamada led e
atribuímos 2 ao seu valor – as variáveis armazenam um valor na memoria
do computador/micro controlador portanto onde quer que usemos a
variável led o computador/micro controlador entenderá como o número 2.

No setup tudo que colocamos é executado uma única vez no micro


controlador sempre que o mesmo for ligado ou reiniciado, portanto todos os
comandos que tiverem a necessidade de serem executados apenas uma vez
declararemos o mesmo no Setup apenas.

Método Loop

à Nesta estrutura escreveremos o nosso algoritmo, onde o


mesmo será executado várias vezes, loop significa laço,repetição, ou seja
todo o código que estiver dentro do loop será executado repetidamente.

Leiaut Carielo – Escola de informática com eletrônica 33


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

No loop estaremos manipulando os componentes e seu comportamento, o


loop é responsável por dar “vida” ao circuito pois o código pode se
comportar de maneira autônoma sem a interferência humana, repetindo
processos e passos e até tomar decisões de forma inteligente mediante uma
circunstância.

Exemplo de um comando que usaremos para imprimir valores na tela:

No exemplo acima temos o comando que irá imprimir na tela o que está
entre os parênteses, neste caso o nome Carielo será impresso na tela
inúmeras vezes.

Dentro do loop teremos os comandos para ler os dados de determinados


sensores, pois seus valores precisam ser sempre atualizados.

Leiaut Carielo – Escola de informática com eletrônica 34


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Funções

pinMode();

A função pinMode serve para definir o modo da porta do Arduino há duas


opções para serem usadas com esse comando: INPUT e OUTPUT

O pinMode define se determinada porta do Arduino onde está um


determinado componente é entrada ou saída EX: Led à saída - OUTPUT
(emite luz), Controle remoto à entrada – INPUT (recebe dados do controle)

O comando pinMode(); recebe dois argumentos à PORTA e MODO


(INPUT/OUTPUT) separados por vírgula, EX:

pinMode (2,OUTPUT);

No exemplo acima estamos definindo que a porta 2 no Arduino será saída


de dados.

digitalWrite();

O comando digitalWrite permite mandar um sinal digital na porta


especificada, EX: digitalWrite(2,HIGH);

Observe que o comando digitalWrite recebe dois argumentos: o primeiro se


refere a porta para onde será enviado o sinal digital, o segundo argumento
é o próprio sinal digital.

Existe dois modos de operação para o comando digitalWrite : HIGH e LOW


sendo HIGH – alto e LOW – baixo onde HIGH enviará o sinal e LOW irá
desligar o sinal em relação a porta declarada.

Esse é o comando que usaremos para acender leds, apitar buzzer,


ligar/desligar relés e etc.. serve componentes do tipo atuadores. Para ligar
um led digital conectado a porta 2 no Arduino por exemplo escreveríamos o
seguinte comando no loop do Arduino:

digitalWrite(2,HIGH);

Leiaut Carielo – Escola de informática com eletrônica 35


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

digitalRead();

O comando digitalRead indica uma leitura digital de um determinado


sensor/chave no Arduino EX: botão, reed switch, o comando digitalRead
recebe apenas um argumento: o componente a ser lido, diferente do
digitalWrite no digitalRead devemos apenas declarar a porta onde está o
componente digital do qual queremos ler um determinado valor/estado.

Para lermos o estado de um botão que está na porta 3 do Arduino usaremos


o comando da seguinte maneira:

digitalRead(3);

Dessa forma estamos lendo o estado de um botão digital que está na porta
3 do Arduino, esse comando retornará um valor 0 ou 1 de acordo com o
estado do componente lido.

Para que possamos usar esse valor no código e implementar funções no


código para que o botão seja funcional, devemos armazenar o estado do
botão em uma variável, EX:

int status_botao = digitalRead(3);

Supondo que o nosso botão está na porta 3 do Arduino o comando


digitalRead irá ler a porta 3 e armazenar o valor que foi lido na variável
status_botao no caso do circuito estar aberto o valor será 0 caso o circuito
esteja fechado(botão pressionado) o valor será 1.

Dessa forma já podemos fazer um código funcional para que o led acenda
caso o botão seja pressionado através do condicional if veja o código abaixo
como exemplo:

Leiaut Carielo – Escola de informática com eletrônica 36


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Constantes

As constantes são variáveis que não mudam de valor, ou seja elas tem seus
valores constantes e servem para facilitar a identificação de valores na
programação, EX:

No exemplo acima estamos atribuindo o valor 33 a variável tempo, esse


valor não poderá ser modificado no código pois é uma constante veja:

Observe que o programa apresentará erro pois a variável não pode ter o
seu valor modificado.

Sendo assim temos algumas constantes pré estabelecidas na própria


linguagem do Arduino vejamos algumas delas:

HIGH à constante com valor 1, usamos através do comando digitalWrite


para mandar o sinal de ligar em uma determinada porta do Arduino

Leiaut Carielo – Escola de informática com eletrônica 37


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

LOW à constante com valor 0, usamos através do comando digitalWrite


para mandar o sinal de desligar em uma determinada porta do Arduino

INPUT | OUTPUT à constante que define as portas do Arduino como


entrada/saída, usado com o comando pinMode()

true | false à constantes que interpretam 0 ou 1 sendo 0 para false e 1


para true, usaremos essas constantes para comparações em determinadas
situações condicionais.

Operadores

Nesta sessão estaremos vendo os dois tipos de operadores:

ü Operadores aritméticos
ü Operadores de comparação

Operadores aritméticos

Os operadores aritméticos são os operadores que usaremos para efetuar operações matemáticas como
soma, subtração, divisão etc..

Os operadores aritméticos no Arduino são:

= à operador de atribuição
+ à operador de soma
- à operador de subtração
* à operador de multiplicação
/ à operador de divisão
% à operador de módulo (resto da divisão)

Os operadores aritméticos podem ser usados com números e variáveis EX:

2+2 ou A+B

Sendo A uma variável do tipo numérica, de mesmo modo B.


Os operadores aritméticos tem ordem de prioridade conforme a sequencia
abaixo:

1º Módulo, 2º Multiplicação, 3º Divisão, 4º Soma e Subtração.

Leiaut Carielo – Escola de informática com eletrônica 38


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Operadores de comparação

Os operadores de comparação serão usados em situações condicionais,


servindo para comparar valores em determinadas situações onde
poderemos atribuir mais de um caminho a ser seguido pelo algoritmo.

No Arduino temos os seguintes operadores de comparação:

== à Igualdade
!= à Diferente(negação)
< à Menor que
> à Maior que
>= à Maior ou igual
<= à Menor ou igual

Usaremos esses operadores para comparar valores e determinar caminhos


diferentes em nosso algoritmo, observe o exemplo:

Se (velocidade > 100) então


Aplicar Multa

Neste exemplo usamos o operador > (maior que), onde estamos


determinando uma condição caso uma velocidade de um determinado
veículo ultrapasse 100 KM/H a multa deverá ser aplicada.

Se usássemos o operador >= (maior ou igual) a condição já sofreria


alteração, o veiculo agora chegando aos 100 KM/H já teria cometido
infração.

Caso quisermos comparar se dois valores são iguais usaremos a seguinte


expressão:

Se (a==b) então
Resposta correta

O operador == verifica se a expressão é verdadeira ou falsa de acordo com


os valores fornecidos, EX:

Se (2==3) então
Somar

A expressão acima é falsa pois 2 é diferente de 3 (2!=3)

Por outro lado se desejarmos obter o contrário da expressão que queremos


devemos usar exclamação na frente da expressão, EX:

Se (!(2==3)) então à indica que queremos o resultado contrário ao original


da expressão, neste caso essa expressão irá retornar verdadeiro, pois a

Leiaut Carielo – Escola de informática com eletrônica 39


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

mesma sendo falsa nos retornará verdadeiro devido a exclamação na frente


da expressão.

Já a expressão != pode ser usada como as demais, observe o exemplo:

Se (nome != “Julia”) então à Nesta expressão estamos especificando que o


nome deve ser diferente de Julia, ou seja nosso algoritmo aceitará qualquer
nome, exceto Julia.

Estruturas

Durante esse curso de Arduino veremos 4 tipos de estruturas:

Estruturas imperativas
Estruturas de seleção
Estruturas condicionais
Estruturas repetitivas

Cada estrutura serve para um propósito e está atrelada a um ou mais


comandos que são essenciais para o correto funcionamento da mesma,
veremos a seguir o propósito de cada uma e alguns exemplos de como usá-
las.

Antes de darmos inicio a nossa primeira estrutura de programação


devemos ver algumas regras de Sintaxe

Sintaxe

A sintaxe (ou regras de sintaxe) é muito importante na linguagem de


programação, é essencial obedecermos as regras e escrever nosso
algoritmo corretamente para que o mesmo possa ser enviado para placa do
Arduino, pois o computador não enviará nenhum código escrito de forma
errônea ( com erros de sintaxe.

Mas o que seria a sintaxe na programação?

A linguagem de programação é uma língua assim como o português o inglês


e etc.. porém estaremos aprendendo essa nova língua para se comunicar
com os computadores e máquinas, isso mesmo, iremos nos comunicar com
as máquinas pedindo a elas que nos façam determinadas tarefas e resolva
alguns problemas cotidianos.
Leiaut Carielo – Escola de informática com eletrônica 40
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Como em todo idioma temos as regras gramaticais, na linguagem de


programação não é diferente, temos a sintaxe para representar a gramatica
na programação.

Vejamos a seguir alguns operadores que “regem” a sintaxe:

; (Ponto e vírgula)
{} (Chaves)
// (Comentário de única linha)
/* */ (Comentário de várias linhas)
#define (Definir constantes)
#include (Importar bibliotecas)

Um dos mais importantes caracteres na sintaxe é o; (ponto e virgula), é


necessário que todas as linhas de programação sejam finalizadas com ponto
e vírgula, caso contrário o algoritmo não será carregado para a placa.

Por que se faz necessário o ponto e vírgula?

Na programação existem comandos que são muito extensos e podem


precisar de mais de uma linha para serem escritos, devido a isso o
compilador permite que um só comando seja escrito em mais de uma linha,
porém deve haver o ponto e vírgula indicando o final do comando.

Estruturas imperativas

As estruturas imperativas são algoritmos de comandos afirmativos, ou seja


todo o código é construído de forma imperativa onde o caminho lógico
percorrido será um só.

A organização dos comandos pode interferir no resultado final do algoritmo.


Exemplo: Se você pedir para uma pessoa trocar uma lâmpada sem antes
ter colocado uma escada para subir até o local será impossível a tarefa ser
executada; Por isso primeiramente deve-se pedir para colocar a escada
depois trocar a lâmpada.

Da mesma forma é na linguagem de programação, devemos colocar os


comandos em ordem respectivos as suas funções, para que não haja mal-
uso do programa por parte do usuário. Todo programa segue uma
sequencia lógica de algoritmo, onde o programador dá as instruções ao
usuário de como usá-lo corretamente, um bom exemplo de um algoritmo
estruturado é uma receita, observe na página seguinte.

Leiaut Carielo – Escola de informática com eletrônica 41


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Receita criada por: Sanduba Insano


Leiaut Carielo – Escola de informática com eletrônica 42
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Veja que temos na receita os ingredientes e o modo de fazer, os


ingredientes seriam como as variáveis na programação onde teríamos o que
é preciso para que um determinado programa seja elaborado, EX:

O que seria preciso(ingredientes) para fazer um algoritmo que calcule a


soma de dois números?

Os comandos nos já temos para processar os dados (que seriam os


números) agora tudo que precisamos fazer é obter os números, esses
números iremos pedir ao usuário logo teremos que criar variáveis para
armazenar os números que o usuário digitar, EX:

A à Armazena primeiro número

B à Armazena segundo número

C à Armazena o resultado da soma de A+B

Onde A, B e C seriam variáveis do tipo inteiro.

No modo de fazer teremos a estrutura do algoritmo, onde estarão os passos


ou comandos de forma sequencial e de modo afirmativo, ou seja os
comandos executam puramente o que lhe são atribuídos sem impor
nenhuma condição EX:

A = Recebe um número

B = Recebe outro número

Se A maior que 10 entao


Soma A+B

O exemplo acima cita uma condição onde o código irá somar A+B somente
se A for maior que 10.

Também devemos obter primeiramente os números antes de soma-los, não


podemos efetuar uma soma sem que haja números para serem somados,
EX:

C à Armazena o resultado de A+B

A à Armazena o primeiro número

B à Armazena o segundo número

A ordem do algoritmo acima está incorreta, pois A e B tem seus valores


definidos depois de ser efetuada a soma dos mesmos, logo o resultado
dessa soma seria 0 ou nulo, para que esse algoritmo esteja na estrutura

Leiaut Carielo – Escola de informática com eletrônica 43


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ordenada corretamente devemos pensar logicamente que para somar A+B


temos que primeiro saber os seus respectivos valores.

Na programação do Arduino iremos escrever o código em sequencia


conforme os passos a seguir:

1. Definir componentes

Antes de começar a codificar seu algoritmo é importante o uso de


variáveis relacionadas as portas do Arduino onde estarão os
componentes desejados.

ü Esta etapa será feita antes do Setup.

2. Definir modo de atuação do componente (INPUT/OUTPUT)

É de extrema importância definir o modo de atuação de cada


componente que temos no Arduino, se você, por exemplo, tentar
acender um led sem defini-lo como componente de saída(OUTPUT) o
mesmo não irá acender.

ü Esta etapa será feita no Setup.

3. Definir iniciações

Definir iniciações de outros possíveis componentes e


atuadores(veremos mais a frente) e se haverá comunicação serial(a
seguir uma explicação mais detalhada sobre comunicação serial).

ü Esta etapa também será feita no Setup.

4. Estrutura do algoritmo

Agora iremos montar a estrutura do algoritmo de forma que


possamos manipular os componentes no Arduino de forma correta,
aqui entrarão os comandos para acender leds e apaga-los, teremos
também os comandos em geral para leitura de dados em sensores
etc...

ü Esta etapa será feita no Loop.

Leiaut Carielo – Escola de informática com eletrônica 44


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Vejamos um exemplo de estrutura imperativa no Arduino, o exemplo a


seguir é de um algoritmo para acender um led:

Explicando o código:

Observe na primeira linha a declaração à


Nesta linha estamos criando uma variável de nome led e valor 3 do tipo
inteiro(int), ou seja, criamos uma variável chamada led do tipo inteiro e
atribuímos 3 ao seu valor, usaremos essa variável para se referir a porta do
Arduino onde provavelmente está o componente.

Na linha onde temos o comando à estamos


definindo o modo de atuação da porta do Arduino, como a variável led vale
3 estamos definindo que na placa do Arduino na porta 3 o modo será de
saída ou atuador, isso significa que ele apenas enviará sinal para a porta
especificada, logo se colocássemos um sensor na porta referida na placa do
Arduino ele não iria conseguir enviar dados para o programa, pois a porta 3
foi definida como saída e não como entrada.

Tradução de OUTPUT à SAÍDA

Logo mais no Loop temos o comando responsável por liberar o sinal na


porta especificada:

Esse comando irá enviar o sinal de ligado para a placa do Arduino na porta
3, pois a variável led vale 3.

Tradução de HIGH à ALTO

Só que todo esse código só será executado no Arduino ao ser enviado para
a placa, caso contrário não valerá de nada.
Leiaut Carielo – Escola de informática com eletrônica 45
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Enviando o código para o Arduino:

Agora na interface do Arduino basta clicar no botão enviar

Está carregado o algoritmo.


[

Neste exemplo vimos um algoritmo de estrutura imperativa, esse tipo de


estrutura é bem limitada porém ainda podemos incrementar mais
comandos.

Comando delay()
o Este comando atrasa em milissegundos o tempo de execução
do próximo comando, ao executar esse comando o arduino
pausa o Loop de acordo com o tempo especificado.

Exemplo:

digitalWrite(led,HIGH);
delay(1000);
digitalWrite(led,LOW);
delay(1000);

No exemplo acima o led acenderá e depois de 1 segundo apagará e se esse


código estiver no Loop o led ficará piscando.

Podemos usar também o comando delayMicroseconds() que recebe


microssegundos como argumento.

delay() à tempo especificado em milissegundos 1000 milissegundos = 1


segundo delayMicroseconds() à Tempo especificado em microssegundos
1000 microssegundos = 1 milissegundo.

Leiaut Carielo – Escola de informática com eletrônica 46


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Comentários

O comando // pode ser usado para comentar qualquer parte do código para que no
futuro seja de fácil identificação um determinado comando ou função.

Temos no Arduino dois tipos de comentários:

Comentários de uma linha à Esses comentários são iniciados com // colocando


esse comando em uma determinada linha o que estiver escrito nesta linha será
ignorado pelo Arduino visto que mesmo que haja um comando dentro de um
comentário o mesmo não será executado, veja um exemplo abaixo:

Observe que descrevemos de forma simples a função da linha de código que está
logo abaixo, para os comentários não há regras, seja apenas simples e objetivo nos
seus comentários.

Temos também o comentário de várias linhas, com ele você pode, por
exemplo, comentar uma parte do seu código para que você possa usar no futuro
um determinado trecho do qual você tem uma função importante, porém não quer
usar essa função agora mas também não quer apagar a mesma ou tirar do código.

Para comentar várias linhas inicie a linha com /* e terminar com */ observe o
exemplo abaixo:

Sempre que precisar informar uma funcionalidade, descrever uma função


que acha que pode esquecer use os comentários, é uma boa prática na
programação.

Leiaut Carielo – Escola de informática com eletrônica 47


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Estruturas condicionais

As estruturas condicionais nos permitem atribuir mais de um caminho a ser


percorrido pelo micro controlador, com as estruturas condicionais podemos,
por exemplo, determinar uma condição onde um led acenderá ou não
conforme a temperatura lida por um sensor, neste caso o algoritmo ficaria
com a seguinte estrutura:

Se (temperatura menor que 30 C°) então {

Acender led

} senao{

Apagar led

Observe que a sintaxe é apenas para exemplificação do que seria uma


estrutura condicional.

No código o algoritmo ficaria da seguinte maneira:

Aqui já temos todos os componentes configurados devidamente no


setup(método setup), também já estamos com o sensor de temperatura
configurado para nos fornecer a temperatura em Graus célsius.

Nos algoritmos condicionais iremos usar os operadores de comparação


(pág. 21), sempre que nos depararmos com uma condição os operadores
irão fazer a comparação de valores conforme a declaração estabelecida.

EX:

if (31>2) à Operador maior que fazendo comparação do número 31 sobre o


número 2, interpretaremos essa declaração da seguinte maneira:

ü se 31 maior que 2

Leiaut Carielo – Escola de informática com eletrônica 48


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Logo após o argumento da condição devemos especificar para o


computador, o que ele deverá fazer caso a condição determinada seja
verdadeira.

Ex: No nosso argumento, qual o comando que o computador deverá


executar caso 31 seja maior que 2? A condição é verdadeira, isso já
sabemos, o computador também, porém ele precisa saber agora o que
fazer, vamos lá.

Observe que depois da condição declarada temos a abertura de uma chave


que representará o inicio da nossa estrutura condicional, é dentro do campo
dessa chave que iremos colocar os comandos que o computador irá
executar caso a condição declarada seja verdadeira.

if (temperatura < 30) à Aqui determinamos a condição

{ à Aqui iniciamos a estrutura do condicional

digitalWrite (led,LOW); à Aqui estamos programando o comando que o


computador irá executar caso a condição declarada for verdadeira

} à Aqui estamos finalizando/fechando a estrutura condicional

O espaço entre o inicio e o fim da estrutura condicional é chamado de


corpo, no corpo da estrutura condicional iremos adicionar os comandos e
até inserir outras estruturas condicionais a serem executadas caso a
primeira condição seja verdadeira, observe:

if (temperatura < 30){ à Inicio da primeira condição

if (umidade > 70){ à Inicio da segunda condição

digitalWrite(arCondicionado,HIGH); à Comando a ser executado.

} à Fim da segunda condição


} à Fim da primeira condição

Observe que com uma condição dentro da outra o comando só será


executado caso as duas condições sejam verdadeiras.

Não há um limite quanto ao uso de condições, você pode usar quantas


quiser estando dentro de outras condições ou não. Ao usarmos várias
condições usaremos o comando else if a partir da segunda condição em
diante, observe:

Leiaut Carielo – Escola de informática com eletrônica 49


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

No exemplo anterior o computador irá checar a primeira condição, se


verdadeira o comando digitalWrite(led,LOW); será executado, a condição
posterior não será analisada.

Caso a primeira condição seja falsa a segunda é verificada, sendo


verdadeira o comando digitalWrite(led,HIGH); é executado, ainda temos um
comando que servirá de exceção caso todas as condições forem falsas ele
determinará o que será executado por padrão, observe:

O comando else não precisa ter condição declarada, ou seja digite o


comando abra as chaves insira os comandos a serem executados por
padrão, caso as condições anteriores não sejam verdadeiras e sua estrutura
condicional estará completa.

As estruturas condicionais podem ser modificadas e implementadas de


acordo com a necessidade, observe o código a seguir.

Na primeira condição o computador irá verificar se a temperatura está


abaixo de 50 graus caso sim, o primeiro ar condicionado é acionado, caso a
temperatura ultrapasse os 50 graus, o computador entra na segunda

Leiaut Carielo – Escola de informática com eletrônica 50


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

condição verificando se a temperatura está abaixo de 60 graus, caso sim, o


ar condicionado 1 e o ar condicionado 2 serão acionados, veja que temos
um else que servirá de exceção caso as condições anteriores forem falsas,
ou seja, a temperatura não é menor que 50º e também não é menor que
60º, logo o computador executará o código que está dentro do else.

Ao extrairmos o código que está dentro do else temos:

Observe que é outra estrutura condicional, caso as condições anteriores


forem falsas e o código que está no else for executado, o computador irá
verificar outra condição que é referente a umidade se a umidade for menor
que 60 além dos ares condicionados o umidificador também será acionado e
após 30 minutos o umidificador é desligado.

Então as estruturas condicionais deverão ser construídas de acordo com a


situação proposta, observe que a única regra é a regra de sintaxe
(parênteses, chaves, operadores de comparação), para todos os casos a
sintaxe da estrutura condicional deverá ser escrita da seguinte forma:

if (condição)
{
comando1;
}
else if(condição 2)
{
comando2;
}
else{comando3;}

Leiaut Carielo – Escola de informática com eletrônica 51


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Observe que temos ponto e vírgula apenas nos finais de cada comando, a
estrutura de condicional if deverá seguir sempre essa sintaxe, você poderá
construir quantas estruturas quiser dentro de outras ou não, observe
apenas na escrita da sintaxe.

Várias comparações

Podemos fazer várias comparações dentro de uma mesma condição, para


isso usaremos alguns operadores especiais, que servem para determinar
verdadeiro ou falso um conjunto de comparações que teremos em uma
estrutura condicional, usaremos os seguintes operadores:

&& à operador “e”


|| à operador “ou”

Existe uma tabela chamada tabela verdade que serve para classificar as
condições de acordo com os operadores, veja abaixo a tabela:

Operador &&

Condição 1 Condição 2 Resultado

V V V

V F F

F V F

F F F

Repare que o resultado é verdadeiro apenas se todas as condições forem


verdadeiras, neste exemplo vimos apenas duas condições mas o mesmo
seria válido para mais de duas condições, na programação do Arduino o
código ficaria da seguinte maneira:

Repare que no código estamos fazendo duas comparações em um mesmo


condicional if o computador dessa vez irá verificar se a temperatura está

Leiaut Carielo – Escola de informática com eletrônica 52


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

acima de 0 E abaixo de 30 Graus, dessa forma o condicional irá obedecer o


intervalo entre 0 e 30 Graus.

Podemos usar o operador && nas condições onde desejamos estabelecer


um intervalo de valores como o exemplo anterior da temperatura, onde
estabelecemos um intervalo de temperatura para nossa estrutura
condicional.

Não há um limite para quantas comparações podemos fazer, mas observe


bem seu algoritmo para que o mesmo satisfaça de modo eficiente as
condições propostas, o computador apenas executa o que você pede.

Operador || (ou)

Condição 1 Condição 2 Resultado

V V V

V F V

F V V

F F F

Neste operador apenas uma das comparações sendo verdadeiras teremos


toda a expressão como verdadeira, pois satisfazendo apenas uma das
comparações a expressão já é considerada como verdadeira.

Todos esses operadores deverão ser implementados de acordo com a


situação proposta, você poderá combinar esses operadores da forma que
for necessária para satisfazer a condição da qual você precisa, ex:

Em nosso sistema desejamos que o ar condicionado seja ativado caso a


temperatura seja menor que 30 e a umidade esteja abaixo de 65, ou caso a
temperatura ultrapasse os 30 graus apenas o ar condicionado seja ativado,
nosso código ficaria da seguinte maneira:

Observe que isolamos as comparações com parênteses para que o


computador interpretasse corretamente a situação que desejamos onde as
comparações dos parênteses mais internos serão resolvidas primeiro.

Leiaut Carielo – Escola de informática com eletrônica 53


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Dessa forma evitamos que haja alguma má interpretação por parte do


computador, pois o computador não tem raciocínio lógico e não interpreta
situações isso fica sob responsabilidade do programador, que deverá
analisar atentamente o código que está escrevendo.

Algumas dicas uteis ao programar estruturas condicionais

ü Analise a situação do problema proposto e defina de forma clara e


objetiva o que o problema esta requerendo.
ü Antes de programar especifique as condições de forma clara e
simples.
ü Analise se suas especificações realmente satisfazem a situação.
ü Faça testes do que seria seu suposto algoritmo, imagine seu código
pronto com as configurações definidas até agora.
ü Tente prever possíveis falhas que seu futuro código poderá ter e
tente corrigir antes mesmo de acontecer (não se preocupe, não
precisa ser todas as falhas, algumas você descobrirá com o tempo).
ü Comece a escrever seu algoritmo sempre observando a sintaxe e
colocando todos os pontos e vírgulas, chaves e parênteses da forma
correta, não deixe pra arrumar a sintaxe depois de codificado o
algoritmo, poupe tempo fazendo isso antes.
ü Depois que estiver codificando, faça testes e analise os resultados de
cada funcionalidade, em alguns casos não é preciso acabar todo o
algoritmo para ter uma visão mais ampla de todo o código.
ü Se estiver usando muitas condições você poderá comentar as linhas
descrevendo sua funcionalidade para que no futuro você saiba o que
codificou e até outros programadores entendam seu código mais
facilmente.

Leiaut Carielo – Escola de informática com eletrônica 54


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Estruturas de seleção

Nas estruturas de seleção estaremos atribuindo um determinado valor a um


trecho de código, assim teremos uma estrutura onde cada valor chamará
um menu referente a um trecho de código, vejamos um exemplo:

Temos alguns comandos novos aqui, o primeiro comando Serial.read() faz a


leitura de um dado que foi digitado no serial monitor, logo em seguida o
valor lido é armazenado na variável x.

Já o comando switch faz a escolha do trecho do código de acordo com o


valor da variável x, ou seja, x recebe um valor do usuário o switch escolhe
o trecho de algoritmo a ser executado de acordo com o número
digitado/escolhido.

O comando case 1: é referente ao trecho de código que será executado


caso o número digitado/escolhido seja 1, e logo abaixo de case 1: temos o
comando que será executado caso o número digitado seja 1 que neste caso
é digitalWrite(arcondicionado1,HIGH); e logo abaixo desse comando temos
o comando break; que serve para “quebrar” o menu, o primeiro menu
começa no comando case 1: acaba no comando break;

O comando break; serve para quebrar uma estrutura, EX: se tivermos uma
estrutura de código com 100 linhas e inserirmos o comando break; na
metade do código só a metade anterior será executada, por esse motivo o
nome break; que significa quebrar.

Ainda nas estruturas de seleção temos o comando default: que seria tipo
um else nas estruturas condicionais, por padrão o código que está no
default: será executado caso nenhumas das opções do menu sejam
escolhidas, veja o exemplo a seguir:

Leiaut Carielo – Escola de informática com eletrônica 55


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

No exemplo acima o usuário terá duas opções caso ele digite uma opção
inválida (3 por exemplo) o programa irá mostrar no serial monitor a
mensagem “digite uma opção válida”

Dentro de cada caso você pode inserir a estrutura de algoritmo que quiser,
observe o exemplo abaixo:

Observe que no caso 1 temos uma estrutura de condição, além do usuário


precisar escolher a opção 1 para que o ar condicionado 1 seja ativado, a
temperatura deverá estar abaixo de 30º para que o ar condicionado 1 seja
ativado, assim na estrutura de seleção você poderá inserir várias outras
estruturas de tipos diferentes, inclusive as estruturas que ainda veremos a
seguir.

Leiaut Carielo – Escola de informática com eletrônica 56


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Estruturas de repetição

As estruturas de repetição são estruturas que executam várias vezes um


determinado comando, elas podem ter sua quantidade de repetições pré-
estabelecidas, ou podem ser compostas com uma condição onde a estrutura
só irá parar de repetir o algoritmo quando a condição determinada for falsa.

Temos no Arduino três tipos de estruturas de repetição, abordaremos


apenas duas delas aqui pois são as únicas que veremos neste módulo, mas
não necessita se preocupar com a terceira estrutura de repetição visto que
a mesma tem uma semelhança muito grande com as estruturas que
veremos aqui, e é de fácil entendimento.

Vamos lá, as estruturas de repetição que temos no Arduino são as


seguintes:

for
while
do..while (mesmo que while)

Estrutura for

As estruturas do tipo for tem um número de repetições pré-


estabelecidas, e podem ser modificadas de acordo com a necessidade,
funcionarão como contadores que incrementarão ou decrementarão na
estrutura, valores que estão relacionados ao contador responsável pela
quantidade de repetições, observe o exemplo abaixo:

Observe a estrutura desta linha inicialmente


temos o comando for, que é responsável por dar inicio ao laço de repetição,
e dentro dos parênteses temos alguns argumentos separados por ponto e
vírgula, veja abaixo qual a função de cada parâmetro desses:

Leiaut Carielo – Escola de informática com eletrônica 57


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

à Neste primeiro parâmetro estamos definindo o ponto de


partida do laço e sua variável de referência, temos x como variável de
referência e 0 como valor inicial.

Mas, o que seria variável de referência? Observe o exemplo abaixo:

Em uma pista de corrida, o que determina que um corredor fez uma volta
completa? Como sabemos em qual lapidada está um carro de fórmula um?

Toda pista de corrida tem uma


marcação seja ela pintada na pista ou até mesmo uma simples bandeira,
indicando que ao passar por aquele ponto você terá completado uma volta,
ao passar mais uma vez por aquele mesmo ponto você terá completado
duas voltas, e assim por diante.

A marcação na pista está servindo de referência para que você saiba


exatamente quando você fez uma volta completa na pista, não é diferente
na programação o computador também precisa saber quando ele completou
uma volta completa em todo o código, para isso a referência no laço de
programação para saber quantas voltas ele já deu, a referência neste caso
é a variável.

A variável de referência funcionará como um acumulador que irá contar


quantas vezes o laço foi executado, a cada volta do laço o comando
que declaramos no terceiro parâmetro no inicio do laço, incrementa +1 a
variável que está fazendo a referencia para contar o laço que é a variável x.

Observe na página a seguir o que vai acontecer passo a passo


durante a execução desse laço de programação desde a sua primeira até a
ultima volta:

Leiaut Carielo – Escola de informática com eletrônica 58


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

à Primeiramente o computador irá ler os parâmetros dentro dos parênteses


para determinar quantas voltas terá o laço de programação.

à a partir desta linha o computador já


determina que o laço terá 10 voltas, ou seja todo o código que estiver no
corpo do laço irá ser repetido por 10 vezes, indo de 0 a 9.

Observe que a variável de referência responsável pela quantidade de vezes


que o laço é executado começa sua contagem tendo valor igual a 0, ou seja
nosso laço se repete 10 vezes, porém indo de 0 até 9.

à Depois de ter definido de onde iniciar e até onde o laço deve ir o


computador dá inicio a execução dos comandos que estão dentro das
chaves, que representam por sua vez o corpo do laço de programação.

ü A chave é um fator extremamente importante, sem elas o laço se


torna inútil. Pois são elas que determinam os comandos que serão
executados a cada volta do laço de programação.

Tudo o que está agora dentro das chaves será executado desde a primeira
linha de comando até a ultima:

Temos apenas um comando dentro do corpo do laço, esse mesmo comando


será executado 10 vezes seguidas.

Cada vez que o computador percorre todo o código, desde o inicio do laço
onde estamos abrindo a chave, até o fim do laço onde estamos fechando a
chave, a variável x que serve de referência e contador irá acumular o
número de vezes que o laço de programação foi executado, fazendo assim a
contagem das voltas dadas pelo computador em um determinado algoritmo.

Leiaut Carielo – Escola de informática com eletrônica 59


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Depois de executar todos os comandos que estão dentro das chaves o


computador retorna ao inicio do laço de programação, só que dessa vez a
variável x será incrementada em +1:

1. Computador lê os parâmetros

2. Computador
executa todos
X+1 os comandos
que estão
dentro do
corpo do laço

3. Computador retorna ao
inicio do laço acrescentando
+1 a variável X, inicialmente
X era 0, agora X é 1.

E todo esse processo se repete até que x seja igual a 9, pois nos
parâmetros do laço de programação definimos que o laço será
continuamente executado até que x seja igual ao valor anterior a 10, por
causa da expressão x<10.

Observe o exemplo anterior ao ser executado no Arduino:

Leiaut Carielo – Escola de informática com eletrônica 60


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Veja que o nome “Arduino” foi escrito na tela 10 vezes, isso devido ao
comando estar dentro do laço.

Também podemos imprimir uma lista de contagem, a partir da variável que


está sendo usada de contador pelo laço de programação, observe:

Com este código:

Teremos este resultado:

A variável i a cada incremento imprime seu valor no serial monitor.

Leiaut Carielo – Escola de informática com eletrônica 61


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Podemos fazer até uma tabuada usando esse artificio, observe:

Fizemos as seguintes alterações no código:

E temos o seguinte resultado:

Para que o resultado saísse da forma esperada tivemos que usar um


comando Serial.print() para cada argumento, pois o comando
Serial.println() ou mesmo o comando Serial.print() não aceita mais de um
argumento, por esse motivo não temos como concatenar valores dentro do
comando, Exemplo:

Caso fosse possível inserir vários argumentos dentro do comando


Serial.println() o faríamos da seguinte maneira:

Serial.println(“5 x “+i+” = “+5*i)

Leiaut Carielo – Escola de informática com eletrônica 62


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Podemos também fazer um laço que em vez de incrementar o valor da


variável ele irá decrementar, funcionando como uma contagem regressiva,
para isso precisamos fazer algumas modificações no laço, observe:

As seguintes modificações foram feitas:

Observe que agora a variável i, que é a referencia de contagem para o laço,


inicia em 10.
E no segundo argumento logo após o primeiro ponto e vírgula temos i>0
que significa que i deve ir até 1 (i>0 = 1), então no nosso laço temos uma
contagem de 10 até 1, no terceiro argumento estamos decrementando o
valor da variável i usando o operador de decremento --.

Veja o resultado que temos agora:

Leiaut Carielo – Escola de informática com eletrônica 63


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Estrutura while

A estrutura de repetição while (ou laço while se preferir) é uma estrutura que
diferentemente da estrutura for não tem um inicio e um fim pré determinado, para
as estruturas do tipo while iremos usar condições para determinar quando o laço
deve parar.

Observe:

Nos tipos de estrutura for, definimos um valor de inicio e um valor final para a
quantidade de voltas:

Código:

Resultado:

Leiaut Carielo – Escola de informática com eletrônica 64


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Nos tipos while iremos impor uma condição, onde o laço será executando
continuamente enquanto a condição determinada for verdadeira, na tradução literal
temos que while significa enquanto, então nossa estrutura while executará uma
série de comandos e instruções “enquanto” uma determinada condição for
verdadeira:

Código:

Resultado:

Veja que temos o mesmo resultado, porém com uma estrutura diferente,
mas do mesmo tipo que é repetição.

Inicialmente declaramos a variável a sendo igual a 0 à int a =0; neste


ponto apenas definimos o valor inicial de a.

Leiaut Carielo – Escola de informática com eletrônica 65


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Na primeira linha do laço onde temos o comando while estamos iniciando o


laço, as condições deverão ser declaradas dentro dos parênteses ao lado do
comando while, observe que temos a condição (a<10) dentro dos
parênteses do nosso laço while, isso significa que o nosso laço será
continuamente executado enquanto o valor da variável a for menor que 10,
uma linha antes declaramos que a variável a é igual a 0 então nossa
condição é verdadeira logo o nosso laço será executado.

Observe que o laço while também tem um corpo iniciando com uma chave e
fechando com outra:

Essas chaves representam o corpo do


while, tudo o que estiver aqui será
executado continuamente enquanto a
condição do laço for verdadeira.

Logo mais no laço temos o comando a++, já vimos que o comando ++ é


um comando de incremento estamos incrementando aqui nessa variável +1
toda vez que o laço completa uma volta:

a+1

Todo o processo se repete até que a seja maior que 10, ou seja 11, então
nossa condição dentro do while já se torna falsa e o laço por sua vez deixa
de ser executado.

As condições declaradas no laço while funcionam de mesmo modo que uma


condicional if, todos os argumentos usados no if podem ser usados também
no laço while, lembrando que while é um laço e executa determinado
comando várias vezes enquanto a condição for verdadeira, já no condicional
if o comando é executado uma única vez.

Com a estrutura while podemos determinar uma condição, onde um botão


enquanto pressionado irá atuar sobre um led fazendo-o piscar.

Breve descrição do nosso algoritmo, como deve ficar:

1. Ler status do botão


2. Enquanto botão estiver pressionado

Leiaut Carielo – Escola de informática com eletrônica 66


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

3. Led acende
4. Atraso de 1 segundo
5. Led apaga
6. Atraso de 1 segundo

Agora vamos traduzir para os comandos do Arduino:

O comando digitalRead() faz a leitura da porta onde temos o botão


conectado e retorna um valor, como é um componente digital (botão) o
valor que o comando digitalRead() irá retornar é 0 ou 1.

O valor que o comando digitalRead() retorna é armazenado na variável


statusBotao:

0-1

Armazena valor na variável statusBotao

As constantes HIGH e LOW são variáveis do tipo int que representam


respectivamente 1 e 0, ou seja se o comando digitalRead() retornar 1 será
o equivalente a HIGH e caso retorne 0 será o equivalente a LOW, por isso
na comparação fizemos da seguinte maneira

à Enquanto statusBotao estiver HIGH


(mesmo que 1) todos os comandos que estão dentro do corpo do laço while
serão executados continuamente até que o statusBotao esteja LOW (mesmo
que 0).
Leiaut Carielo – Escola de informática com eletrônica 67
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Considerações finais

A programação não é algo já pronto que se implementa apenas,


programação é algo que se cria, a partir dos comandos que temos
disponíveis com suas respectivas funções.

Não siga as regras, mas obedeça a sintaxe, pense com calma no que você
deseja fazer antes de escrever o código. É essencial saber os detalhes do
que você pretende fazer.

Se teve alguma ideia tenha em mente uma coisa:


Definitivamente não haverá um comando que
execute toda a sua ideia, por completo, para que
sua ideia saia da imaginação serão necessários
vários e vários comandos, por mais simples que
seja ela, até mesmo para acender um simples led
é necessário mais de um comando, então pense
com calma e use os códigos mais simples
possíveis, não é um código complexo que irá
deixar seu sistema bom, mas um código bem elaborado e com os comandos
necessários para que ele funcione de forma eficaz e eficiente.

Lembre-se as plataformas do Arduino são microprocessadores sua


capacidade de processamento é baixa, um computador executa milhares e
milhões de linhas de códigos, dos mais complexos possíveis, sem problema
algum, porém o Arduino terá dificuldades de executar um código muito
extenso e relativamente complexo e com muitas funções e variáveis.

Leiaut Carielo – Escola de informática com eletrônica 68


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Bibliografia

www.arduino.cc/en/Reference/HomePage

Tutoriais

LABDEGARAGEM.COM

WWW.INSTRUCTABLES.COM

FACACOMARDUINO.INFO

BLOG.FILIPEFLOP.COM

WWW.ARDUINOBR.COM

Fim do material teórico

Leiaut Carielo – Escola de informática com eletrônica 69


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 1

Material prático

Leiaut Carielo – Escola de informática com eletrônica 70


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ABORDAGEM TEÓRICA

Nesta primeira aula iremos trabalhar com leds e


botões, primeiramente veremos como definir as
portas do Arduino onde está o led, e depois
como mandar o sinal para acionar o mesmo.
Depois teremos um pequeno semáforo simulado
em nossa protoboard, e por fim veremos como
ler o estado de um botão e a partir disso acionar
um led, ou seja, iremos programar um botão
para que: ao ser pressionado o led acender e ao
ser solto o led apagar.

Primeiramente tudo o que precisamos fazer é definir as portas onde o componente está, para
isso criaremos uma variável para armazenar o valor que se refere a porta do Arduino.

Uma variável é definida como um espaço na memória do micro controlador que


armazenará um tipo de dado determinado. Essas variáveis deverão receber nomes para poderem
ser referenciadas e modificadas quando necessário.

Para declarar uma variável precisamos primeiramente definir seu tipo, o tipo que usaremos aqui
é o tipo int que recebe valores numéricos inteiros, o nome da nossa variável será o nome do
componente que estaremos usando na porta referida.

Não é uma regra usar o nome do componente para criar a variável visto que o computador não
entende o que é um led ou qualquer outro componente, lembre o computador é um sistema
apenas para processamento de dados ele não possui inteligência/intelecto, ou seja ele não é
racional, logo todos os nomes de variáveis usados aqui em todas as outras aulas serão fictícios
que tem sentido apenas para nos mesmos, para facilitar a programação ao manusear um
determinado componente no código de programação.

Então nossa primeira linha de código ficará semelhante a isso:

Nesta linha acabamos de definir a variável led cujo valor é 2 que posteriormente será a porta do
Arduino onde o componente está conectado, a partir de agora o computador entenderá a
“palavra” led como valor 2 em qualquer parte do código que você a escreva.

Agora dentro do método setup() iremos definir realmente a porta onde está o componente no
Arduino e se é um componente de entrada/sensor (INPUT) ou um componente de
saída/atuador (OUTPUT).

Leiaut Carielo – Escola de informática com eletrônica 71


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

O comando pinMode() está definindo led como OUTPUT, como led = 2 estamos definindo aqui
que a porta 2 do Arduino será saída, ou seja, nesta porta iremos apenas enviar sinais para
acionar componentes.

Enviaremos agora o sinal para acender o led para isso usaremos o método loop(), no método
setup() definimos apenas alguns parâmetros como portas tipo de comunicação etc.., porém é
no loop que iremos manusear os componentes que tivermos no Arduino.

Comando digitalWrite()

Usaremos o comando digitalWrite() para acender o led, porém podemos usar também o
comando analogWrite() que iremos ver nas aulas mais a frente.

Como ficará o comando no método loop():

No comando temos led e HIGH que significam respectivamente: Na porta 2 enviar sinal de ALTO
ou LIGADO, nosso código está pronto tudo o que precisamos fazer agora é enviá-lo para a placa,
mas isso veremos adiante na prática.

A seguir você verá o esquema elétrico da montagem do led, apenas para fins didáticos.

Leiaut Carielo – Escola de informática com eletrônica 72


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Esquema elétrico do led com o Arduino

Leiaut Carielo – Escola de informática com eletrônica 73


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Acender um Led simples

Siga os passos abaixo, montado o esquema na protoboard para acender um Led no Arduino.
Se desejar saber mais sobre led consulte a apostila teórica de Arduino.

Passo 1: Monte o seguinte esquema na protoboard.

Resistor de 1k ohms
Ânodo do Led na porta digital 2 do Arduino.

Leiaut Carielo – Escola de informática com eletrônica 74


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Agora na interface do Arduino escreva o seguinte algoritmo:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o código e a montagem estiverem corretos você verá o led acender.

Leiaut Carielo – Escola de informática com eletrônica 75


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Montando um semáforo

Passo 1: Monte o seguinte esquema na protoboard.

Led vermelho na porta digital 9 – Resistor de 1k Ohms


Led amarelo na porta digital 8 – Resistor de 1k Ohms
Led verde na porta digital 7 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 76


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte código no Arduino.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o código e a montagem estiverem corretos você verá os leds acenderem


consecutivamente.

Leiaut Carielo – Escola de informática com eletrônica 77


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Botão com Led

Iremos agora montar um led e um botão na protoboard, o botão funcionará como atuador
e acenderá o led ao ser pressionado.

Passo 1: Monte o seguinte esquema na protoboard:

Botão na porta digital 4 – Resistor de 10k Ohms


Led na porta digital 3 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 78


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Agora na interface do Arduino escreva o seguinte código:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o código e a montagem estiverem corretos você verá o led acender ao ser


pressionado o botão, e caso o botão não esteja pressionado o led permanece apagado.

Neste código usamos estruturas condicionais para saber mais sobre estruturas
condicionais consulte a apostila teórica.

Leiaut Carielo – Escola de informática com eletrônica 79


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Botão com led piscando

Agora iremos fazer com que o led pisque em vez de só acender ao ser pressionado o botão.

Passo 1: O esquema desse circuito é o mesmo do anterior.

Botão na porta digital 4 - Resistor de 10k Ohms


Led na porta digital 3 - Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 80


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: No algoritmo escreva o seguinte código, ou altere do algoritmo anterior as linhas


marcadas em amarelo.

Modifique aqui

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o código e a montagem estiverem corretos você verá o led piscar ao ser


pressionado o botão, e caso o botão não esteja pressionado o led permanece apagado.

Leiaut Carielo – Escola de informática com eletrônica 81


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Exercícios

Questionário 1:
Observe o código abaixo e responda as questões propostas.

1. Qual o significado do valor 3 na primeira linha do nosso algoritmo onde temos


?

2. Qual o significado do comando OUTPUT na linha onde temos ?

Leiaut Carielo – Escola de informática com eletrônica 82


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

3.Caso você deseje desligar o LED após 5 segundos de funcionamento, como deverá ficar o
seu código? Descreva o comando necessário:

4.Qual a diferença do void setup para o void loop?

5.Para inserir um breve comentário na sua linha de código, qual será a simbologia
demonstrada na sua linha de código?

Leiaut Carielo – Escola de informática com eletrônica 83


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Questionário 2:

Observe o código abaixo e responda as questões propostas.

1. Em quais portas do Arduino estão ligados o LED e o botão, respectivamente?

2. O que significa dizer que o modo do pino do botão será, INPUT?

Leiaut Carielo – Escola de informática com eletrônica 84


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

3. Qual a finalidade da variável Status_botão?

4. Por que o Status_botão está declarado no void loop? Ele poderia ser declarado no void
setup?

5.Explique a lógica da função condicional if, aplicando ao seu programa.

Leiaut Carielo – Escola de informática com eletrônica 85


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Questionário 3:

Observe o código abaixo e responda as questões propostas.

1.O que será o Serial.begin? O valor 9600, o que representa?

2.Qual a finalidade do comando delay?

Leiaut Carielo – Escola de informática com eletrônica 86


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

3.O tempo fornecido no delay está em qual unidade?

4.Qual a função do comando Serial.Println? Informe o pré-requisito na linha de código


para o seu funcionamento.

5.Supondo que os LED’s sejam acionados sem que o botão seja pressionado e delisgados
ao pressionar. Como ficará o código?

Leiaut Carielo – Escola de informática com eletrônica 87


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

6. Observe o código abaixo, informe se o mesmo irá rodar ou não. Justifique sua resposta.

Leiaut Carielo – Escola de informática com eletrônica 88


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

7. Observe o código abaixo, informe se o mesmo irá rodar ou não. Justifique sua resposta.

Leiaut Carielo – Escola de informática com eletrônica 89


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 2

Material prático

Leiaut Carielo – Escola de informática com eletrônica 90


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ABORDAGEM TEÓRICA

Nessa segunda aula prática do curso de Arduino, começaremos a estudar um sensor bastante
conhecido, o LM35, e um resistor variável bastante utilizado, o potenciômetro.

O LM35 é o sensor de temperatura mais popular, embora se pareça com um transistor, ele é um
C.I (circuito integrado). Ele possui uma incrível faixa de atuação de -55ºC até 150ºC, com uma
precisão média de 0,5ºC.

Para que possamos visualizar a temperatura ambiente que está sendo aferida pelo nosso sensor
no serial monitor do Arduino, precisaremos utilizar alguns comandos, para isso, fique bem
atento!

Para utilizar o lm35, você deverá seguir a mesma lógica da ligação de um LED, primeiramente
criaremos uma variável para facilitar na programação quando formos manusear os componentes.
O lm35 é um componente analógico logo deverá estar ligado a uma porta analógica do Arduino.

Nas placas Duemilanove e nos modelos antigos a declaração ficaria da seguinte maneira:

Para se referir as portas analógicas nas placas mais antigas é necessário a adição da letra A
antes do número da porta.

2ºPasso: Como estamos trabalhando com um sensor, dentro do void setup(), o seu pino deverá
ser definido como INPUT.

3ºPasso: Após definir o pino, ainda dentro do void setup() será necessário definir o comando:
Serial.begin(9600), pois a partir dele será possível verificar no serial monitor do Arduino a
temperatura auferida pelo sensor em tempo real.

4ºPasso: Dentro do void loop, será necessário criar uma variável temp (temperatura) que deverá
verificar a leitura analógica do nosso sensor e através de uma equivalência transformar os dados
analógicos em digitais para compreensão do micro controlador.

5ºPasso: Para finalizar, precisaremos do comando Serial.println, que será responsável por
informar no serial monitor do Arduino a temperatura que está sendo auferida no momento.

2.Componentes Analógicos X Digitais

Dentro dos circuitos eletrônicos, encontraremos dois tipos de componentes, os analógicos e os


digitais.

Leiaut Carielo – Escola de informática com eletrônica 91


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

De maneira simplificada, os componentes digitais são aqueles que trabalham com apenas dois
estados ou valores: ligado ou desligado.

Já os componentes analógicos serão aqueles que trabalham com uma variação mais ampla, como
por exemplo o LM 35 que pode informar ao circuito um valor de temperatura que poderá variar
de -55ºC até 150ºC, com isso temos que os componentes analógicos têm vários estados.

3.Os potenciômetros

Os potenciômetros são resistores variáveis, assim como o LM35 são componentes analógicos que
para serem utilizados precisarão estar definidos no void setup, como INPUT.

O código acima está fazendo uma leitura do potenciômetro que está na porta analógica 1. Para
que um potenciômetro funcione corretamente é preciso alimentá-lo com uma corrente através
dos pinos nas extremidades.

A imagem abaixo mostra como é feita a ligação de um potenciômetro no Arduino.

Leiaut Carielo – Escola de informática com eletrônica 92


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Esquema elétrico do sensor de temperatura LM35 com o Arduino

Leiaut Carielo – Escola de informática com eletrônica 93


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

LM35 – Sensor de temperatura

Iremos agora montar o LM35 que é um sensor de temperatura analógico que suporta até
150 C°.

Passo 1: Monte o seguinte esquema na protoboard:

Coletor na porta analógica A1

Leiaut Carielo – Escola de informática com eletrônica 94


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte algoritmo na interface do Arduino:

Na linha onde temos: estamos


fazendo uma equivalência de 1023 para 500, pois o sensor de temperatura retorna um valor
entre 0 e 1023 e só suporta temperatura de 150 C° então quer dizer que quando o sensor
estiver retornando 1023 ele estará detectando 150 C° e assim por diante. Por esse motivo
essa equivalência foi necessária pois quando o sensor estiver retornando 512 logo a
temperatura será de 75 C°.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para que possamos ver a temperatura que o sensor está captando temos
que abrir o monitor serial clicando no botão:

Clique aqui

Se o circuito e o código estiverem corretos você verá a temperatura ambiente no serial


monitor.

Leiaut Carielo – Escola de informática com eletrônica 95


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Lm35 – com Leds

Iremos agora montar um circuito com um led azul e um led vermelho e um lm35, nesse
circuito o led azul irá acender quando a temperatura estiver baixa(indicando frio) e o led
vermelho irá acender quando a temperatura estiver alta(indicando calor).

Passo 1: Monte o seguinte esquema na protoboard:

Led azul na porta digital 3 – Resistor de 1k Ohms


Led vermelho na porta digital 2 – Resistor de 1k Ohms
LM35 na porta analógica 1

Leiaut Carielo – Escola de informática com eletrônica 96


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Agora digite o seguinte algoritmo na interface do Arduino:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o circuito e o código estiverem corretos você vera o led azul acender caso a
temperatura estiver abaixo de 25 C°, caso contrário o led vermelho acenderá,
lembrando que esse valor de temperatura pode ser alterado.

Leiaut Carielo – Escola de informática com eletrônica 97


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Potenciômetro

Iremos agora ver o funcionamento do potenciômetro no Arduino, assim também como a


leitura dos dados que ele fornece.

Passo 1: Monte o seguinte esquema na protoboard:

Pino coletor (meio) na entrada analógica 1


Os pinos laterais podem ser alternados entre 5V e GND.

Leiaut Carielo – Escola de informática com eletrônica 98


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte algoritmo na interface do Arduino.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para que possamos ver a o valor que o potenciômetro está enviando temos
que abrir o monitor serial clicando no botão:

Clique aqui

Se o código e o circuito estiverem corretos você verá o valor do potenciômetro no


monitor serial variando de acordo com o manuseio

Leiaut Carielo – Escola de informática com eletrônica 99


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Led - analogWrite()

Vamos acender o led usando o comando analogWrite(), que nos permite acender o led com
determinada intensidade, para isso ser possível é necessário que o led esteja em uma das
portas PWM do Arduino, o comando analogWrite recebe dois argumentos onde no primeiro
argumento a ser especificado é a porta onde está o led, no segundo argumento devemos
especificar um valor entre 0 e 255 que é a intensidade do sinal que será enviado para o led
na porta especificada, veja o exemplo a seguir:

Suponhamos que temos um led na porta 8 e queremos acender esse led com metade da
intensidade, o comando analogWrite() ficaria da seguinte maneira:

analogWrite(8, 127);

Onde 8 é a porta onde se encontra o led, lembrando que essa porta deve ser uma porta PWM
para que esse comando funcione, o valor 127 é a intensidade do sinal a ser enviado para a
porta. Iremos ver mais adiante na prática, siga os passos abaixo para isso.

Passo 1: Monte o seguinte esquema na protoboard:

Resistor de
1k Ohms
Led na porta
digital 3

Leiaut Carielo – Escola de informática com eletrônica 100


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte algoritmo na interface do Arduino:

Mude esse valor para alterar


a intensidade com que o led
acende, o valor deve ser
entre 0 e 255
Passo 3: Envie o algoritmo para a placa:

Clique aqui

Você pode usar um laço de programação se desejar fazer com que o led acenda
gradativamente automaticamente, experimento o seguinte código:

Todo o conteúdo teórico sobre laço de programação você pode encontrar no material
teórico.

Leiaut Carielo – Escola de informática com eletrônica 101


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Potenciômetro com Led

Iremos agora fazer com que o led aumente ou diminua a intensidade do brilho conforme
girarmos o potenciômetro.

Passo 1: Monte o seguinte esquema na protoboard:

Potenciômetro na porta analógica A1


Led na porta digital 3 – Resistor de 1k Ohms

Passo 2: Escreva o seguinte algoritmo na interface do Arduino:

Leiaut Carielo – Escola de informática com eletrônica 102


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Observe na linha estamos


fazendo uma equivalência de 1023 para 255 pois a escrita analógica só suporta
valores entre 0 e 255, como o potenciômetro retorna valores entre 0 e 1023
precisamos fazer essa equivalência, o valor (4.01176471) obtivemos pela divisão de
1023 por 255.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para que possamos ver a o valor que o potenciômetro está enviando temos
que abrir o monitor serial clicando no botão:

Clique aqui

Se o código e o circuito estiverem corretos você verá o led aumentar ou diminuir a


intensidade do brilho conforme girarmos o potenciômetro.

Leiaut Carielo – Escola de informática com eletrônica 103


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Exercícios

Questionário 1

Observe o código abaixo e responda as questões propostas.

1.Por que o sensor de temperatura, será denominado como INPUT?

Leiaut Carielo – Escola de informática com eletrônica 104


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

2.Explique, porquê teremos na variável temperatura a operação matemática:


(sensor_temp)*500/1023.

3.Para que o LED Azul desligue e o vermelho ligue com uma temperatura maior que 30º, o
que você deverá fazer?

4.Dentro da função do comando else que está se referindo ao condicional if?

5.Temos uma informação faltando dentro desse código, você identifica qual é?

Leiaut Carielo – Escola de informática com eletrônica 105


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Questionário 2

Observe o código abaixo e responda as questões propostas.

1.Realize através de um desenho, como será ligado o sensor lm35.

2.Qual a temperatura máxima de trabalho desse sensor? Como você pode identificar
através do código acima?

Leiaut Carielo – Escola de informática com eletrônica 106


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Questionário 3

Observe o código abaixo e responda as questões propostas.

1.Qual a função do potenciômetro?

Leiaut Carielo – Escola de informática com eletrônica 107


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

2.Realize através de um desenho como será ligado o seu potenciômetro, detalhando a


ligação de seus pinos.

3.Após declarar a variável x, temos a seguinte operação matemática:


analogRead(r)/4.01176471. Qual o seu significado? Como chegamos a esse valor?

4.Qual o valor máximo que os componentes analógicos retornam para o Arduino?

Leiaut Carielo – Escola de informática com eletrônica 108


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 3

Material prático

Leiaut Carielo – Escola de informática com eletrônica 109


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ABORDAGEM TEÓRICA
Nessa terceira aula prática do curso de Arduino, começaremos a estudar um resistor variável,
conhecido como LDR.

LDR – Light Dependent Resistor

A sigla LDR é a abreviação de Light Dependent Resistor (Resistor Dependente de luz), sua
funcionalidade está diretamente relacionada ao seu nome, ou seja, o LDR é um resistor que tem
sua resistência alterada de acordo com a luz que incide o mesmo.

O LDR é um componente analógico pois tem vários estados

O Arduino irá ler o estado do LDR e através do conversor A/D irá converter esses estados em
valores digitais indo de 0 a 1023 que poderemos ver através do Serial monitor.

Ligação básica de um LDR

Jumper vermelho na porta 5V do Arduino


Jumper preto na porta GND
Jumper azul na porta analógica A1

O jumper verde corresponde ao coletor, ou seja, esse terminal irá enviar o sinal analógico para o
Arduino, que por sua vez irá converter esses sinais analógicos em valores digitais.

Esquema elétrico do LDR com o Arduino


Leiaut Carielo – Escola de informática com eletrônica 110
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 111


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

LDR – Sensor de luz

Agora iremos montar o sensor de luz que é um foto-resistor, seu valor altera conforme a
intensidade da luz que ele recebe.

Passo 1: Monte o seguinte esquema na protoboard:

Coletor do LDR (jumper verde) na porta analógica A1 do Arduino.

Leiaut Carielo – Escola de informática com eletrônica 112


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Digite o seguinte algoritmo.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para que possamos ver a o valor que o LDR está enviando temos que abrir
o monitor serial clicando no botão:

Clique aqui

Se o circuito estiver e a programação estiverem corretos você poderá ver os valores


que o LDR retorna de acordo com a exposição da luz, teste com uma lanterna.

Leiaut Carielo – Escola de informática com eletrônica 113


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

LDR com Led

Agora iremos montar um circuito com um LDR e um Led onde o valor retornado pelo LDR
irá atuar sobre o Led intensificando ou enfraquecendo seu brilho.

Passo 1: Monte o seguinte circuito na protoboard.

Led na porta digital 11


LDR na porta analógica A1

Leiaut Carielo – Escola de informática com eletrônica 114


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte algoritmo.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o circuito estiver montado corretamente e o código também estiver correto, você


verá a intensidade do brilho do led diminuir ou aumentar conforma a exposição do
LDR a luz.

Leiaut Carielo – Escola de informática com eletrônica 115


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Buzzer

Passo 1: Monte o seguinte circuito:

Buzzer na porta digital 4

Leiaut Carielo – Escola de informática com eletrônica 116


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte código

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o código e o circuito estiverem corretos você ouvirá o Buzzer apitar por 2 segundos.

Leiaut Carielo – Escola de informática com eletrônica 117


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Buzzer com Led e PushButton

Agora iremos montar um circuito onde o Buzzer irá atuar junto com os leds, alternando
entre apitar o buzzer e acender o led.

Passo 1: monte o seguinte esquema:

Porta digital 8 Porta digital 7

Observe que um led


juntamente com o
buzzer não estão
ligados ao Arduino,
mas ao Push button.

Push Button na porta digital 8


Led na porta digital 7

Leiaut Carielo – Escola de informática com eletrônica 118


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Digite o seguinte algoritmo:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Teste seu projeto pressionando o push button, o circuito deverá alterar a atuação
entre os led e o buzzer.

Leiaut Carielo – Escola de informática com eletrônica 119


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Exercícios

Questionário 1

Observe o código abaixo e responda as questões propostas.

1.Qual a função do LDR neste código?

2.O LDR é um tipo de resistor?

Leiaut Carielo – Escola de informática com eletrônica 120


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

3.Realize a representação da simbologia do LDR.

4.Qual a finalidade da variável luz, dentro do void loop?

Questionário 2

Observe o código abaixo e responda

1.Qual a finalidade do programa que acabamos de realizar?

Leiaut Carielo – Escola de informática com eletrônica 121


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

2. Observe o código abaixo, informe se o mesmo irá rodar ou não. Justifique sua resposta.

Leiaut Carielo – Escola de informática com eletrônica 122


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 4

Material prático

Leiaut Carielo – Escola de informática com eletrônica 123


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ABORDAGEM TEÓRICA

Nessa quarta aula prática do curso de Arduino, começaremos a estudar o reed switch, conhecido
como reed magnético que é uma chave cujo acionamento é através do magnetismo.

Reed Switch

Como o próprio nome informa, o reed switch (chave) será um tipo de interruptor que é acionada
através do magnetismo (imã), veja abaixo um modelo desse componente:

Observe que temos uma ampola com duas hastes de metal que por padrão estão normalmente
abertas - NA

Quando aproximamos um imã da ampola os contatos se fecham permitindo a passagem de


corrente e fechando o circuito, no momento em que o circuito é fechado um sinal é enviado
para a porta digital do Arduino que faz a conexão com o reed switch.

Quando o circuito está fechado o Arduino recebe o valor 1.

Quanto o circuito está aberto o Arduino recebe o valor 0.

Switch Button

O switch button ou botão chave é um botão que pode ser acionado ou não mantendo o
estando em que foi deixado: Uma vez pressionado o botão mantém esse estado até que você
pressione novamente para alterar o estado do botão deixando-o solto. Veja um exemplo do
botão na imagem abaixo:

Leiaut Carielo – Escola de informática com eletrônica 124


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Esquema elétrico do Reed Switch com o Arduino

Leiaut Carielo – Escola de informática com eletrônica 125


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Reed Switch

Iremos agora ver o funcionamento do Reed Switch no monitor serial.

Passo 1: Monte o seguinte esquema na protoboard:

Reed Switch (jumper azul) na porta digital 3 do Arduino – Resistor de 10k Ohms

Leiaut Carielo – Escola de informática com eletrônica 126


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte código na interface do Arduino:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para ver o estado do Reed Switch abra o monitor serial clicando no botão:

Clique aqui

Se o circuito estiver e a programação estiverem corretos você verá o valor no serial


monitor alternar entre 0 e 1 ao aproximar o imã do Reed Switch.

Leiaut Carielo – Escola de informática com eletrônica 127


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Reed Switch com Led

Agora iremos acionar um led quando o Reed Switch for ativado.

Passo 1: Monte o seguinte circuito na protoboard.

Reed Switch na porta digital 3 – Resistor de 10k Ohms


Led na porta digital 4 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 128


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte algoritmo.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o circuito estiver e a programação estiverem corretos você verá o Led acender


aproximar o imã do Reed Switch.

Leiaut Carielo – Escola de informática com eletrônica 129


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Reed Switch Com Led E Push Button

Agora iremos montar um circuito onde o push Button funcionará em conjunto com o Reed
Switch, onde o led irá acender caso o Reed Switch e o push button estiverem ambos
ativados.

Passo 1: Monte o seguinte circuito:

Push button na porta digital 5 – Resistor de 10k ohms


Led na porta digital 4 – Resistor de 1k ohms
Reed Switch na porta digital 3 – Resistor de 10k ohms

Leiaut Carielo – Escola de informática com eletrônica 130


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Digite o seguinte código:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para que possamos ver o estado do Reed Switch e do Push Button temos
que abrir o monitor serial clicando no botão monitor serial:

Clique aqui

Se o circuito estiver e a programação estiverem corretos você verá o Led acender


aproximar o imã do Reed Switch com o push button ativo.

Leiaut Carielo – Escola de informática com eletrônica 131


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Reed Switch com 4 Leds e Push Button

Iremos agora montar um circuito que irá alternar entres os leds com apenas um push
Button.

Passo 1: Monte o seguinte circuito na protoboard:

Led (jumper verde) na porta digital 8 – Resistor de 1k Ohms


Led (jumper branco) na porta digital 9 – Resistor de 1k Ohms
Led (jumper laranja) na porta digital 10 – Resistor de 1k Ohms
Led (jumper azul claro) na porta digital 11 – Resistor de 1k Ohms
Reed Switch na porta digital 2 – Resistor de 10k Ohms

Leiaut Carielo – Escola de informática com eletrônica 132


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Push button na porta digital 5 – Resistor de 10k Ohms

Passo 2: Escreva o seguinte algoritmo:

Leiaut Carielo – Escola de informática com eletrônica 133


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Observe aqui que usamos a estrutura de seleção Switch, para saber mais da sintaxe
dessa estrutura consulte a apostila teórica.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Leiaut Carielo – Escola de informática com eletrônica 134


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 4: Agora abra o monitor serial para ver o status do botão e do Reed Switch:

Clique aqui

Se o circuito estiver e a programação estiverem corretos você verá cada led acender
individualmente se o Reed switch estiver ativado e o push button for pressionado.

Leiaut Carielo – Escola de informática com eletrônica 135


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 5

Material prático

Leiaut Carielo – Escola de informática com eletrônica 136


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ABORDAGEM TEÓRICA
Nessa quinta aula prática do curso de Arduino, começaremos a estudar o sensor ultrassônico e
realizaremos diversas montagens de circuitos com esse componente.

Sensor Ultrassônico

O sensor ultrassônico ou HCSR-04 é um sensor que pode medir distâncias de 2 a 400 centímetros
sem a necessidade de contato físico do componente com a superfície, a medida é aferida através
de ondas, onde um pulso (em nível alto) enviado a velocidade de 340m/s bate num determinado
objeto e é refletido de volta para o sensor, que capta o tempo que o pulso demorou para
percorrer todo o caminho até retornar para o sensor. Observe a imagem ilustrando o
funcionamento do sensor:

Leiaut Carielo – Escola de informática com eletrônica 137


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

O tempo é obtido em microssegundos, ou seja, 0.000001 segundo seria equivalente a uma


unidade nessa medida.

Para medir a distância a partir do tempo que o sinal levou para percorrer todo o caminho a
velocidade de 340m/s faremos um calculo da seguinte forma: (tempo do sinal * velocidade
(340m/s)) / 2.

O tempo do sinal iremos converter em segundos, ou seja, se o sensor captou 1000


microssegundos representaremos com o valor 0,001 segundo, já a distância queremos em
centímetros, então devemos converter a unidade de medida m/s para cm/s para isso basta
multiplicar seu valor por 100, ou seja nossa medida de velocidade agora fica 34000cm/s.

Feito isso basta fazer as contas: (0,001s*34000cm/s) /2 à 17cm

Isso quer dizer que caso o tempo de retorno do sinal seja de 1000 microssegundos teremos a
distância de 17cm.

Também podemos calcular a distância das seguintes formas: (tempo do sinal / 58.8) ou ainda
(tempo do sinal /29.4 /2), se fizermos os cálculos com o tempo que obtivemos anteriormente,
teremos as seguintes formas de calcular:

i. 1000 microssegundos / 58.8 = 17cm


ii. 1000 microssegundos / 29.4 / 2 = 17cm

Observe que ambos os cálculos obtiveram o mesmo resultado, porém de forma mais simplificada.

A divisão por 2 é devido a distância percorrida pelo sinal ser o dobro da distância do objeto para
o sensor, pois o sinal sai do sensor percorre uma distância, bate no objeto e percorre uma mesma
distância voltando para o sensor, ou seja, a distância do objeto equivale a metade da distância
percorrida.

Veja a seguir o embasamento teórico da fórmula para se obter a distância do sensor


ultrassônico

Leiaut Carielo – Escola de informática com eletrônica 138


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

EMBASAMENTO TEÓRICO – SENSOR ULTRASSÔNICO

O princípio de funcionamento dos sensores ultrassônicos está baseado na emissão de uma onda
sonora de alta frequência, e na medição do tempo levado para a recepção do eco produzido
quando esta onda se choca com um objeto capaz de refletir o som. Veremos agora que podemos
tanto usar a equação da física de movimento uniforme, relacionando a velocidade média com o
tempo e distância percorrida para sabermos a distância em que o sensor ultrassônico está do
objeto, quanto usar a equação fornecida pela folha de dados do sensor de distância, uma vez que
uma é proveniente da outra.

Faremos um exemplo com as duas situações para que o aluno perceba que a resposta é
similar e, portanto, as duas podem ser usadas. Na apostila, foram explicados os dois métodos,
mas nos códigos foi utilizado o método da folha de dados do sensor, já que é mais simples.

Relembrando os dois métodos:

1º Método:

∆𝑠
𝑣=
∆𝑡

Isolando ∆s, temos:

∆s=v x ∆t

Agora substituindo ∆s por Sf – So (espaço final menos espaço inicial):

Sf – So= v x ∆t

Passando So para o outro lado da equação e invertendo o sinal:

Sf = So+ v x ∆t

Como o espaço inicial e o tempo inicial são 0 e o espaço final é 2S, pois o som emitido pelo sensor
incide sobre o objeto e volta, temos:

2S = v x t

Isolando S:

𝑣𝑥𝑡
𝑆 =
2
*
Passando v para o denominador como :
+

𝑡
𝑆 =
1
2𝑥 𝑣

Leiaut Carielo – Escola de informática com eletrônica 139


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Sabendo que Vsom = 340 m/s = 34000 cm/s e substituindo na equação encontrada:

4 4
𝑆 = : ≅ 5.5555@AA
89
;<===

Atenção: Perceba que você precisa fornecer o tempo em segundos, pois a velocidade está
em cm/s e, portanto, o inverso da velocidade (1/v) está em s/cm. Assim, a resposta será dada em
cm (centímetros).

2º método:
48
𝑆 ≅ @A.A

Onde t2 é dado em microssegundos.

Note que a equação do 2º método é muito semelhante à do 1º método. A diferença está


exatamente no fato de que uma é levando em consideração ao tempo em segundos e a outra em
microssegundos.

Provaremos agora a equação do 2º método:

Para provar a equação do 2º método, temos que utilizar a equação do 1º método.

4
𝑆 ≅ 5.5555@AA

Em que t é dado em segundos.

O segundo método trata de uma equação em que o tempo é dado em microssegundos.


Então, é preciso fazer algumas adaptações na equação.

Como 2x(1/v) é de 0.0000588 s/cm e precisamos transformá-la para μs/cm, devemos


multiplicar por 10.

Como o tempo no primeiro método é em segundos e pretende-se em 𝜇𝑠 , já que o


denominador da equação está em 𝜇𝑠/𝑐𝑚 , a fim de se obter uma distância percorrida em
centímetros (cm), deve-se fazer o seguinte cálculo:

t à 103. 𝜇𝑠

t2 à 1 𝜇𝑠
4
t2 = *567= 10. 𝑡, onde t é dado em segundos

Assim, temos:
Leiaut Carielo – Escola de informática com eletrônica 140
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

4 *57 4
𝑆 ≅5.5555@AA ≅ @A.A

Onde o tempo t é dado em segundos. Substituindo t2 = 10. 𝑡, temos:

*57 4 48
𝑆 ≅ @A.A ≅@A.A

Onde t2 é dado em microssegundos.

Resumo: De forma simplificada, se temos a equação do primeiro método em mãos, isto


4
é, 𝑆 ≅5.5555@AA, podemos multiplicar tanto o numerador quando o denominador por 10. e não
4 *57 4 48
alteraremos o resultado. Ao fazer isso, teremos 𝑆 ≅ ≅ ≅ , em que t é dado em
5.5555@AA @A.A @A.A
segundos e t2 em microssegundos.

Exemplo

Faremos agora um exemplo em que t = 0,001 s.

Resolvendo pelo 1º método:

4
𝑆 ≅ 5.5555@AA

Em que o tempo t é dado em segundos.

5.55*
𝑆 ≅5.5555@AA

S≅17 cm

Resolvendo pelo 2º método:


4
𝑆 ≅ @A.A

Em que o tempo t é dado em microssegundos.

Como t = 0,001 s = 1000 μs:

*555
𝑆 ≅ @A,A ≅ 𝟏𝟕 𝒄𝒎

S≅17 cm

Leiaut Carielo – Escola de informática com eletrônica 141


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Método pulseIn()

BREVE ABORDAGEM DE UM MÉTODO QUE IREMOS UTILIZAR MUITO PARA OBTERMOS A DURAÇÃO DO PULSO ENVIADO PELO
SENSOR ULTRASSÔNICO.

Lê um pulso (tanto HIGH como LOW) em um pino. Por exemplo, se valor for HIGH, pulseIn() espera
que o pino vá para HIGH, inicia a cronometragem, e então espera que o pino vá para LOW e para
a cronometragem. Retorna a duração do pulso em microssegundos. Desiste e retorna 0 se
nenhum pulso iniciar dentro de um tempo especificado.

O tempo desta função foi determinado empiricamente e provavelmente dará erro em pulsos
longos. Funciona com pulsos entre 10 microssegundos e 3 minutos.

Sintaxe do método:
pulseIn(pino, valor)
pulseIn(pino, valor, tempo)

Parâmetros:
pino: O número do pino no qual você deseja ler o pulso. (int)
valor: Tipo de pulso a ler: tanto HIGH como LOW. (int)
tempo (opcional): O valor de tempo em microssegundos a esperar para que o pulso comece; o
padrão é um segundo (unsigned long)

Retorna:
A duração do pulso (em microssegundos) ou 0 se nenhum pulso iniciar antes do tempo
especificado (unsigned long)

Nesse código, a variável duration recebe o tempo do eco do sinal, em microssegundos, obtido
pela função pulseIn(). Essa função retorna à duração do pulso de eco durante nível alto. A variável
duration, portanto, armazena o valor em microssegundos do tempo do sinal.

Depois, para encontrar a distância basta dividir o tempo do eco, que a função pulseIn() nos
retorna, por 58.8.

Leiaut Carielo – Escola de informática com eletrônica 142


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

HCSR – 04 – Sensor Ultrassônico (Distancia)

Agora usaremos o Sensor ultrassônico para pedir distancias.

Passo 1: Monte o seguinte circuito na protoboard:

Pino Trigger na porta digital 7


Pino Echo na porta digital 6

Leiaut Carielo – Escola de informática com eletrônica 143


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte código:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para ver a distância que o sensor está detectando abra o monitor serial
clicando no botão:

Clique aqui

Se o circuito estiver e a programação estiverem corretos você verá a distância em


centímetros no monitor serial, lembrando que o sensor não detecta grandes
distâncias (limite de 4 metros).

Leiaut Carielo – Escola de informática com eletrônica 144


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Sensor Ultrassônico com Leds

Agora iremos montar o sensor ultrassônico que irá acionar os leds de acordo com a
variação da distância.

Passo 1: Monte o seguinte circuito na protoboard:

Pino Trigger na porta digital 7


Pino Echo na porta digital 6
Led verde na porta digital 9 – Resistor de 1k Ohms
Led amarelo na porta digital 10 – Resistor de 1k Ohms
Led vermelho na porta digital 11 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 145


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte algoritmo:

Leiaut Carielo – Escola de informática com eletrônica 146


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para ver a distância que o sensor está detectando abra o monitor serial
clicando no botão:

Clique aqui

Se o circuito estiver e a programação estiverem corretos você verá a distância em


centímetros no monitor serial e os leds serão acionados conforme a distância que o
sensor está lendo.

Leiaut Carielo – Escola de informática com eletrônica 147


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Sensor Ultrassônico com Buzzer

Montaremos agora um circuito que irá se comportar semelhante ao sensor de ré do carro.

Passo 1: Monte o seguinte esquema na protoboard:

Pino Trigger na porta digital 7


Pino Echo na porta digital 6
Buzzer na porta digital 10
Leiaut Carielo – Escola de informática com eletrônica 148
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte algoritmo:

Leiaut Carielo – Escola de informática com eletrônica 149


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para ver a distância que o sensor está detectando abra o monitor serial
clicando no botão:

Clique aqui

Se o circuito estiver e a programação estiverem corretos você irá escutar o buzzer


apitar cada vez mais rápido ao aproximar algum objeto do Sensor ultrassônico.

Leiaut Carielo – Escola de informática com eletrônica 150


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Exercício

I. Monte um circuito com o HCSR-04 com 2 leds um vermelho e um verde, no circuito


o led verde deverá acender quando a distância equivalente a 5 dedos for detectada
pelo sensor ultrassônico, caso a distância detectada for equivalente a 2 dedos ou
menos o led vermelho deverá acender, caso a distância for menor que 5 dedos e
maior que 2 dedos os dois leds deverão ficar apagados.

II. Monte um circuito com apenas 1 led e o sensor ultrassônico, no circuito o led deve
acender com intensidade proporcional a distância detectada pelo sensor
considerando a distância máxima de 40 cm, quando a distância for de 40 cm o led
deverá acender com intensidade total.

Leiaut Carielo – Escola de informática com eletrônica 151


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 6

Material prático

Leiaut Carielo – Escola de informática com eletrônica 152


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

ABORDAGEM TEÓRICA

Nessa aula veremos como usar um led com propriedades diferentes, o led RGB.

LED RGB

Imagem: Maker Project RGB LED Animated Pixel Box

O Led RGB é um componente composto por três leds, cada led com uma cor única, a saber:
vermelho, verde e azul. Cada led pode ser acionado individualmente ou em conjunto, cada led
pode ser acionado em 256 intensidades diferentes, isso permite ao led RGB uma diversidade de
mais de 16 milhões de cores possíveis, para ser mais exato, 256³ de cores que podem ser geradas
pelo led RGB.

Existem dois tipos de led RGB, Ânodo comum e Cátodo comum, veja abaixo o exemplo:

Imagem: Blog como fazer as coisas

Observe que no led RGB ânodo comum o terminal maior corresponde ao terminal de
alimentação (5V), já no tipo Cátodo comum o terminal maior corresponde ao aterramento (GND),

Leiaut Carielo – Escola de informática com eletrônica 153


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

como saber quando um led RGB é ânodo comum ou cátodo comum? Veja a seguir o teste para
identificar se um Led RGB ânodo comum e cátodo comum.

Para identificar se um Led RGB é ânodo comum ou cátodo comum, faça a seguinte montagem
na protoboard:

Resistor de 1k Ohms

Em seguida conecte o Arduino ao computador, se o led acender é do tipo ânodo comum, caso
contrário é do tipo cátodo comum.

Isso diferencia no modo como programamos o código, o led RGB necessita de alimentação e terra
como todos os outros leds, porém temos 4 terminais, como fazer a ligação?

Leiaut Carielo – Escola de informática com eletrônica 154


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Como já vimos anteriormente o led RGB ânodo comum recebe alimentação no terminal maior, e
o led RGB cátodo comum recebe aterramento no terminal maior, os demais terminais que são
referentes as cores serão ligados nas portas digitais, cada um em uma porta digital diferente,
portanto os terminais referentes as cores terão funções diferenciadas nos dois tipos de led RGB,
no tipo ânodo comum os terminais referentes as cores que serão ligados nas portas digitais terão
a função de aterramento, pois o terminal maior tem a função de alimentação, portanto para
acionar alguma cor no led RGB enviaremos o sinal de LOW, ou seja se por exemplo o terminal
referente a cor vermelha está ligado na porta digital 2, o comando para acionar a cor seria:
portanto a configuração para manusear o led RGB tipo ânodo comum é a
seguinte:

Acionar algum terminal à


Desligar algum terminal à

Já no led RGB cátodo comum a configuração é contrária, pois como o terminal maior tem a função
de terra os demais terminais que são referentes as cores terão a função de alimentação, portanto
a configuração para manusear o led RGB tipo cátodo comum é a seguinte:

Acionar algum terminal à


Desligar algum terminal à

Observe que a configuração para manusear um led RGB do tipo cátodo comum é a mesma que
qualquer outro led, somente nos leds RGB do tipo ânodo comum a configuração é contrária.

Cada terminal pode ser acionado em 256 intensidades diferentes através do comando
analogWrite lembrando que para acionar o led nessa função o terminal do mesmo deve estar em
uma porta do Arduino com função PWM, portanto podemos acionar um único terminal em 256
intensidades diferentes, se tivermos por exemplo o terminal referente a cor azul conectado a
porta 3 no Arduino Mega2560 podemos usar o comando analogWrite da seguinte maneira:

Onde x deve ser substituído por um valor de 0 a 255, onde 0 representa a intensidade mínima e
255 a intensidade máxima no led RGB do tipo cátodo comum, no led RGB tipo ânodo comum
255 representa intensidade mínima e 0 representa intensidade máxima. Podemos fazer isso em
qualquer terminal referente a uma cor simultaneamente a qualquer outro terminal, por exemplo:
para acender o led RGB, tipo ânodo comum, na cor cyano, supondo que os terminais referentes
as cores vermelha, verde e azul estão respectivamente nas portas 2, 3 e 4 do Arduino Mega2560,
usaríamos os seguintes comandos:

Logo você será capaz de produzir milhões de cores com esse led. Agora vamos a prática!

Leiaut Carielo – Escola de informática com eletrônica 155


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Led RGB

Iremos agora montar o Led RGB e alterar suas cores no código.

Passo 1: Monte o seguinte esquema na protoboard:

Jumper vermelho na porta digital 11 – Resistor de 1k Ohms


Jumper verde na porta digital 10 – Resistor de 1k Ohms
Jumper azul na porta digital 9 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 156


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Esquema do Led RGB tipo Ânodo Comum

Ânodo Comum

Passo 2: Agora escreva o seguinte algoritmo:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o circuito e a programação estiverem corretos o Led RGB acenderá azul.

Leiaut Carielo – Escola de informática com eletrônica 157


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Acender outras cores no Led RGB

Para acender outras cores ainda no mesmo circuito que montamos altere dentro do loop o
comando digitalWrite deixando-o da seguinte maneira:

Agora envie o seu código para a placa e confira o resultado.

Se desejar acender mais de uma cor ao mesmo tempo basta dar o comando digitalWrite para
as cores desejada, Exemplo:

Irá acender a cor azul e vermelho ao mesmo tempo no Led RGB.

Leiaut Carielo – Escola de informática com eletrônica 158


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Led RGB com analogWrite()

Iremos agora fazer com que o Led RGB apresente diferentes variações de cores
misturando as cores em intensidades diferentes.

Passo 1: Monte o mesmo esquema exemplo anterior:

Jumper vermelho na porta digital 11 – Resistor de 1k Ohms


Jumper verde na porta digital 10 – Resistor de 1k Ohms
Jumper azul na porta digital 9 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 159


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Para acender o led RGB usando o comando analogWrite o terminal referente a cor
que deseja deverá estar na porta ~PWM do Arduino. No nosso caso todos os terminais
já estão nas portas ~PWM.

Passo 2: Agora escreva o seguinte algoritmo:

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o circuito estiver e a programação o Led RGB acenderá azul intensificando a cor a


cada segundo, e em seguida apagando.

Leiaut Carielo – Escola de informática com eletrônica 160


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Led RGB – alterar cores (monitor serial)

Iremos agora usar o monitor serial para alterar as cores do led RGB em tempo real.

Passo 1: O circuito que iremos usar é o mesmo do exemplo anterior:

Jumper vermelho na porta digital 11 – Resistor de 1k Ohms


Jumper verde na porta digital 10 – Resistor de 1k Ohms
Jumper azul na porta digital 9 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 161


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Agora digite o seguinte algoritmo:

Leiaut Carielo – Escola de informática com eletrônica 162


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para poder alterar as cores abra o monitor serial clicando no botão:

Clique aqui

Passo 5: Agora digite no serial monitor a letra g que corresponde a cor verde:

Se todo o circuito e a programação estiver correta você verá a cor do led RGB mudar
ao digitar as letras r, g ou b.

Leiaut Carielo – Escola de informática com eletrônica 163


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Led RGB – alterar cores (Potenciômetro)

Iremos agora usar três potenciômetros para alterar as cores do led RGB.

Passo 1: Monte o seguinte esquema:

Potenciômetro (jumper vermelho) na porta analógica A1


Potenciômetro (jumper verde) na porta analógica A2
Potenciômetro (jumper azul) na porta analógica A3
Led RGB mesmo esquema dos exemplos anteriores
Terminal vermelho do RGB à porta digital 11 – Resistor de 1k Ohms
Terminal verde do RGB à porta digital 10 – Resistor de 1k Ohms
Terminal azul do RGB à porta digital 9 – Resistor de 1k Ohms
Leiaut Carielo – Escola de informática com eletrônica 164
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Digite o seguinte código:

Leiaut Carielo – Escola de informática com eletrônica 165


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora abra o monitor serial clicando no botão:

Clique aqui

Gire os potenciômetros e confira se as cores se misturam no led RGB.

Exercício

I. Agora monte um circuito com 3 botões onde cada botão irá acender uma cor
diferente do led RGB.

Leiaut Carielo – Escola de informática com eletrônica 166


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 7

Material prático

Leiaut Carielo – Escola de informática com eletrônica 167


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Teclado matricial 4x4 - Abordagem Teórica

Nessa sétima aula de Arduino iremos aprender a usar o teclado matricial 4x4, que pode ser
usado para manusear sistemas de alarme e de automação, veja abaixo um modelo do teclado
que iremos usar:

Este teclado é formado por uma matriz de 4 linhas por 4 colunas, permitindo assim uma
combinação de 16 teclas, observe:

Circuito da matriz

1 4 5 8
Imagem: CircuitsToday.

Observe que temos no total 8 pinos, 4 pinos representando as linhas e 4 pinos representando as
colunas, se colocarmos as imagens sobrepostas teremos a formação do teclado.

Leiaut Carielo – Escola de informática com eletrônica 168


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Observe abaixo:

Veja que as teclas são uma combinação de trilhas, ao


ser pressionado um botão, essas trilhas entram em
contato, enviando o sinal digital para a porta do
Arduino, que por sua vez irá interpretar o sinal e
executar alguma ação (se programada a ação).

Para esse componente não usaremos uma biblioteca, apesar de ter algumas que podem até
facilitar nosso trabalho, iremos programar tecla por tecla individual.

Os pinos de 1 a 4 usaremos como atuadores, ou seja, saída (OUTPUT)

Através desses pinos enviaremos um sinal que irá percorrer toda a trilha dos quatro pinos

Leiaut Carielo – Escola de informática com eletrônica 169


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Já os quatro pinos de 5 a 8 usaremos como sensores (INPUT)

Esses pinos irão detectar quando for pressionado um botão

Quando um botão é pressionado, por exemplo o botão 7, a trilha referente ao terceiro pino faz
contato com a trilha referente ao oitavo pino, observe:

Siga as trilhas e
observe que pinos
fazem contato

Agora que vimos como funciona o teclado matricial, vamos a prática.

Leiaut Carielo – Escola de informática com eletrônica 170


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Teclado Matricial

Agora iremos montar o teclado matricial e configurar para que no serial monitor vejamos
as linhas e colunas que estão sendo pressionadas.

Passo 1: Monte o seguinte esquema na protoboard.

Resistor de 220 ohms

Leiaut Carielo – Escola de informática com eletrônica 171


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Agora digite o seguinte código:

Leiaut Carielo – Escola de informática com eletrônica 172


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Agora para poder alterar as cores abra o monitor serial clicando no botão:

Clique aqui

Se a montagem do teclado e o código estiverem corretos você vera no serial monitor


as linhas e colunas sendo informadas conforme você digita no teclado matricial.

Leiaut Carielo – Escola de informática com eletrônica 173


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Teclado Matricial - acionando componentes

Agora iremos acionar componentes a partir do teclado matricial.

Passo 1: Monte o mesmo esquema do teclado matricial do exemplo anterior, porém


adicione dois leds:

Resistor de 220 ohms para o teclado


Led Vermelho na porta 12 – Resistor de 1k Ohms
Led Azul na porta 13 – Resistor de 1k Ohms

Leiaut Carielo – Escola de informática com eletrônica 174


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Agora digite o seguinte código (você pode reaproveitar o código anterior,
altere apenas o que está entre as chaves em vermelho, e adicione o que falta):

Leiaut Carielo – Escola de informática com eletrônica 175


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 176


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Envie o algoritmo para a placa:

Clique aqui

Passo 4: Abra o Monitor Serial:

Clique aqui

Exercício

1. Faca com que o monitor serial imprima os números e letras que você pressiona no
teclado matricial em vez de imprimir linhas e colunas. EX:

Caso a tecla 3 do teclado matricial seja pressionada, deverá aparecer no monitor serial o
número 3, caso a tecla A do teclado matricial seja pressionada, deverá aparecer a letra A
no monitor serial.

Este exercício deverá ser completado antes de partir para o próximo exercício.

Leiaut Carielo – Escola de informática com eletrônica 177


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 8

Material prático

Leiaut Carielo – Escola de informática com eletrônica 178


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Controle Infravermelho - Abordagem Teórica

Que tal controlar o Arduino pelo controle remoto? Nessa aula prática de Arduino veremos o
Módulo IR, que é um módulo do sensor Infravermelho e serve para receber qualquer sinal
infravermelho de praticamente qualquer controle remoto, porém usaremos um controle remoto
genérico para essa aula.

Afinal qual o propósito de controlar o Arduino pelo controle remoto?

Com o controle remoto você poderá: Acionar leds, buzzers e controlar qualquer outro atuador
que esteja no Arduino, o mesmo proposito que tem o controle da TV também se aplica ao
Arduino.

Modulo receptor IR:

Este é o componente responsável por receber o sinal infravermelho e mandar para o Arduino. O
sinal recebido é um sinal digital, por padrão o sinal é convertido em um número decimal, porém
esse número é bastante extenso, por isso convertemos essa numeração para hexadecimal que
também e mais fácil de lembrar, tornando a programação menos complicada.

Como funciona?

Sinal transmitido Sinal interpretado

Quando um botão Receptor capta o sinal No Arduino programamos uma


é pressionado e envia para o Arduino ação para o sinal recebido

Leiaut Carielo – Escola de informática com eletrônica 179


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Pinagem

Observe que em evidência nos círculos amarelos está a


descrição dos pinos referentes a GND (terra) e S (que é o
pino do Sinal)

GND Porta digital

5V

/ Código

Usaremos a biblioteca IRremote-master para programar esse módulo infravermelho, abaixo


você verá uma explicação básica do algoritmo para configuração desse módulo:

Antes de tudo devemos importar a biblioteca:

Depois de importar a biblioteca devemos declarar a variável com o valor da porta onde
está conectado o pino referente ao sinal digital.

Variável RECV_PIN do tipo int de valor = 7

Criaremos outra variável para armazenar o valor obtido através do sinal Infravermelho.

Criar um objeto da classe IRrecv passando como argumento a variável referente ao pino
do sinal.

Classe: IRrecv;
Objeto: irrecv;
Argumento: RECV_PIN;

Depois precisamos criar outro objeto da classe decode_results

Classe: decode_results;
Objeto: results;

Leiaut Carielo – Escola de informática com eletrônica 180


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Agora devemos iniciar o objeto:

Agora no loop() devemos verificar se algum sinal foi detectado

Dentro do corpo da estrutura condicional devemos especificar o que o Arduino irá fazer
caso receber algum sinal

Nesse caso estamos apenas convertendo o valor que foi recebido em hexadecimal e
imprimindo o mesmo no Serial monitor.

Agora iremos armazenar o valor enviado pelo sinal na variável armazenavalor.

Objeto results chamando a propriedade value guarda o código do sinal recebido

Podemos comparar o código captado para programar uma determinada ação em um


botão, observe abaixa uma das formas de se programar um botão, exemplo do botão 1:

Dentro do corpo do condicional podemos programar praticamente qualquer algoritmo.

Depois de tudo devemos chamar o método resume() que irá permitir a continuidade de
leituras posteriores.

Esse comando deverá estar dentro da estrutura condicional que verifica se algum sinal

foi detectado à

Por ultimo concluímos fechando as chaves


A primeira chave que fechamos é referente a estrutura condicional
A segunda chave é referente ao loop()

Esse é o algoritmo necessário para o correto funcionamento do módulo infravermelho, lembre-


se na programação nada é estático, portanto todo algoritmo que existe pode ser construído de
outras formas e até melhores, porém para este curso usaremos esse algoritmo.

Agora que vimos a parte essencial do algoritmo, vamos a prática!

Leiaut Carielo – Escola de informática com eletrônica 181


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Controle remoto

Agora iremos montar o controle IR que tem como sensor um infravermelho. Para esse
projeto iremos precisar de uma biblioteca de códigos extra pois a mesma contém códigos
automatizados para facilitar nosso trabalho.

Passo 1: Na busca do Google digite “Arduino IRremote” sem as aspas.

Procure pelo link referente ao GitHub.

Passo 2: Em seguida baixe o arquivo compactado clicando em “Clone or download” depois


em “download zip”.

Clique aqui para baixar

Assim que baixar o arquivo, descompacte-o e renomeie a pasta interna para


“IRremote-master”, sem as aspas.
Leiaut Carielo – Escola de informática com eletrônica 182
Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora abra a interface do Arduino e no menu Sketch escolha a opção incluir na
biblioteca > Adicionar biblioteca.zip

Clique aqui para adicionar


a biblioteca

Navegue até onde se encontra


o arquivo e selecionando-o
clique em escolher

Leiaut Carielo – Escola de informática com eletrônica 183


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Você verá a mensagem “Biblioteca adicionada às suas bibliotecas”.

Agora que temos a biblioteca de que precisamos vamos a prática.

Passo 1: Monte o seguinte circuito com o sensor IR.

Pino central na porta VCC (5V)


Pino negativo (esquerda) na porta GND
Pino coletor (direita) na porta digital 11

Leiaut Carielo – Escola de informática com eletrônica 184


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Escreva o seguinte código:

Importação da biblioteca

Essa biblioteca que importamos consiste de códigos necessários para que possamos
manipular o componente que iremos usar.

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Leiaut Carielo – Escola de informática com eletrônica 185


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 4: Agora para ver o estado do Reed Switch abra o monitor serial clicando no botão:

Clique aqui

Se o circuito e a programação estiverem corretos, e a biblioteca devidamente


renomeada e importada, você verá um valor em Hexadecimal no monitor serial
quando pressionar algum botão do controle remoto.

Observe os valores, cada um deles é referente a um botão, os que estão mostrando


apenas FFFFFFFF são do mesmo botão que está sendo pressionado, ou seja você verá
esse valor ao ser pressionado o mesmo botão.

Leiaut Carielo – Escola de informática com eletrônica 186


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Controle IR - acionando componentes

Agora iremos usar o controle infravermelho para acionar componentes do Arduino

Passo 1: Monte o seguinte esquema na protoboard:

Sensor IR(infravermelho) na porta digital 7


Terminal vermelho do led RGB na porta digital 2 – Resistor de 1k Ohms
Terminal verde do led RGB na porta digital 3 – Resistor de 1k Ohms
Terminal azul do led RGB na porta digital 4 – Resistor de 1k Ohms

Lembrando que neste exemplo estamos usando o led RGB ânodo comum.

Leiaut Carielo – Escola de informática com eletrônica 187


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 2: Digite o seguinte algoritmo de programação:

Leiaut Carielo – Escola de informática com eletrônica 188


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 189


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 190


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o código e o algoritmo estiverem certos os botões 1, 2 e 3 irão alternar


respectivamente entre as cores vermelho, verde e azul. E os botões cima e baixo irão
incrementar e decrementar a intensidade da cor selecionada.

Botão 1 à Escolhe cor vermelha


Botão 2 à Escolhe cor verde
Botão 3 à Escolhe cor azul
Seta para cima à Incrementa brilho
Seta para baixo à Decrementa brilho

Leiaut Carielo – Escola de informática com eletrônica 191


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Exercício

1. Faca um circuito com o controle IR e 1 led, onde os botões deverão estar


configurados para manipular o led da seguinte maneira:

Botão 1 à Acender led suavemente e apagar suavemente


Botão 2 à Acender led suavemente e apagar suavemente e piscar três vezes

Botão 3 à Piscar o led com uma frequência baixa e ir aumentando a frequência depois
diminuir e repetir

Leiaut Carielo – Escola de informática com eletrônica 192


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 9

Material prático

Leiaut Carielo – Escola de informática com eletrônica 193


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Tela LCD - Abordagem Teórica

Nesta aula de Arduino iremos fazer prática com a tela LCD 16x2, nessa aula iremos usar uma
biblioteca já existente no Arduino que é a biblioteca LiquidCrystal.

Existem vários tamanhos de telas LCD como mostra o exemplo abaixo:

16 x 2

16 x 4

20 x 4

Cada tela é composta por uma sequência de pinos semelhantes, onde cada pino corresponde a
uma função na tela LCD.

Para podermos usar a tela LCD no Arduino devemos primeiramente importar a biblioteca e logo
em seguida especificar os pinos em uma instância da classe que importamos da biblioteca, e por
ultimo, devemos, no método setup do Arduino, iniciar a tela LCD passando como parâmetro, no
método begin(), as dimensões da tela que estamos usando.

Leiaut Carielo – Escola de informática com eletrônica 194


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Importando a biblioteca

Definindo os pinos da tela LCD a partir de uma instância criada da classe LiquidCrystal

Definindo as dimensões (no método setup())

Comando para limpar a tela (não obrigatório)

Após definirmos todo o escopo de configuração para a tela LCD podemos agora imprimir algo
na tela LCD.

Para imprimir algo na tela LCD primeiramente devemos posicionar o cursor na posição
desejada, para isso devemos saber o layout da tela LCD, veja abaixo as especificações:

16 Colunas

2 Linhas

O comando para posicionar o cursor na tela LCD: onde o primeiro


parâmetro representa a coluna e o segundo parâmetro representa a linha. No nosso caso temos
uma tela Lcd de 16 colunas e 2 linhas, porém as colunas e linhas são numeradas iniciando em 0,
ou seja, as colunas são numeradas de 0 a 15 e as linhas de 0 a 1.

Leiaut Carielo – Escola de informática com eletrônica 195


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Portanto se dermos o comando ao escrevermos algo na tela Lcd,


o caractere inicial estará no meio da tela, na primeira linha.

Então a sintaxe do comando é a seguinte:

Onde lcd é a instância criada antes do método setup():

Instância
A instância pode ter qualquer nome, não precisa ser obrigatoriamente “lcd”.

Por ultimo o comando para imprimir algo na tela Lcd é o mais simples:

Lembrando que ao imprimir na tela lcd devemos especificar a posição que queremos escrever,
caso contrário, por padrão, o texto será escrito a partir da posição inicial da tela, coluna 0 e
linha 0.

A tela Lcd necessita de um potenciômetro para regular seu contraste, o qual deverá ser
alimentado através da porta 5v e aterrado na porta GND, observe abaixo a configuração do
potenciômetro para a tela Lcd:

5V

Pino 3 da tela Lcd


Gnd

Os pinos Gnd e 5V podem ser invertidos, mas o pino central do potenciômetro sempre tem a
mesma configuração. Agora você pode seguir a diante com uma aula prática.

Leiaut Carielo – Escola de informática com eletrônica 196


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Lcd

Agora iremos montar a tela de Lcd 16x2.

Passo 1: Conecte os seguintes pinos da tela Lcd ao Arduino, a disposição


dos pinos e jumpers fica a seu critério.

Observe a pinagem de acordo com a imagem a seguir:

Leiaut Carielo – Escola de informática com eletrônica 197


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

1 16

O potenciômetro deverá estar conectado a alimentação (VCC) e à porta


terra (GND) do Arduino para que o mesmo funcione, não basta apenas
conectar o pino central do potenciômetro na tela Lcd visto que o mesmo
não irá funcionar corretamente se não estiver alimentado com VCC e GND.

Após ter conectado todos os pinos vamos ao código:

Passo 1: Digite o seguinte algoritmo:

Observe que usamos a biblioteca LiquidCrystal que já está no


Arduino.

Leiaut Carielo – Escola de informática com eletrônica 198


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Se o código e a programação estiverem corretos você verá o texto


que programamos aparecer na tela Lcd.

Exercícios

1. Faca um letreiro digital contento uma propaganda qualquer seguindo


o seguinte roteiro:
à Mostrar nome do produto (qualquer texto) – apagar e acender
mesmo texto 2 vezes.
à Frase de incentivo a adquirir o produto (qualquer texto)
à Nome da empresa – Aparecer letra por letra da empresa a cada
500 milissegundos
àRepetir todos os passos acima indeterminadas vezes.

Leiaut Carielo – Escola de informática com eletrônica 199


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Aula 10

Material prático

Leiaut Carielo – Escola de informática com eletrônica 200


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Projeto safe house

Agora iremos montar um circuito que irá simular um alarme residencial onde o mesmo
poderá ser ativado ou desativado através do teclado matricial.

Para ter acesso ao menu do alarme o usuário deverá inserir uma senha, que será pré
configurada durante a programação, o usuário ao inserir a senha correta poderá ativar ou
desativar o alarme, escolhendo a opção no menu que estará visível na tela lcd.

Nesse circuito teremos os seguintes componentes:

Tela Lcd à irá mostrar o menu de acesso ao alarme onde o usuário irá digitar a
senha e ativar ou desativar o alarme.
Teclado matricial à permitirá o acesso ao sistema de alarme da residência podendo
ativar ou desativar o alarme.
Buzzer (função de sirene para alertar alarme da casa).
Reed Switch (sensor que irá detectar se a porta está aberta ou fechada para acionar
o alarme).

Neste circuito o alarme será ativado ou desativado através do teclado matricial, onde
teremos uma senha pré-definida.

O Reed Switch fará a função de “monitor da porta” onde o mesmo irá detectar se a porta
está aberta ou fechada: caso a porta esteja aberta e o alarme estiver ativado o buzzer será
acionado, caso o alarme estiver desativado e a porta for aberta o buzzer não será acionado.

Após essa abordagem sobre o nosso projeto vamos a prática.

Visto como teremos muitos componentes fazer um gráfico com todas a ligações não
ficaria usual, então a montagem, distribuição e organização dos componentes fica a
seu critério.

Leiaut Carielo – Escola de informática com eletrônica 201


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Primeiro passo

Monte os componentes a seguir na protoboard:

TELA LCD - PINAGEM


Imagem de referência dos pinos da tela Lcd

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Pinos LCD Função Pinos Arduino


1 VSS GND
2 VDD 5V
3 V0 PINO CENTRAL DO
POTENCIOMETRO
4 RS 22
5 RW GND
6 E 23
7 D0 -
8 D1 -
9 D2 -
10 D3 -
11 D4 24
12 D5 25
13 D6 26
14 D7 27
15 A(luz) 40
16 K GND

Monte essa tela com o potenciômetro

Pinagem 5V e GND
pode ser invertida

GND 5V

Leiaut Carielo – Escola de informática com eletrônica 202


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

TECLADO MATRICIAL - PINAGEM

Observe a Pinagem

Pinos 1 2 3 4 5 6 7 8
Portas 3 4 5 6 7 8 9 10

Resistores de 220 ohms

Leiaut Carielo – Escola de informática com eletrônica 203


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

REED SWITCH - PINAGEM

5V
GND

Porta 30

Resistor de 10k ohms

O Reed Switch deverá ser usado com o Imã

Leiaut Carielo – Escola de informática com eletrônica 204


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

BUZZER - PINAGEM

Buzzer na porta 31;

Leiaut Carielo – Escola de informática com eletrônica 205


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Segundo passo

Digite o seguinte algoritmo:

Leiaut Carielo – Escola de informática com eletrônica 206


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 207


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 208


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 209


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 210


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Leiaut Carielo – Escola de informática com eletrônica 211


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552
Arduino I - Deivison charles

Passo 3: Agora envie o algoritmo para a placa clicando em “upload”

Clique aqui

Passo 4: Se desejar você pode abrir o serial monitor para ver os valores do controle IR:

Clique aqui

Revise seu código e o circuito e em seguida teste todos os componentes.

A senha de acesso ao alarme é 3673.

Leiaut Carielo – Escola de informática com eletrônica 212


Rua Joaquim Felipe, 119 – Boa Vista - (81) 3081-5552

Você também pode gostar