Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

2 
 
 
 
Boas-vindas! 
 
Como já visto no módulo anterior, o arduino é sustentado por dois pilares: hardware 
e software. Como o hardware já foi devidamente explicitado a cada um de vocês, 
chegou à hora de adentrarmos um pouquinho no mundo do software. 
 
Neste módulo se conhecerá o Ambiente Integrado de Desenvolvimento do Arduino 
(IDE – Integrated Development Environment), estrutura de programação, comandos 
básicos, além de fazermos juntos alguns experimentos. 
 
Esteja atento ao fato de que cada elemento visto é peça essencial para um bom 
desenvolvimento durante a competição. Entender, compreender e saber aplicar os 
conceitos passados pode lhe garantir a vitória no torneio. Então, só avance um 
tópico quando tiver de fato entendido. 
 
Bons estudos. #partiuEstudar #TorneioArduinoChallenge 
#conhecimentoEmpirico 
 
 
Objetivos 
 
Ao finalizar esse módulo, você terá que ser capaz de: 
 
1. Saber fazer a instalação e o uso da IDE e dos drivers do Arduino em seu 
computador; 
2. Entender e compreender a estrutura básica de um programa em arduino; 
3. Dominar e manipular os comandos específicos de programação. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 3 
 
 
 
1. Introdução 
 
Para começarmos esse módulo é necessário se atentar a alguns itens importantes, 
dos quais fazemos constantemente uso, mas raramente sabemos explicar o que é, ou 
em muitos casos, nem sabíamos que existia ou paramos pra pensar sobre isso. O 
primeiro deles é o computador. Pare um minuto a sua leitura e me responda: você 
sabe o que de fato é um computador? Em palavras gerais, ele nada mais é que uma a 
máquina, controlada por um microprocessador, que tem como objetivo principal 
realizar um conjunto de instruções. O microprocessador é o grande responsável por 
entender, compreender e realizar essas ações. Se fizermos uma analogia com o 
corpo humano, ele é o cérebro que comanda todo esse processo. Só por curiosidade, 
o microprocessador que compõe o arduino é o ATmega. 
 
É extremamente válido deixar informado neste ponto, que cada tipo de 
microprocessador entende um conjunto diferente de instruções. Isso significa que 
cada computador tem um cérebro que entende um tipo de linguagem específica, 
como se fosse um idioma próprio. Cientificamente esse idioma é denominado de 
linguagem de máquina. 
 
A linguagem de máquina não é de fácil compreensão ao ser humano, mas em 
contrapartida é a única forma de um computador entender o que tem que ser feito. É 
necessário então ter um mediador entre esse dois eixos. Esse mediador é chamado 
de linguagem de programação de alto nível. Ela é como se fosse um idioma 
intermitente entre o homem e a máquina. Um grande exemplo disso é a famosa 
C++, que por sua vez é a linguagem usada pela plataforma arduino, contendo 
algumas adaptações. 
 
Então, o que temos até agora é um seguinte: 
 
Um ser humano estuda e passa a entender e interpretar a linguagem de alto nível 
para poder conversar com o computador e estabelecer que ele faça algumas ações 
específicas. O computador pega essa linguagem de alto nível e converte-a para a 
linguagem de máquina. Você se lembra que eu disse que um computador só entende 
a linguagem de máquina? Pois bem, após isso, o computador compreende o que tem 
que ser feito e passa a executar o que foi pré-determinado. 
 
Essa conversão entre linguagem de alto nível e linguagem de máquina recebe o 
nome de compilar e o responsável por fazer esse processo é o compilador. 
 
 
 
 
 
 
 
 
 
 4 
 
 
 
 
 
 
 
 
 
 Ilustração 1 - Conversão da linguagem de alto nível para linguagem de máquina 
 
 
Mas espere um pouco? Você saberia dizer onde é encontrado um compilador? 
 
Esse tradutor geralmente é encontrado dentro um ambiente integrado de 
desenvolvimento, a IDE (Integrated Development Environment), que por sua vez é 
um aplicativo que permite a escrita e a compilação de um programa. Ou seja, 
autoriza escrever uma série de instruções e depois a converte para uma linguagem 
entendível ao computador. O arduino tem seu próprio IDE, denominado de Arduino 
IDE. E para que consigamos usufruir dessa plataforma, é necessário que o 
instalemos em nosso computador. 
 
Prove que entendeu: 
 
 O que é uma linguagem de programação de alto nível? 
 Onde é encontrado um compilador? 
 Porque é preciso instalar o IDE no computador? 
 
 
 
 
 
 5 
 
 
 
 
1.1 Instalação do Arduino IDE 
 
Para instalarmos a IDE, vá até o site do arduino, encontrado pelo endereço 
https://www.arduino.cc/, clique na aba ‘software’. Uma nova tela será aberta. Desça 
um pouco até encontrar o escrito ‘Download the Arduino IDE’. No canto direito da 
tela se terá várias opções de Sistema Operacional. Uma vez escolhida qual melhor 
lhe atende, clique sobre ela. A página será redirecionada. Por fim escolha a 
opção‘Just Download’. 
 
OBS: O exemplo da imagem fez o download para o sistema operacional Windows. 
 
 
 
Ilustração 2 - Página inicial do Arduino 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
https://www.arduino.cc/
 6 
 
 
 
 
 
 
Ilustração 3 - Seleção do Sistema Operacional 
 
 
 
 
Ilustração 4 - Download do IDE 
 
Depois de ter feito o download, dezipe a pasta do IDE e clique no ícone com o nome 
arduino. Uma tela como a da ilustração 6, deverá ser aberta. 
 
 
 
 
 
 
 7 
 
 
 
 
 
 
 
 Ilustração 5 - Ícone que deverá ser clicado 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 8 
 
 
 
 
 
 
 
 
 Ilustração 6 - Tela que deverá ser aberta 
 
Essa tela é onde toda a programação será feita e entre algumas ações é a responsável por 
transferir o código escrito para o microprocessador do arduino. 
 
 
 
 
 
 
 
 9 
 
 
 
 
1.2 Instalação de drivers no Windows 
 
Conecte o seu carrinho na porta USB de seu computador. Vá até a opção 
“Computador” encontrada no Menu Inicial, clique com o botão direito em cima dele e 
escolha a opção “Propriedades”. 
 
 
 
Ilustração 7 - Instalando os drivers - passo 1 
 
 
Feito isso, a tela que se encontra na ilustração abaixo será aberta. Escolha a opção 
“Gerenciador de dispositivos”. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 10 
 
 
 
 
 
 
 
 Ilustração 8 - Instalando os drivers - passo 2 
 
 
Uma tela será aberta. Escolha a opção Portas (COM e LPT), Arduino Uno e clique 
com o botão direito em cima dele. O símbolo do arduino terá um ponto de exclamação 
ao lado dele, simbolizando que os drivers não estão instalados corretamente. Depois 
escolha “Atualizar drivers”. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 11 
 
 
 
 
 
 
 
 Ilustração 9 - Instalando os drivers - passo 3 
 
Uma tela abrirá. Escolha a opção “Procurar software de driver no computador”. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 12 
 
 
 
 
 
 
 Ilustração 10 - Instalando os drivers - passo 4 
 
Outra tela será aberta. Coloque o caminho que se encontra a pasta do arduino que você 
baixou no começo deste descritivo, até a pasta drivers. Logo após ter feito isso, clique 
em “Avançar”. Depois de um tempo, você receberá uma mensagem dizendo que o 
software do driver foi instalado com êxito. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 13 
 
 
 
 
 
 
 
 Ilustração 11 - Instalando os drivers - passo 5 
 
OBS: O processo de instalação descrito foi usado para o Windows 7. Os 
sistemas operacionais mais recentes tendem a fazer a instalação de forma 
automática. 
 
1. 3 Conhecendo a IDE Arduino 
 
Agora que você já fez todas as instalações necessárias para que possamos trabalhar 
com maestria, é chegado o momento de conhecermos um pouco mais a IDE. 
 
Como já explicado, ela é o ambiente que permitirá que escrevamos um programa 
(conjunto de instruções) e posteriormente o compilarmos para que ele seja traduzido 
para linguagem de máquina e permita que o que foi definido de fato seja cumprido. 
 
A sua interface é bastante intuitiva, porém mesmo assim é interessante ressaltar 
alguns pontos. 
 
 
 
 
 
 14 
 
 
 
 
Repare que no lado superior esquerdo existe um ícone de verificação. Ao passar o 
mousesobre ele, a palavra verificar ou verify será apresentado em sua tela. Isso 
significa, que uma vez que você tenha escrito o programa, é importante que se clique 
nesse ícone para que esse faça uma busca por ele todo, a fim de achar algum erro de 
sintaxe. Preste bastante atenção: o “Verificar” irá apenas encontrar erros de sintaxe, ou 
seja, comandos escritos de forma errada. Ele não é capaz de encontrar erros de lógica. 
Achar incompatibilidade no processo de raciocínio do programa será exclusivamente 
responsabilidade sua. 
 
 
 
 Ilustração 12 - Ícone Verificar 
 
 
 
 15 
 
 
 
 
 
Agora faça um seguinte: apague tudo que se encontra na tela do IDE neste momento e 
escreva o código abaixo. Exatamente igual. E depois clique no ícone “Verificar”. 
Quando apertar verificar, poderá ser pedido que se salve esse documento. Escolha uma 
pasta que queira salvá-lo e aperte salvar. O que aconteceu logo depois? 
 
 OBS: não se preocupe em entender o programa neste momento. Apresentaremos 
posteriormente com mais detalhes a estrutura de programação. 
 
 
#define LED 12 
 
void setup() { 
 
pinmode (LED, OUTPUT); 
} 
 
void loop(){ 
 
} 
 
Perceba que no canto inferior de sua tela aparecerá uma mensagem escrita na cor 
laranja. Isso acontece porque o código acima se encontra errado. A mensagem que 
lhe apareceu discrimina esse erro e te dá à proximidade do local onde ele se 
encontra, podendo até mesmo mostrar o lugar exato. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 16 
 
 
 
 
 
 
 
 
 
 Ilustração 13 - Erro de verificação 
 
Se o programa estivesse correto por inteiro, apena iria aparecer uma mensagem 
dizendo que a compilação se encontra concluída. Assim, como visto na Ilustração 
14. 
 
 
 
 
 
 
 
 17 
 
 
 
 
 
 
 
 
 Ilustração 14 - Verificação com sucesso 
 
 
Porém, note um seguinte: até o momento instalamos a IDE Arduino e todos os seus 
drivers, depois abrimos essa IDE, escrevemos um programa e fizemos a sua verificação. 
Mas ainda falta fazer algo. Você tem alguma ideia do que seja? 
 
 
 
 
 
 
 18 
 
 
 
 
 
Observe: esse programa ainda não foi transferido para o arduino. É necessário que esse 
conjunto de instruções seja carregado para o microprocessador dessa plataforma. Para 
isso, baste que se conecte um cabo de dados saindo da placa arduino até o seu 
computador e se clique no ícone “Carregar” ou “Upload”, que se encontra ao lado do 
ícone “Verificar”. 
 
Agora digamos, que em um momento desatento, antes de fazermos a transferência, 
acabamos esquecendo de fazer a verificação do mesmo. O que você supõe que 
acontecerá? Dará certo mesmo sem a verificação? Quero dizer, se conter erros ele 
simplesmente será carregado para o arduino? 
 
O botão ‘Carregar’ também acumula a função de fazer uma verificação e caso seja 
encontrado algum erro de sintaxe, ele lhe avisará da mesma forma que já foi descrito. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 19 
 
 
 
 
 
 
 
 
 Ilustração 15 - Ícone de Transferência do programa para o arduino 
 
 
Você deve estar se perguntando neste momento então, pra que se tem um botão de 
“Verificar” e um de “Carregar”, se este segundo já acumula a função do primeiro. A 
resposta é simples. Eu posso ir verificando o meu programa em partes, ou seja, escrevo 
um pedaço e verifico, depois escrevo outra parte e faço novamente a conferência. 
 
 
 
 
 
 
 20 
 
 
 
 
 
 
Para um aprendiz, esta é uma importante prática para se ganhar segurança no que se está 
fazendo e não deixar acumular possíveis erros e depois ter que consertá-los de uma 
única vez. Por isso, fica a dica: use o “Verificar” todas as vezes que achar 
conveniente, afinal, você poderá estar vendo essa plataforma pela primeira vez. 
Pronto, você agora já possui um conhecimento básico de como usar a IDE. Passaremos 
a focar a nossa atenção na programação em si. Por isso, tenha ao lado um papel e uma 
caneta e anote tudo que achar conveniente lembrar para a competição. Além de que é 
indispensável que se faça todos os exercícios propostos e não apenas veja a sua 
resolução. 
 
1.4 A programação 
 
Caro(a) colega, deixe-me lhe perguntar: você alguma fez já fez uso de programação em 
sua vida? Repare, não estou me referindo ao uso de programação computacional, mas 
sim de programação, no modo mais abrangente dessa palavra. 
 
Programar é organizar uma série de eventos que deverão acontecer dentro de um 
determinado espaço de tempo. Então é programação quando eu organizo o meu dia, 
dividindo-o com os afazeres do colégio, com as atividades extracurriculares, o futebol 
com os amigos ou a “brigadeirada” com a amigas no fim da tarde. Programar é 
estabelecer uma sequência de procedimentos a serem seguidos e completados. E a 
programação computacional segue essa mesma ideia. É um conjunto de instruções que 
serão executados dentro de um tempo limitado. E desde que ela seja organizada e 
respeite uma sequência de passos, recebe o nome de algoritmo. No arduino, um 
programa recebe o nome de Sketch. Por isso fique atento, pois de agora em diante todas 
as vezes que falarmos em Sketch, estaremos nos referindo ao programa que você está 
construindo. 
 
Toda manipulação computacional só é possível graças a uma linguagem de 
programação. Como já visto, a linguagem do arduino é estruturada em cima da 
linguagem C++, e a partir desse momento veremos alguns comandos necessários e sua 
estrutura para que você tenha um excelente desempenho durante o torneio. 
 
1.4.1 Linguagem de programação do Arduino 
 
A linguagem de programação do arduino recebe o nome de Wiring, e é bastante 
simples. Por esse motivo que essa plataforma é ideal para os iniciantes de robótica. Os 
comandos disponibilizados possuem nomes correspondentes com suas funções. Porém 
esses são dados em inglês. 
 
 
 
 
 
 21 
 
 
 
 
 
Se você reparou nas ilustrações 6,12,13 e 14, pode perceber que a estrutura do código é 
dividida em dois grandes blocos: o void setup e o void loop. Todo o programa será 
dividido entre essas duas partições. 
 
No setup se encontra a configuração do sketch, ou seja, ele é o responsável por preparar 
o arduino para se ter o funcionamento adequado. Todos os comandos que estiverem 
dentro desse trecho será executado apenas uma única vez ao ligar a placa ou ao forçar o 
seu reinicio. 
 
Já no loop, temos toda a inteligência do código. São colocados dentro desse trecho os 
comandos que definirão o que tem que ser feito para alcançar um determinado objetivo. 
Ele é composto por uma sistemática que deve se repetir infinitas vezes, logo após o 
término da execução do bloco do setup, até que haja uma interrupção forçada. No nosso 
caso, poderia ser, por exemplo, o desligamento do carrinho. 
Vamos fazer um exemplo para deixar isso mais claro. 
 
Exemplo 01: Sabendo que um led que se encontra conectado no pino 12 da placa 
arduino, faça um programa que o acenda. 
 
Vamos entender melhor o que se pede. O enunciado traz duas informações muito 
importantes explícitas e uma informação implícita que são necessárias para o nosso 
sketch. 
 
Informação implícita: 
 
1 - O led como já foi visto no módulo de hardware, é um dispositivo de saída, ou seja, 
ele receberá um determinado comando do arduino para ser realizado. Isso se comprova 
quando no final do enunciado se diz um seguinte: “faça um programa que o acenda.” 
Em outras palavras, temos aqui uma definição. 
 
Informação explícita: 
 
2 - A pinagem que o led se encontra é a 12. O que temos aqui é outra definição. 
3 - O objetivo do programa é acender o led. 
 
Entendido o que o enunciado deseja e quais informações ele traz consigo, chegou o 
momento de dividi-la entre setup e loop. 
 
 
 
 
 
 
 
 
 22 
 
 
 
 
 
Lembre-se: dentro do setup teremos a configuração do programa e dentro do loop o 
objetivo do mesmo. Configurar, neste caso tem sentindo de definição. Diante disso, 
quais informações você considera que ficarão no setup e quais ficarão no loop?A imagem abaixo traz essa resposta para você, porém só a consulte depois de ter 
respondido essa questão. 
 
 
 
 
 Ilustração 16 - Divisão do programa 
 
 
 
 
 
 23 
 
 
 
 
Prove que entendeu 
 
1.2.1 De uma forma geral, o que deve ser colocado dentro do bloco setup? 
1.2.2 E dentro do bloco loop? 
 
Entendido como tem que ser feita a estrutura de um programa em arduino, está na hora 
de conhecermos alguns comandos e algumas constantes. 
 
Existem algumas funções básicas para entradas e saídas digitais. São elas: 
 
1. pinMode(): É o responsável por configurar se um determinado pino será visto como 
entrada ou como saída no arduino. A entrada é comumente chamada de INPUT e a 
saída é OUTPUT. O INPUT e o OUTPUT são considerados como constantes. 
 
A sua estrutura segue a seguinte forma: pinMode(pin,mode), onde pin é o número da 
pinagem que se estará usando e o mode é definição de INPUT ou OUTPUT. 
Com isso, podemos perceber que esse comando sempre estará incluso dentro do bloco 
do void setup(). 
 
Se retornarmos ao exemplo que foi dado, temos que: o pino 12 será ligado um led e que 
esse led é um dispositivo de saída. Usando o pinMode(), ficaremos assim: 
 
 pinMode(12,OUTPUT); 
 
Repare que nessa linha de código acabamos de incluir as informações 1 e 2 deste 
exemplo. 
 
2. digitalWrite(): Escreve em um dispositivo digital o valor HIGH (ligar ou 1) ou 
LOW (desligar ou 0). Para usá-lo, o pino deve ter sido configurado como uma saída, 
porque esse é um comando de escrita. O HIGH e o LOW são considerados como 
constantes. 
 
A sua estrtutura é: digitalWrite(pin,valor), onde pin é o número do pino e o valor será 
o HIGH ou LOW. 
 
Mais uma vez vamos retornar ao exemplo anterior em que é solicitado que se ligue um 
led que se encontra no pino 12. Usando o digitalWrite(), ficaremos assim: 
 
 digitalWrite(12,HIGH); 
 
 
 
 
 
 
 
 24 
 
 
 
 
 
Perceba que este comando se refere ao objetivo do exemplo 1, ou seja, ele utiliza da 
informação 3. 
 
Agora se quisermos que esse led fosse desligado, usaríamos: 
 
 digitalWrite(12,LOW); 
 
3. digitalRead(): Lê o valor de um pino digital especificado, ou seja, se ele está ligado 
(HIGH ou 1) ou desligado (LOW ou 0). 
 
A sua estrutura é: digitalRead(pin), onde pin é o número do pino aonde você quer fazer 
uma leitura. 
 
Por exemplo, digamos que se queira ler o valor de um determinado sensor que se 
encontra no pino 7, ficaríamos assim: 
 
 digitalRead(7); 
 
Também existem funções para entradas e saídas analógicas. São elas: 
 
1. analogRead(): Faz a leitura de um pino analógico, que pode ter sua intensidade 
variada desde 0(valor mínimo) a 1023(valor máximo). 
 
A sua estrutura é: analogRead(pin), onde pin é a pinagem em que o dispositivo se 
encontra conectado. 
Por exemplo, digamos que queremos ler a intensidade de resposta de um sensor e que 
este sensor se encontra no pino 11. Ficaríamos assim: 
 
 analogRead(11); 
 
3. analogWrite(): Escreve um valor de 0 a 255 em um pino analógico. Em algumas 
placas do arduino, esses pinos são marcados pelo símbolo “~”. Atenção: não é 
necessário configurar o pino como saída para ser usado como saída analógica. 
 
A saída passa a ter um comportamento proporcional ao número (0 a 255) que foi escrito 
nela, ou seja, quanto maior o número, maior será a intensidade colocada na saída. O 
valor escrito depende do circuito conectado. Por exemplo, um motor terá uma maior 
rotação quanto maior for esse número. Porém o mesmo motor, para controle de rotação, 
não pode receber o número menor que 170, pois será danificado. O led também poderá 
ser controlado. 
 
 
 
 
 
 25 
 
 
 
 
 
A sua estrutura é: analogWrite(pin, valor), onde pin é a numeração do pino e valor é 
qualquer um que esteja compreendido e inclusive entre 0 e 255. 
 
Por exemplo, digamos que queremos ligar um motor. Lembre-se que o valor mínimo 
para o mesmo, deve ser 170 e que a pinagem que ele se encontra é o 11. Ficaríamos 
assim: 
 
 analogWrite(11,180); 
 
Agora, vamos considerar que queremos desligar esse motor. A sintaxe ficaria: 
 
 analogWrite(11,0); 
 
Por fim, veremos duas funções ligadas ao tempo. São elas: 
 
1. millis(): Tem como objetivo principal retornar o número de milissegundos desde que 
a placa do arduino começou a rodar o programa. Este número chegará ao seu valor 
máximo e será reiniciado em um tempo de 50 dias. Em palavras gerais, ele contabiliza o 
tempo em que um programa começou a ser rodado, até 50 dias após. 
 
Sua estrutura é apenas millis(). 
 
2. delay(): Essa função tem como objetivo principal suspender, durante um tempo pré-
estabelecido em milissegundos o programa que está sendo executado. Repare um 
seguinte: dentro de 1 segundo se encontra 1000 milissegundos. 
 
A sua estrutura é: delay(ms), onde ms é o tempo que é desejado que o programa fique 
interrompido. 
 
Por exemplo, se quiser que um determinado programa fique paralisado por 5 segundos, 
ficaríamos assim; 
 
 delay(5000); 
 
E ai, entendeu tudo que foi estudado até o momento? Faça um seguinte então: pegue 
uma folha de papel e descreva cada função citada sem consultar a apostila. Sim, é 
necessário um pouco de esforço, mas lembre-se, isso pode acarretar em sua vitória no 
torneio. É importante que essas elas estejam bem frisadas em sua mente para que 
possamos prosseguir com o nosso treinamento. 
 
 
 
 
 
 
 26 
 
 
 
 
 
Pronto, agora que você já sabe todas essas funções, vamos voltar ao exemplo 1 e 
verificar como ficaria o seu programa. 
 
Exemplo 01: Sabendo que um led que se encontra conectado ao pino 12 da placa 
arduino, faça um programa que o acenda. 
OBS: Use o led como um dispositivo digital. 
 
Quais funções você acha que serão usadas aqui? Lembre que é necessário definir em 
qual pino o led se encontra e que ele é um dispositivo de saída. Qual função é usada 
para isso? Depois é necessário ligá-lo. O que você usaria para que isso acontecesse? 
Antes de olhar a resposta abaixo, procure fazer você mesmo. 
 
 
 
 
Ilustração 17 - Resolução do exemplo 1 
 
O nosso próximo passo será deixar esse programa que você acabou de fazer um pouco 
mais sofisticado. Para isso, peço que você olhe atentamente na figura abaixo e descubra 
as diferenças que os dois programas têm. Note que ambos fazem a mesma coisa. 
 
 
 
 
 
 
 
 27 
 
 
 
 
 
 
 
Ilustração 18 - Comparação entre dois programas 
 
Repare que na imagem que se encontra a sua direita, na parte superior do programa se 
tem um comando da seguinte forma: #define LED 12. Esse comando tem como objetivo 
permitir que o programador, no caso você, dê um nome a um pino antes que ele seja 
compilado. Mas porque é feito isso? 
 
Digamos que temos um led que está ligado ao pino 12 e que temos um programa com 
um pouco mais de linhas que esse na imagem, e usamos esse pino 12 em várias partes 
do mesmo. Se por alguma ventura mudarmos esse led do pino 12 para o 11, exigiria que 
você tivesse um esforço muito grande para ficar fazendo essa alteração em todo o 
sketch. Veja bem, esse procedimento é muito suscetível a falhas, pois poderiam passar 
algumas linhas sem serem notadas, além de que despenderia de muito tempo para fazer 
uma mudança relativamente simples. Para solucionar casos como esses é que existe o 
define. 
 
A sua estrutura é a seguinte: #define NOME_DA_CONSTANTE valor, onde o 
NOME_DA_CONSTANTE se refere ao dispositivo em questão e o valor, é a pinagem 
em que ele se encontra. Com isso, é possível que se pare de usar a pinagem em si no 
programa, e passe a usar apenas o NOME_DA_CONSTANTE, como pode ser visto no 
comando: digitalWrite(LED,HIGH). 
 
 
 
 
 
 
 
 28 
 
 
 
 
Você consegue perceber a vantagem que isso nostraz? Se por algum acaso houver a 
mudança do led do pino 12 ao 11, não é necessário fazer a troca em todo o sketch, e sim 
apenas no define.Deixaria de ser #define LED 12 e passaria a ser #define LED 11, e o 
problema estaria resolvido. 
 
Você terá que concordar comigo que isso facilita muito não é mesmo? 
 
Volte a figura e repare por mais alguns instantes. Consegue notar algo em comum entre 
esses programas além do fato de estarem executando a mesma função? Isso mesmo! 
Muito bem! Na frente de cada comando existe uma frase que está explicando 
exatamente o que ele faz. No mundo da programação, nós chamamos isso de 
comentário e essa é uma prática viável para podermos relembrar de forma rápida o que 
foi feito no programa depois de algum tempo sem vê-lo, além de que, para você que 
ainda é um iniciante, deixará o seu programa mais organizado e isso o ajudará em uma 
compreensão mais ágil. Lembre-se: em uma competição, velocidade é essencial. 
 
Todas as vezes que quisermos fazer um comentário, basta que usemos o símbolo “//” e 
escrevermos algo logo a sua frente. Por exemplo: 
 
 digitalWrite(LED,HIGH); // acende o led 
 
Porém perceba que o comentário se limitará a linha que se encontra o símbolo “//”. A 
linha debaixo será considerada um comando. 
 
Repare também, que no final de cada comando é usado um ponto-vírgula (;). Ele tem o 
objetivo de avisar que o comando finaliza naquele ponto e é indispensável na 
programação. 
 
Prove que entendeu 
 
Agora é com você. Faça a programação, dos exercícios 1, 2, 3 e 4, usando os conceitos 
adquiridos até o momento. Use o define e comentários. 
OBS: Caso você não se recorde de todos os comandos vistos, poderá retornar um 
pouco e relembrar quais são eles e quando são usados. Tê-los em mente é essencial 
para desenvolver os exercícios 1, 2, 3 e 4. 
 
 
 
 
 
 
 
 
 
 
 
 29 
 
 
 
 
 
Exercício 1: Agora que você já sabe acender um led, que tal ligarmos um buzzer? 
Sendo que o buzzer se encontra no pino 11 e é um dispositivo digital, faça com que ele 
toque. 
OBS: para que funcione corretamente, é necessário somar o software com o hardware. 
Não se esqueça de fazer a sua ligação. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 30 
 
 
 
 
Resposta: 
 
 
 
 Ilustração 19 - Solução do exercício 1 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 31 
 
 
 
 
 
Exercício 2: Refaça o exercício 1, agora considerando que o buzzer é um dispositivo 
analógico. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 32 
 
 
 
 
Resposta: 
 
 
 
Ilustração 20 - Solução do exercício 2 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 33 
 
 
 
 
 
Exercício 3: Acenda o led, usando a pinagem 12 e o buzzer usando a pinagem 11, 
considerando que o led é digital e que o buzzer é analógico. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 34 
 
 
 
 
 
Resposta: 
 
 
 
 Ilustração 21 - Solução do exercício 3 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 35 
 
 
 
 
 
Exercício 4: Refaça o exercício 3, considerando que o led e o buzzer são dispositivos 
analógicos e que o led tenha um valor de 180 e o buzzer tenha a sua metade. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 36 
 
 
 
 
Resposta: 
 
 
 
Ilustração 22 - Solução do exercício 4 
 
 
Agora que você já sabe ligar e desligar dispositivos e tem conhecimento de algumas 
funções específicas, eu lhe proponho um desafio. Faça um pisca-pisca. 
 
E ai, funcionou? Se sim, meus parabéns! Mas caso não tenha conseguido, não se 
preocupe. Nas linhas abaixo, iremos lhe ajudar. 
Verifique se o seu código se encontra dessa forma: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 37 
 
 
 
 
 
 
 
 Ilustração 23 - Solução errada do exercício desafio 
 
Se sua resposta foi SIM, é preciso que eu lhe diga que o seu raciocínio não está errado. 
 
Pois em um pisca-pisca as coisas acontecem dessa forma mesmo: ora o led está acesso, 
ora ele está apagado. Porém, ao testar, o seu programa não funcionou por um simples 
motivo: o poder de processamento do arduino é muito rápido, e por conta disso é 
impossível ver o led apagar. Não que ele não tenha apagado, mas os nossos olhos não 
conseguem enxergar, pois vemos a uma freqüência limitada. Por isso temos a impressão 
que ele está o tempo todo acesso. 
 
Para resolver esse impasse, basta que se acrescente entre os comandos de ligar e 
desligar e após o comando de desligar, a função de delay. Ao acrescentá-la, o programa 
ficará um tempo paralisado no ponto em que ele se encontra e com isso será possível 
enxergar o efeito do pisca-pisca. 
 
Faça essa alteração em seu programa e veja o que acontece. 
 
 
 
 
 
 
 38 
 
 
 
 
 
 
 
 
 Ilustração 24 - Solução correta do exercício desafio 
 
E agora, funcionou? Na solução feita por nós, colocamos um delay com um tempo de 1 
segundo. Porém esse tempo pode ser alterado. Faça experimentos, modificando o tempo 
de ligamento e desligamento do led. Deixe a sua imaginação o guiar neste momento. 
 
Então, já que você entendeu, vamos lhe propor um segundo desafio: 
 
Exercício Desafio 2: Faça um pisca-pisca que funcione da seguinte forma: Quando o 
led estiver aceso, o buzzer deverá estar desligado. Quando o led estiver apagado, o 
buzzer deverá estar ligado. Use o led como digital e o buzzer como analógico, com uma 
intensidade de 60. 
 
 
 
 
 
 
 
 
 
 39 
 
 
 
 
Resposta: 
 
 
Ilustração 25 - Solução do exercício_desafio_2 
 
Prove que entendeu 
 
Neste ponto, já estudamos as funções básicas do arduino e fizemos juntos alguns 
exemplos. Nas linhas que se seguem, iremos lhe propor alguns exercícios usando todas 
as funções que vimos até o momento. Não deixe de fazer esses exercícios e apenas 
depois de concluí-los, confira as suas respostas. 
 
Exercício 5: Faça um programa que mude a intensidade do led de acordo com o tempo. 
Ele deverá começar desligado e ir aumentando de 50 em 50. Lembre-se que o valor 
máximo permitido é 255. Use o pino 11. 
 
 
 
 
 
 
 
 
 
 
 
 40 
 
 
 
 
Resposta: 
 
 
 
Ilustração 26 - Solução do exercício 5 
 
 
Exercício 6: Usando o mesmo conceito do exercício anterior, acrescente o buzzer e 
faça que ele também vá aumentando sua intensidade gradativamente, paralelamente ao 
led. Seguindo mesma escala de valores. Use os pinos 9 e 11. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 41 
 
 
 
 
Resposta: 
 
 
Ilustração 27 - Solução do exercício 6 
 
Agora que você já sabe alguns comandos básicos do arduino e já treinou um pouco, 
vamos conhecer um pouco mais de programação. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 42 
 
 
 
 
1.4.2 Estrutura de controle 
 
Você terá que concordar comigo que o título deste tópico é extremamente sugestivo. 
Então, responda rapidamente: Uma estrutura de controle tem como principal objetivo o 
quê? Exatamente isso: controlar. Mas de que forma? 
 
Existem bastantes estruturas de controle na linguagem de programação C++, que por 
conseqüência acabam sendo herdadas pela Wiring. Porém nos atentaremos a uma em 
específico, denominada como estrutura condicional. O seu grande objetivo é 
comparar uma determinada informação com um valor pré-estabelecido, e caso a 
resposta seja verdadeira, executa uma sequência de ações. Difícil compreender? 
Vamos ser mais claros: 
 
Uma estrutura condicional faz comparações entre informações. Essa comparação é 
denominada de condição. Por conta disso é necessário se ter em mãos os dados a serem 
conferidos. Por exemplo, digamos que você deseja comparar a sua nota da prova de 
matemática com a nota do seu amigo, para ver quem se saiu melhor. Para que essa 
comparação aconteça, é essencial que se conheça a sua pontuação, tal qual a dele. Isso 
significa, que para essa estrutura acontecer, é fundamental que se tenha dois elementos. 
Tendo esse dois elementos e feito esse contraste entre ambos, é possível tirar algumaconclusão. Diante dessa, você estabelecerá uma série de ações que lhe sejam 
convenientes. 
 
Voltemos ao exemplo das notas. Após fazer a comparação, concluiu-se que a sua nota 
foi superior a nota de seu amigo, e por isso, você decidiu oferecer ajuda para ele 
estudar. Então ficamos assim: A comparação das notas (condição) levará a uma tomada 
de decisão (ações). 
 
Ainda está um pouco confuso? Não se preocupe. Vamos detalhar um pouco mais. 
Verifique se a estrutura abaixo o ajuda na compreensão. 
 
Temos nesse momento três informações: 
 
1 – Minha nota; 
2 – Nota do meu amigo; 
3 – Oferecer ajuda; 
 
 
 
 
 
 
 
 
 
 
 43 
 
 
 
 
 
 A “Minha nota” e a “Nota do meu amigo” são dados. Ou seja, precisam ser coletados 
de algum lugar se ainda não o foram. Oferecer ajuda é uma ação. 
 
A estrutura condicional exige que comparemos esses dois dados, e logo após 
executemos uma ação. Para fazer isso, use as palavras “Se” e “Então”. Veja como fica: 
 
Se “Minha nota” for maior que a “Nota do meu amigo”, então, eu vou “Oferecer 
ajuda”. 
 
OBS: Verificamos até o momento que as palavras “se” e “então” são poderosos 
aliados para se realizar uma comparação e promover ações. Por conta disso, é 
muito importante que sempre se faça uso dela. 
 
Ajudou a clarear um pouco mais o que é a estrutura condicional? Pois bem, vamos 
prosseguir. Antes que possamos levá-la para o código em si, lhe mostrarei uma técnica 
que o ajudará bastante. Ela é chamada de pseudocódigo e serve para que rascunhemos o 
nosso programa em um pedaço de papel antes de irmos para o computador. Ele 
possibilita escrever um determinado programa em uma linguagem extremamente clara 
para qualquer ser humano. 
 
Mais uma vez, vamos voltar ao exemplo das notas. Se fôssemos colocar o seu 
enunciado em pseudocódigo, ele ficaria da seguinte forma: 
 
Se (MinhaNota>NotaDoMeuAmigo) 
{ 
 Oferecer ajuda; 
} 
 
Você consegue compreender o que foi escrito acima? Percebeu a entrada de alguns 
símbolos? 
 
No pseudocódigo que escrevemos, continuamos usando a palavra “se”. A comparação, 
ou seja, a condição, foi colocada dentro dos parênteses e trocamos a palavra maior por 
seu respectivo símbolo. Logo após, a palavra “então” foi retirada, porém continua-se a 
usando para leitura, e a ação a ser tomada é finalizada por ponto-vírgula e finalizamos 
com outra chaves. Repare um seguinte, sempre que se abrir um parêntese, chaves ou 
colchetes, é necessário fechá-lo. 
 
 
 
 
 
 
 
 
 44 
 
 
 
 
Só para aumentar a sua compreensão, veja esse pseudocódigo comentado de como pode 
ser feito essa leitura. 
 
Se (MinhaNota>NotaDoMeuAmigo) 
// Se a MinhaNota for maior que a NotaDoMeuAmigo, Então 
 
{ 
 Oferecer ajuda; //Eu vou oferecer ajuda 
} 
 
Perceba também que a ação a ser tomada, se encontra alinhada para a direita. 
 
Até o momento, conseguiu entender como se dá a estrutura condicional simples? 
 
Como pode perceber caro(a) colega, em uma estrutura condicional, usamos alguns 
elementos de comparação. No exemplo da nota, ele se deu pela palavra maior, porém 
existem outros. 
 
Veja abaixo a tabela com esses elementos e sua simbologia no mundo computacional 
que deve ser usado em seu pseudocódigo e posteriormente em seu código. 
 
Operador de Comparação Simbologia 
Maior que > 
Menor que = 
Menor ou igual a =70) 
{ 
 Aluno aprovado; 
} 
 
Se (x>90) 
{ 
 Aluno aprovado com êxito; 
} 
 
Se (xvalor1) 
{ 
 Tarefa A; 
} 
 
Se (condicao>valor2) 
{ 
 Tarefa B; 
} 
 
Resposta: Se a condição for maior que o valor 1, então será executada a Tarefa A. Se 
a condição for maior que o valor 2, então será executada a Tarefa B. 
 
Pense um pouco mais: Agora que já estudamos a estrutura condicional e verificamos 
que ela é composta por uma comparação e um conjunto de ações, analise a resposta do 
exercício 7. Você acha que todas as ações serão realizadas? Lembre-se que no começo 
deste tópico dizemos que a ação só será realizada se a condição for atendida, ou seja, se 
a comparação resultar em verdadeiro. 
 
Vejamos: no exercício 7, sabemos que x é igual a 70 e depois temos uma série de 
condições acompanhadas de suas respectivas ações. Vamos verificar se suas ações serão 
de fato executadas: 
 
1. Se x for maior ou igual a 70, o aluno está aprovado: Se pergunte um seguinte: 
“70 é maior ou igual a 70?”. A resposta é SIM, por isso, o programa executará a 
ação Aluno aprovado. 
2. Se x for maior que 90, o aluno está aprovado com êxito: Agora tente 
responder: “70 é maior que 90?”. A resposta é NÃO, por isso, o programa não 
executará a ação Aluno aprovado com êxito. 
3. Se x for menor que 70 o aluno está de recuperação: Responda: “70 é menor 
que 70?”. A resposta é NÃO, por isso, o programa não executará a ação Aluno 
reprovado. 
4. Se x for menor ou igual a 30 o aluno está reprovado automaticamente: Use o 
mesmo processo: “70 é menor ou igual a 30?”. A resposta é NÃO, por isso, o 
programa não executará a ação do aluno. 
 
Agora que já aprendemos como é o processo de uma estrutura condicional e como fazer 
o seu pseudocódigo, está na hora de colocarmos isso no programa. Com o conhecimento 
que temos em mãos, e se todos os exercícios propostos foram devidamente feitos, não 
encontraremos dificuldade em fazer essa transição. 
 
 
 
 
 47 
 
 
 
 
 
Repare na comparação entre um pseudocódigo e um código na imagem abaixo: 
 
 
 
Ilustração 28 - Comparação entre um pseudocódigo e um código 
 
A palavra se do pseudocódigo, transforma-se em if, que é o seu significado em inglês. 
No mais, a estrutura segue quase que o mesmo processo, sendo feito apenas algumas 
modificações básicas. A ação deixou de ser descrita por definição e passou a se escrever 
como fazê-la 
 
Vamos treinar um pouquinho agora: 
 
Exemplo 2: Faça o código e depois confira o seu funcionamento em que, dado um 
tempo maior que 5 segundos, o buzzer deverá ser tocado com uma intensidade de 30, 
avisando o ocorrido. 
 
Observe o seguinte: Vamos utilizar neste exemplo, todos os conceitos visto até o 
momento. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 48 
 
 
 
 
 
 
 
Ilustração 29 - Solução do exemplo 2 
 
 
Prove que entendeu 
 
Até o momento aprendemos: 
o Instalação da IDE; 
o Instalação de drivers; 
o Estrutura do programa; 
o Entradas e Saídas digitais: (pinMode(), digitalWrite(), digitalRead()); 
o Entrada e Saída Analógicas: (analogRead(), analogWrite()); 
o Tempo: millis(), delay(); 
o Estrutura condicional e operadores de comparação. 
 
Abaixo segue alguns exercícios usando TODOS esses conceitos. Vamos lá? 
 
Dados importantes: Todas as vezes que falarmos a respeito de faixa escura, estamos 
nos referindo a um valor maior que 300. Por sua vez, quando o valor for menor que 
300, a faixa será clara. 
 
 
 
 
 49 
 
 
 
 
Exercício 9: Faça o código e depois confira o seu funcionamento em que, dado um 
sensor de luminosidade, que se encontra no pino 0 todas as vezes em que ele ler uma 
faixa escura, o led seja acendido.50 
 
 
 
Resposta: 
 
 
 
Ilustração 30 - Solução do exercício 9 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 51 
 
 
 
 
 
Exercício 10: Use o exercício 9 e acrescente a seguinte condição: Quando o sensor de 
luminosidade ler uma faixa escura, o led deverá ser ligado. Depois de 10 segundos, o 
led deverá ser apagado e o buzzer começará a tocar na intensidade 20. Logo após 15 
segundos, o buzzer é desligado, o led é acesso em forma de pisca-pisca e o buzzer 
começa a ter um crescimento gradual de 0 a 255 de intensidade. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 52 
 
 
 
Resposta: 
 
 
Ilustração 31 - Solução do exercício 10 
 
 53 
 
 
 
 
Tudo o que acabamos de ver são estruturas condicionais simples. Ou seja, eu tenho 
apenas uma comparação a ser feita, ou se quiser, apenas uma condição que deve ser 
atendida. Contudo, existem ainda as condições compostas, aonde é possível usar mais 
que um conjunto de comparação. 
 
Os operadores que permitem que isso aconteça, são os operadores lógicos “AND” (ou 
“E”) e “OR” (ou “OU”). 
 
1.4.2.1 Operador AND 
 
O operador “AND”, ou “E”, tem o objetivo principal de estabelecer uma relação de 
inclusão entre dois elementos. Por exemplo, quando dizemos: “Eu estou participando do 
torneio Arduino Challenge e estou gostando”, eu tenho uma relação de soma. Ambas 
coisas estão acontecendo. Quando isso é colocado em uma estrutura de condição, as 
ações provocadas por essas informações só acontecerão se ambas forem verdadeiras. 
 
Na programação a sua simbologia é &&. 
 
Por exemplo, veja o código abaixo: 
 
if((SENSOR1)>300 && (SENSOR2)>300){ 
 
 digitalWrite(LED,HIGH); 
} 
 
Neste caso, o led só será aceso se o sensor1 e o sensor2 lerem uma “faixa escura”. Se 
por acaso, o sensor1 ler uma “faixa clara” e o sensor2 ler uma “faixa escura”, ou se o 
sensor 1 ler uma “faixa escura” e o sensor2 ler uma “faixa clara”, o led não se acenderá. 
 
Para que a ação aconteça, é necessário que ambas as condições sejam atendidas. 
 
Com isso percebemos o seguinte: 
 
Sensor 1 Sensor 2 Led 
Faixa clara Faixa clara Não acende 
Faixa clara Faixa escura Não acende 
Faixa escura Faixa clara Não acende 
Faixa escura Faixa escura Acende 
 
Tabela 2 - Tabela da verdade do operador "AND" 
 
 
 
 
 
 
 54 
 
 
 
 
 
É de fácil compreensão esse operador não é mesmo? 
 
Pois bem, e se por acaso eu tiver dois sensores, mas se somente um deles ler “faixa 
escura”, já for suficiente para acender o led, em questão de programação, como faria 
isso acontecer? 
 
Para responder essa pergunta, vamos conhecer o operador “OR”. 
 
 
1.4.2.2 Operador OR 
 
O operador “OR”, ou “OU”, tem por objetivo principal estabelecer uma relação de 
independência. Se apenas um dos elementos estiver atendendo a condição, então uma 
ação será realizada em cima disso. 
 
Na programação a sua simbologia é ||. 
 
Por exemplo, veja o código abaixo: 
 
 
if((SENSOR1)>300 || (SENSOR2)>300){ 
 
digitalWrite(LED, HIGH); 
 
} 
 
Neste caso, o led só não será acesso se o sensor1 e o sensor2 lerem “faixa clara”. Se por 
ventura, qualquer um dos dois lerem uma “faixa escura”, então o led deverá ser aceso. 
 
Com isso percebemos o seguinte: 
 
Sensor 1 Sensor 2 Led 
Faixa clara Faixa clara Não acende 
Faixa clara Faixa escura Acende 
Faixa escura Faixa clara Acende 
Faixa escura Faixa escura Acende 
 
 Tabela 3 - Tabela da verdade do operador "OR" 
 
 
 
 
 
 
 
 55 
 
 
 
 
Agora perceba um seguinte: cada sensor tem separadamente duas opções de leitura de 
faixa: “faixa clara” ou “faixa escura”. A junção desses dois sensores me oferece quatro 
possibilidades de leitura: “faixa clara – faixa clara”, “faixa clara – faixa escura”, “faixa 
escura – faixa clara” e “faixa escura – faixa escura”. 
 
Se por acaso, tivéssemos mais um sensor, teríamos 8 condições de leitura: “faixa clara – 
faixa-clara – faixa clara”, “faixa clara – faixa clara – faixa escura”, “faixa clara – faixa 
escura – faixa clara”, “faixa clara – faixa escura – faixa escura”, “faixa escura – faixa 
clara – faixa clara”, “faixa escura – faixa clara – faixa escura”, “faixa escura – faixa 
escura – faixa clara”, “faixa escura – faixa escura – faixa escura”. Isso acontece porque 
todas as possibilidades de um sensor, se junta com todas as possibilidades do outro 
sensor. Um pouco confuso não é mesmo? Veja a imagem abaixo usando apenas dois 
sensores e veja se clareia um pouco. 
 
 
 
 Ilustração 32 - Todas as combinações utilizando dois sensores 
 
Se pegarmos todas as opções e fizermos um agrupamento de todas que se repetem, no 
fim, teremos apenas quatro opções válidas. Veja: 
 
 
 
 
 
 
 
 
 
 
 
 
 
 56 
 
 
 
 
 
Ilustração 33 - Tabela da verdade de dois sensores 
 
Agora imagine só ter que usar esse método para montar a tabela de 3 sensores! Iria ser 
bem trabalhoso não é mesmo? E se fossem 8 sensores? Seria uma “missão impossível”. 
Perderíamos muito tempo apenas descobrindo o número de opções possíveis de leitura 
para esses sensores juntos. 
 
Por isso, é importante que você fique muito atento a uma regra que diz: “O número de 
linhas da tabela-verdade de uma proposição composta (número de opções de leitura 
dos sensores agrupados) depende do número de proposições simples que a integram, ou 
seja, a tabela-verdade de uma proposição composta com n proposições simples contém 
2ⁿ linhas.” 
 
Com isso, se tivermos 03 sensores, basta que usemos 2³ e assim sucessivamente. Se 
fossem quatro sensores, basta que colocasse 2 elevado a quarta potência. Como no caso, 
temos dois sensores, basta fazermos, 2², resultando em 04 opções diferentes. 
Essa regra deixou as coisas mais claras não é mesmo?! Pois bem, não se esqueça dela, 
ela será indispensável durante a competição. 
 
Mas agora que aprendemos a fazer estruturas condicionais compostas e já vimos como é 
a estrutura, usando os operadores lógicos “AND” e “OR”, está na hora de você mostrar 
que aprendeu os conceitos passados. Por isso, não deixe de fazer a série de exercícios 
logo abaixo. 
 
 
 
 
 
 
 
 
 
 
 
 57 
 
 
 
 
Prove que sabe 
 
Exercício 11 – Você possui dois sensores: sensor1 e sensor2. Faça um programa que 
acenda o led quando os dois sensores lerem uma “faixa escura” e o apague se a leitura 
for uma “faixa clara”. 
 
Resposta: 
 
 
Ilustração 34 - Solução do exercício 11 
 
 
 
 
 
 
 
 
 
 
 
 58 
 
 
 
Exercício 12 – Faça um programa que ao ligar a placa arduino, um led seja acendido e 
fique assim todas as vezes que o tempo de ligamento for menor que 5 segundos e maior 
que 15 segundos. Quando o tempo estiver entre 5 segundos e 15 segundos, inclusive, o 
led deverá ser apagado. (Esse exercício não se encontra com solução pronta. Levar a 
resolução para discutirmos na aula presencial) 
 
Exercício 13 – Faça um novo programa que: (Esse exercício não se encontra com 
solução pronta. Levar a resolução para discutirmos na aula presencial) 
o Acione o buzzer quando o sensor 1 estiver no escuro e o sensor 2 estiver no 
claro; 
o Quando o sensor 1 estiver no claro e o sensor 2 estiver no escuro, acenda o 
LED; 
o Quando ambos sensores estiverem no claro, desligue o led e o buzzer; 
o Quando ambos sensores estiverem no escuro ligue o led e o buzzer. 
 
 
Agora que você já aprendeu e treinou todos os tópicos necessários para uma boa 
competição, só me resta lhe desejar boa sorte na classificatória. Nos vemos logo 
mais. Até já. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 59 
 
 
 
 
Bibliografia 
 
BANZI, Massimo. Primeiros passos com o arduino. São Paulo, SP: Novatec Editora 
Ltda, 2011. 
 
https://www.arduino.cc/ 
 
https://www.arduino.cc/
	_Toc231909139