Buscar

ARDUINO E ATIVIDADES ARDUINO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 278 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 278 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 278 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

DISPL 
 
 
 
 
 
 
 
 
 
 
 
 
 
PAULISTA - 2020 
ROBÓTICA LIVRE 
A DIFERENÇA, PRA QUEM QUER FAZER A DIFERENÇA! 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 2 de 278 
INDICE 
APRESENTAÇÃO 03 
APLICAÇÕES DA ROBÓTICA 03 
CONCEITO DE TENSÃO, RESISTÊNCIA, CORRENTE E A 1ª LEI DE OHM 03 
RESISTÊNCIA ELÉTRICA, CORRENTE E A 1ª LEI DE OHM 03 
CONHECENDO O MULTÍMETRO 04 
MEDIDA DE RESISTÊNCIA ELÉTRICA DE RESISTORES 04 
CÓDIGO DE CORES DE RESISTORES 04 
PROTOBOARD 05 
PLATAFORMA ARDUINO 05 
IDE ARDUINO 06 
PROGRAMAÇÃO EM ARDUINO 06 
SIMULADOR 08 
FÓRMULA PARA CALCULAR O RESISTOR ADEQUADO PARA UM LED 06 
SIMULADOR – TINKERCARD.COM E FRITZING 07 
EXEMPLO DE COMPONENTES ELETRÔNICOS DE ENTRADA E SAÍDA 09 
ENTENDENDO PROGRAMAÇÃO NO ARDUINO 10 
COMPOSIÇÃO DO KIT ROBÓTICA 14 
ATIVIDADES E DESAFIOS 18 
 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 3 de 278 
APRESENTAÇÃO 
Este projeto visa desenvolver junto aos alunos o uso da robótica numa plataforma cujo software 
e hardwares são de uso livre e acessível, aumentando em muito as possibilidades de projetos. 
A plataforma utilizada é a do Arduino, desenvolvida no ano de 2005 na Itália com a finalidade de 
ajudar estudantes de design a desenvolverem projetos. Sua grande vantagem é possuir projeto 
open source (código aberto), permitindo a criação de diferentes soluções para uma ampla gama 
de aplicações disponibilizadas em comunidades na internet. 
No desenvolvimento de aplicações práticas, nossos estudantes irão utilizar conceitos teóricos de 
diversas áreas de estudo. 
Robótica é um ramo educacional e tecnológico que trata de sistemas compostos por partes 
mecânicas automáticas e controladas por circuitos integrados, tornando sistemas mecânicos 
motorizados controlados automaticamente por circuitos elétricos, com ou sem intervenção 
humana. 
Robótica Livre é uma metodologia educacional/pedagógica de uso de "sucata eletrônica" e 
artefatos eletrônicos para ensino de Robótica. A principal característica da Robótica Livre é o uso 
de elementos não patenteados na construção de kits com elementos Eletrônicos, Mecânicos e 
de Programação podendo ser usado por qualquer pessoa e replicado para qualquer outro 
ambiente comercial ou educacional. É muito comum projetos de Robótica Livre junto com 
projetos de Metareciclagem (reciclagem das tecnologias). Para que o projeto de Robótica Livre 
seja considerado Livre ela deve conter Software Livre e Hardware Livre. 
APLICAÇÕES DA ROBÓTICA 
No nosso dia a dia os processos automatizados são frequentes, atividades que antes eram 
executadas de forma manual, trabalhosa e demorada, hoje são realizadas com cliques, sons e os 
mais variados tipos de comando. Hoje muitas tarefas ficam um pouco mais fáceis com o uso da 
Placa Arduíno (projetos iniciais). 
Alguns exemplos que podemos citar são os semáforos que acendem e apagam as luzes durante 
determinado tempo, sensores de luz que fazem os postes de luzes acederem sozinhos, sensores 
de presença muito utilizados em corredores e escadarias escuras, painéis, letreiros de ônibus e 
estacionamentos que mudam as palavras (na verdades os leds acendem), sensores de som que 
acendem ou apagam as lâmpadas com um simples bater de palmas, sensores de temperatura, 
pequenas engrenagens movidas através de controles remotos ou físicos com alavancas, 
potenciômetros e botões, é o caso de projetos de carrinhos, braços robóticos e até drones entre 
outros. 
CONCEITO DE TENSÃO, RESISTÊNCIA, CORRENTE E A 1ª LEI DE OHM 
É a diferença de potencial entre dois pontos ou melhor, a quantidade de energia gerada para 
movimentar uma carga elétrica (elétrons) em um único sentido. 
Fórmula para calcular a tensão elétrica de um circuito tendo as grandezas de corrente e 
resistência: 
𝑽 = 𝑰. 𝑹 
Onde: V= tensão elétrica; I= corrente elétrica e R= resistência elétrica. 
RESISTÊNCIA ELÉTRICA, CORRENTE E A 1ª LEI DE OHM 
A RESISTÊNCIA ELÉTRICA pode ser definida como a capacidade que um corpo tem de opor-se à 
passagem de corrente elétrica quando submetido a uma diferença de potencial (V). Sua 
intensidade pode ser calculada através das Leis de Ohm. 
Quando um condutor é conectado a uma fonte de tensão (V), ele passa a ser percorrido por 
uma CORRENTE ELÉTRICA de intensidade (i), que consiste no movimento dos elétrons livres no 
condutor. 
Essa constante é a resistência elétrica do condutor e é representada pela letra R. 
Essa equação é 𝐕 = 𝐈. 𝐑 conhecida como a Primeira Lei de Ohm e pode ser aplicada a todos os 
resistores. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 4 de 278 
CONHECENDO O MULTÍMETRO 
É um aparelho utilizado para realizar medidas de tensão, corrente e resistência elétrica. Ele 
incorpora diversos instrumentos de medição, como o voltímetro, o amperímetro, o ohmímetro e 
pode conter também um capacímetro , frequencímetro, termômetro entre outros. 
1. Tensão contínua (pilhas, baterias, fontes), 
2. Tensão alternada (tomadas), 
3. Correntes, 
4. Continuidade (diodos, cabos, fios), 
5. Resistência (resistores), 
6. VΩmA (ponteira vermelha) - tensões continua e alternada, 
7. COM (ponteira preta) – sempre. 
MEDIDA DE RESISTÊNCIA ELÉTRICA DE RESISTORES 
A ponteira vermelha do multímetro deve ser plugada em VΩmA, a ponteira preta em COM e o 
cursor em Ω resistência elétrica num valor acima do valor do resistor. 
Por exemplo: se o resistor for de 1kΩ (1000Ω), a primeira e melhor opção é colocar a chave do 
multímetro em 2000Ω. 
Com o resistor desconectado de qualquer circuito, deve-se colocar a ponteira vermelha em um 
terminal do resistor e a ponteira preta no outro terminal. 
CÓDIGO DE CORES DE RESISTORES 
 
EXEMPLO: 
No código de cores de resistores temos fundamentalmente 4 cores: 
• As três primeiras cores indicam o valor do resistor. 
• A 4ª cor a possível variação em porcentagem deste valor. 
1 2 
3 
4 5 
6 7 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 5 de 278 
PROTOBOARD 
É uma placa para montar circuitos de protótipos. 
Com ela é possível desenvolver e testar diversos circuitos eletrônicos, tudo sem ter que soldar 
os componentes. 
 
As linhas azuis da placa representam as ligações internas, ou seja, internamente elas já estão 
interligadas. 
PLATAFORMA ARDUINO 
O Arduino é um sistema formado de software e hardware livre criado em 2005 por 
pesquisadores italianos. O objetivo era elaborar um dispositivo que fosse ao mesmo tempo 
barato, funcional e fácil de programar, sendo dessa forma acessível a pessoas leigas em 
eletrônica. O objetivo foi atingido, pois o Arduino, hoje, é amplamente utilizado por leigos e 
também por especialistas. Além disso, foi adotado o conceito de hardware livre, o que significa 
que qualquer um pode montar, modificar, melhorar e personalizar o Arduino, partindo do 
mesmo hardware básico. 
Uma das principais vantagens desse sistema, além do preço acessível dos seus componentes, é a 
grande quantidade de projetos prontos e a disposição na internet para serem acessados. Gerou-
se em torno dessa plataforma um grande movimento de criação, criatividade, interatividade. 
 
Em poucas palavras, Arduino é uma plataforma de desenvolvimento de projetos eletrônicos (ou 
prototipagem eletrônica), constituída tanto de hardware e software, e que está disponível por 
VISÃO 
DE CIMA DE BAIXO 
Placa programável usada para 
gerar circuitos interativos. 
Área de Alimentação 
 
Área de Prototipação Área de Prototipação 
Colunas Contínuas 
 
Linhas Contínuas 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 6 de 278 
meio da licença Creative Commons Attribution Share-Alike license. Isso quer dizer que todos os 
arquivos de design do projeto Arduino estão disponíveis gratuitamente na internet e que seu 
software é open-source. Além disso, a plataforma pode ser utilizadatanto para trabalhos 
pessoais como para fins comerciais, desde que os créditos sejam atribuídos à marca Arduino e os 
arquivos de projeto também sejam disponibilizados sob a mesma licença. 
PRINCIPAIS RAZÕES PARA SE UTILIZAR A PLATAFORMA ARDUINO: 
• Baixo custo de prototipagem; 
• Softwares de simulação gratuitos disponíveis; 
• Fácil de programar; 
• Grande número de tutoriais, artigos e projetos prontos na internet; 
• Extensa comunidade de desenvolvedores e hobbystas; 
• Não requer experiência ou grandes conhecimentos prévios de eletrônica/programação (no 
entanto, é recomendável saber os conceitos básicos pelo menos) 
PORTAS DIGITAIS 
O Arduino Uno tem 14 portas digitais nomeadas de 0 a 13, que podem ser de entrada ou saída. 
As portas RX←0 e TX→1 são utilizadas para comunicação serial e DEVEM SER EVITADAS nas 
programações. Uma porta digital deve assumir somente dois níveis 0 (zero) ou 1 (um) que no 
Arduino que trabalha com tensões entre 0 e 5V assumem em termos de tensões 0V (nível baixo) 
ou 5V (nível alto) 
PORTAS ANALÓGICAS 
O Arduino Uno tem 06 portas digitais nomeadas de A0 a A5 e são apenas de entrada de dados. 
As portas analógicas (digitais que se transformam) podem receber sinais com tensões entre 0 
(zero) e 5 (cinco) Volts e através de um conversor analógico digital (ADC) converter em byte com 
10 bits 
PORTAS PWM 
O Arduino Uno tem 06 portas digitais do tipo PWM. São elas: 3, 5, 6, 9, 10 e 11. estas portas 
podem modular a largura do pulso digital e com isso conseguem simular uma saída analógica 
entre 0 e 5V. 
Elas controlam a potência de motores, brilho etc. 
IDE ARDUINO 
O ambiente de programação no Arduino (IDE) é muito semelhante a linguagem C. A medida que 
as montagens e projetos forem sendo realizados vamos aprendendo como usar esse ambiente 
de programação. Os arquivos de programação no Arduino são denominados de sketch. 
PROGRAMAÇÃO EM ARDUINO 
INICIAL → declarar variáveis globais e 
Bibliotecas 
VOID SETUP → organizar e configurar 
VOID LOOP → executar indefinidamente 
 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 7 de 278 
DIODO EMISSOR DE LUZ - LED 
 
FÓRMULA PARA CALCULAR O RESISTOR ADEQUADO PARA UM LED 
𝑹 = 𝑽𝒂𝒍𝒊𝒎𝒆𝒏𝒕𝒂çã𝒐 − 𝑽𝒍𝒆𝒅/𝑰 
R é a resistência em ohms do resistor adequado para o LED, isso é o que vamos descobrir. 
Valimentação é a tensão em volts da fonte de alimentação que iremos usar no LED. 
Vled é a tensão em volts do LED. 
I é a corrente do LED em amperes 
CALCULO DO RESISTOR ADEQUADO PARA UM LED 
Temos um LED difuso de 5mm de cor vermelha, com corrente igual a 20mA, a tensão igual a 2 
volts e o circuito será alimentado com 5 volts. 
A primeira coisa que devemos fazer é converter os 20mA (miliamperes) do LED para amperes 
que dariam 0,02 A (amperes). Agora substituir os valores na fórmula: 
R = (5 - 2) / 0,02 
R = 3 / 0,02 
R = 150 ohm 
Segundo a fórmula o resistor adequado é de 150 ohms. Mas é comum que não encontremos um 
resistor exatamente com a resistência apontada pela fórmula. Neste caso devemos usar um 
resistor com a resistência maior mais próxima do resultado encontrado. Por exemplo nesse caso 
podemos usar um resistor de 220 ohms. 
SIMULADOR ONLINE – TINKERCARD.COM 
Podemos simular um Projeto mesmo antes de utilizar o kit de robótica Arduino. A Autodesk 
criou um simulador Arduino gratuito que dispensa instalação, chamado 
AUTODESK®TINKERCAD ™ que roda direto no navegador. 
Acesse o Endereço - https://www.tinkercad.com/circuits , faça o REGISTRO. 
 
 
https://www.tinkercad.com/
https://www.tinkercad.com/
https://www.tinkercad.com/
https://www.tinkercad.com/circuits
https://www.tinkercad.com/circuits
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 8 de 278 
TELA INICIAL 
 
Na página inicial Design Learning, encontraremos a Galeria onde podemos acessar a projetos 
prontos, Aprenda com aulas explicativas, Entrar e INSCREVER-SE. 
Primeiramente Crie uma conta clicando no botão INSCREVER-SE. 
O Autodesk Tinkercad 3D Circuits é um simulador de circuitos eletrônicos, que simula diversos 
componentes que podem ser montados e simulados em uma protoboard de laboratório. 
Depois de Inscrever-se e clicar em Entrar, clique na opção Circuits, localizada do lado esquerdo 
da janela. Caso não seja a primeira vez, você terá acesso a todas as suas simulações, podendo 
editá-las. 
Para iniciar um novo projeto clique em CRIAR NOVO CIRCUITO. Aparecerá uma página em 
branco e no lado direito da janela alguns Componentes que usaremos nos nossos projetos. 
O Tinkercad é extremamente simples e possui uma interface gráfica simples. A partir da tela 
inicial, podemos acessar a Galeria com projetos prontos, Rotacionar nosso projeto, Excluir algum 
elemento que não estejamos usando, Centralizar a tela e também possui os botões “Refazer” e 
“Desfazer” bem comum no Pacote Office. 
Botão Rotacional - gira o elemento selecionado em 25 graus. 
Botão Excluir ou Deletar - como o próprio nome já diz, elimina da tela o item selecionado. 
Botão Zoom to Fit - funciona como um centralizador, caso se perca no seu design ou apenas 
deseje retornar para o centro do projeto rapidamente, clique neste botão. 
Botões Desfazer e Refazer - com o famoso atalho CTRL+Z do Pacote Office da Microsoft, no 
circuits.io não é diferente possuem a mesma função, desfazem a última ação e a refazem se 
necessário. 
Botão CODIGO (Editor) - esse botão é aonde será digitado o código em C que será usado no 
Arduino para que ele mostre a tela de edição. Obrigatoriamente temos que ter um Arduino no 
projeto (área de trabalho) caso contrário ele irá mostrar uma mensagem de erro. 
Nesta opção temos: 
BAIXAR CÓDIGO (SCHETCH) - salvar a compilação no micro para ser usado na IDE Arduino; 
BIBLIOTECAS – utilizar algumas bibliotecas existentes; 
DEPURADOR – soluções de erros. 
Botão INICIAR SIMULAÇÃO – onde iniciamos e paramos a simulação. 
Também funciona como um compilador caso esteja usando um Arduino, E é possível adicionar 
componentes eletrônicos e iniciar simulações. 
Para montar um novo projeto, clique e selecione o Componente e depois clique posicionando na 
Área em branco. O desenho dos Jumpers e automático, basta ligar os pinos na Protoboard e 
Arduino. 
Podemos modificar o valor do Resistor e Cor do LED. 
Ao finalizar um projeto, clique no quadradinho colorido (TINKERCAD) localizado na parte 
superior esquerda da janela. E para voltar a editá-lo, clique nele e depois no botão EDITAR ISTO. 
Temos também o FRITZING que precisa ser instalado no PC. Podemos encontrá-lo no endereço: 
http://fritzing.org/ 
 
https://www.tinkercad.com/learn/designs
http://fritzing.org/
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 9 de 278 
EXEMPLO DE COMPONENTES ELETRÔNICOS DE ENTRADA E SAÍDA 
ENTRADA – funciona através da inserção de dados por meio de ação externa (manuseio, luz, 
movimento, código ou programa). 
 
SAÍDA – visualização, obtenção de dados ou retorno de dados, como resultado de alguma 
operação de alguma entrada. 
 
 
Saída 
Modulo laser KY-008 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 10 de 278 
ENTENDENDO PROGRAMAÇÃO NO ARDUINO 
Arduino se programa em uma linguagem de alto nível semelhante a C/C++ e geralmente tem os 
seguintes componentes para elaborar o algoritmo: 
- Estruturas, 
– Variáveis, 
- Operadores booleanos, de comparação e aritméticos, 
- Estrutura de controle, 
- Funções digitais e analógicas. 
ESTRUTURAS 
São duas funções principais que deve ter todo programa em Arduino. A função setup() é 
chamada quando um programa começa a rodar. Usamos esta função para inicializar as nossas 
variáveis, os modos dos pinos, declarar o uso de livrarias, etc. Esta função será executada apenas 
uma vez após a placa Arduino ser ligada ou ressetada. 
setup(){ 
} 
Após criar uma função setup() que declara os valores iniciais, a função loop() faz exatamente o 
que seu nome sugere, entra em looping (executa sempre o mesmo bloco de código), permitindo 
ao seu programa fazermudanças e responder. Usamos esta função para controlar ativamente a 
placa Arduino. 
loop(){ 
} 
VARIÁVEIS 
Variáveis são expressões que você pode usar em programas para armazenar valores como a 
leitura de um sensor em um pino analógico. Aqui destacamos algumas: 
- Variáveis Booleanas 
Variáveis boolenas, assim chamadas em homenagem a George Boole, podem ter apenas dois 
valores: verdadeiro ( true ) e falso ( false ). 
boolean running = false; 
- Int 
Inteiro é o principal tipo de dado para armazenamento numérico capaz de guardar números de 2 
bytes. Isto abrange a faixa de -32.768 a 32.767 (valor mínimo de -2^15 e valor máximo de (2^15) 
-1). 
int ledPin = 13; 
- Char 
Um tipo de dado que ocupa 1 byte de memória e armazena o valor de um caractere ASCII. 
Caracteres literais são escritos entre aspas. 
char myChar = ‘A’; 
OPERADORES BOOLEANOS 
Estes operadores podem ser usados dentro da condição em uma sentença if. 
- && (“e” lógico) 
Verdadeiro apenas se os dois operandos forem verdadeiros, ou seja, a primeira condição e a 
segunda forem verdadeiras. Exemplo: 
if (digitalRead(2) == 1 && digitalRead(3) == 1) { //ler dois interruptores 
} 
é verdadeiro apenas se os dois interruptores estiverem fechados. 
- || (“ou” lógico) 
Verdadeiro se algum dos operandos for verdadeiro, ou seja, se a primeira ou a segunda condição 
for verdadeira. Exemplo: 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 11 de 278 
if (x > 0 || y > 0) { 
 // ... 
} 
é verdadeiro apenas se x ou y forem maiores que 0. 
- ! (negação) 
Verdadeiro apenas se o operando for falso. Exemplo: 
if (!x) { 
 // ... 
} 
é verdadeiro apenas se x for falso (ou seja, se x for igual a 0). 
OPERADORES DE COMPARAÇÃO 
if, que é usado juntamente com um operador de comparação, verifica quando uma condição é 
satisfeita, como por exemplo um input acima de um determinado valor. O formato para uma 
verificação if é: 
if (algumaVariavel > 50) 
{ 
 //faça alguma coisa 
} 
O programa checa se alguma Variavel (colocar acentos em nomes de variáveis não é uma boa 
idéia) é maior que 50. Se for, o programa realiza uma ação específica. Colocado de outra 
maneira, se a sentença que está dentro dos parêntesis é verdadeira o código que está dentro 
das chaves roda; caso contrário o programa salta este bloco de código. 
As chaves podem ser omitidas após uma sentença if se só houver uma única linha de código 
(definida pelo ponto e vírgula) que será executado de modo condicional: 
if (x > 120) digitalWrite(LEDpin, HIGH); 
if (x > 120) 
digitalWrite(LEDpin, HIGH); 
if (x > 120) {digitalWrite(LEDpin, HIGH);} //todos são corretos 
A sentença que está sendo verificada necessita o uso de pelo menos um dos operadores de 
comparação: 
x == y (x é igual a y) 
x != y (x é não igual a y) 
x < y (x é menor que y) 
x > y (x é maior que y) 
x <= y (x é menor ou igual a y) 
x >= y (x é maior ou igual a y) 
OPERADORES ARITMÉTICOS 
Se aplicam no uso de variáveis. 
= (igualdade) 
+ (adição) 
- (subtração) 
* (multiplicação) 
/ (divisão) 
% (resto da divisão) 
ESTRUTURAS DE CONTROLE 
São instruções que permitem decidir e realizar diversas repetições de acordo com alguns 
parâmetros. Entre os mais importantes podemos destacar: 
- Switch/case 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 12 de 278 
Do mesmo modo que as sentenças if, as switch/case controlam o fluxo dos programas. 
Switch/case permite ao programador construir uma lista de “casos” dentro de um bloco 
delimitado por chaves. O programa checa cada caso com a variável de teste e executa o código 
se encontrar um valor idêntico. 
switch (var) { 
 case 1: //faça alguma coisa quando var == 1 
 case 2: //faça alguma coisa quando var == 2 
 default: //se nenhum valor for idêntico, faça o default, é opcional 
} 
- While 
While fará com que o bloco de código entre chaves se repita contínua e indefinidamente até que 
a expressão entre parentesis () se torne falsa. Algo tem que provocar uma mudança no valor da 
variável que está sendo verificada ou o código vai sempre ficar dando voltas dentro do while. 
Isto poderia ser o incremento de uma variável ou uma condição externa, como o teste de um 
sensor. 
var = 0; 
while(var < 200){ //algum código que se repete 200 vezes 
 var++; 
} 
- for 
A sentença for é utilizada para repetir um bloco de código delimitado por chaves. Um contador 
com incremento normalmente é usado para controlar e finalizar o loop. A sentença for é útil 
para qualquer operação repetitiva, e é frequentemente usada com arrays para operar em 
conjuntos de dados ou de pinos. 
//aumentar o brilho de um LED usando um pino PWM 
int PWMpin = 13; //um LED no pino 13 
void setup() 
{ 
 //nenhum setup é necessário (quando em branco) 
} 
void loop() 
{ 
for (int i=0; i <= 255; i++){ 
analogWrite(PWMpin, i); 
delay(10); 
} } 
FUNÇÕES DIGITAIS 
Orientadas a revisar o estado e a configuração das entradas e saídas digitais. 
- pinMode() 
Configura o pino especificado para que se comporte ou como uma entrada ( input ) ou uma 
saída (output). 
Sintaxe: 
pinMode(pin, mode) 
pinMode(9, OUTPUT); //determina o pino digital 9 como uma saída 
- digitalRead() 
Lê o valor de um pino digital especificado, HIGH ou LOW. 
Sintaxe: 
digitalRead(pin) 
buttonState = digitalRead(9); //leitura do estado de um botão no pino 9 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 13 de 278 
- digitalWrite() 
Escreve um valor HIGH ou um LOW em um pino digital. 
Sintaxe: 
digitalWrite(pin, valor) 
digitalWrite(9, HIGH); //coloca o pino 9 em estado HIGH 
FUNÇÕES ANALÓGICAS 
Ideais para a leitura ou escrita de valores analógicos. 
- analogRead() 
Lê o valor de um pino analógico especificado. A placa Arduino contém um conversor analógico-
digital de 10 bits com 6 canais. Com isto ele pode mapear voltagens de entrada entre 0 e 5 volts 
para valores inteiros entre 0 e 1023. Isto permite uma resolução entre leituras de 5 volts / 1024 
unidades ou 0,0049 volts (4.9 mV) por unidade. 
Sintaxe: 
analogRead(pin) 
int a = analogRead (A0); //lê o valor do pino analógico A0 e armazena este na variável "a" 
- analogWrite() 
Escreve um valor analógico (onda PWM) em um pino. Pode ser usado para acender um LED 
variando o brilho ou girar um motor a velocidade variável. 
Sintaxe: 
analogWrite(pin, valor) 
analogWrite (9, 134); //envia o valor analógico 134 para o pino 9 
 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 14 de 278 
COMPOSIÇÃO BÁSICA DO KIT ROBÓTICA LIVRE COM ARDUINO 
MATERIAL IMAGEM QUANTIDADE 
Arduino UNO com Cabo USB AB 
 
02 
Case em agrílico para Arduino 
 
02 
Protoboard 840 pontos 
 
02 
Protoboard 400 pontos 
 
04 
Multímetro Digital 
 
01 
LED 5mm verde 10 
LED 5mm amarelo 10 
LED 5mm azul 
 
10 
LED 5mm vermelho 10 
LED 5mm branco 
 
10 
LED RGB Alto Brilho 5mm 05 
Resistor 100Ω 1/4W 10 
Resistor 150Ω 1/4W 10 
Resistor 220Ω 1/4W 30 
Resistor 330Ω 1/4W 10 
Resistor 470Ω 1/4W 20 
Resistor 1kΩ 1/4W 10 
Resistor 4k7Ω 1/4W 10 
Resistor 10kΩ 1/4W 10 
Resistor 15kΩ 1/4W 10 
Resistor 47kΩ 1/4W 10 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 15 de 278 
MATERIAL IMAGEM QUANTIDADE 
Display LCD Keypad Shield 16x02 com 
Teclado 
 
01 
Display LCD 2x16 com conector soldado 
(com Backlight) 
 
01 
Display 7 segmentos 1 Dígito 
 
02 
Trena de Aço 5m 
 
01 
Módulo Sensor Fotossensível Detecção 
de Luz LDR 
 
01 
Potênciometro 10k ou 1MΩ com knob 
 
10 
Chave Táctil Push Button 12x12x7.5 mm 
 
10 
Sensor Sonda de Temperatura A Prova 
D’Água DS18B20 
 
01 
Sensor de Temperatura e Umidade 
 
01 
Micro Motor Servo 9g 
 
02 
Módulo Sensor Detector de Som 
 
01 
Sensor Hall 49E 
 
01 
Sensor Ultrassônico HCSR04 
 
02 
Equipe do Núcleo de TecnológicaEducacional de Paulista Página 16 de 278 
MATERIAL IMAGEM QUANTIDADE 
Buzzer 5V ativo (atuador piezoelétrico) 
 
03 
LDR 
 
01 
Sensor de Movimento PIR 
 
02 
Fita isolante 
 
01 
Módulo Sensor Reflexivo 
(infravermelho) 
 
02 
Kit Braço robótico MDF c/04 Servos 
motor 9g 
 
01 
Capacitor 1000µF - 16V 
 
01 
Chave Gangorra Liga/Desliga 
 
01 
Kit Chassi 2WD Carro Robô 
 
01 
Bateria de 3.7V ou 4.2V (recarregável) 
 
04 
Suporte para bateria de 3.7 ou 4.2V 
 
02 
Carregador de Baterias de Lítio 18650 
3.7V ou 4.2V 
 
01 
Kit Controle Remoto IR 
 
01 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 17 de 278 
MATERIAL IMAGEM QUANTIDADE 
Bluetooth HC-06 
 
02 
Motor Drive Ponte H-L298 
 
01 
Motor DC 6V com jumpers soldados 
 
01 
Jumpers Macho x Macho 
 
40 
Jumpers Macho x Femea 
 
20 
Computador para programação do 
Arduino 
 
01 
Caixa organizadora 
 
01 
Apostila Robótica Livre com Arduino 
 
01 
OPCIONAL 
MATERIAL IMAGEM QUANTIDADE 
Kit Arduino Robótica (Kit Chassis 2WD e 
Braço Robótico) 
 
01 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 18 de 278 
ATIVIDADES E DESAFIOS 
Desenvolvemos uma sequência de PROJETOS e DESAFIOS que abordarão os conceitos de 
entradas e saídas digitais e analógicas e o uso de dispositivos sensores e atuadores. 
ATIVIDADE 1 – ACENDER O LED DO PINO 13 
Essa é a experiência mais básica que se pode fazer com o Arduino, por isso considera-se que seja 
o “Hello World” (“Olá Mundo!”). A ideia aqui é conhecer o Arduino, seu Ambiente de 
Programação e sua linguagem de programação na prática. 
O Arduino possui integrado ao seu pino digital 13 um LED que pode ser controlado bastando 
enviar o sinal alto (HIGH) para acendê-lo, ou sinal baixo (LOW) para apagá-lo, e é exatamente o 
que faremos. 
Material necessário 
01 Arduino UNO 
 
 
 
 
Opções de Montagem do Projeto 
Programação (Sketch) 
void setup() { 
pinMode(13, OUTPUT); } //Definir pino como saída 
void loop() { 
digitalWrite(13, HIGH); //Colocar nível 1 (nível lógico alto) no pino (liga o LED) 
} 
Entendendo o Código 
Configuracao(){ 
Pino.definirModo(pinoLed, Saida); } 
Principal() { 
Pino.ligar(Digital.pinoLed); 
} 
O que foi feito 
Na função setup(), ajustamos o modo de operação do pino digital 13 do Arduino para saída 
usando o comando pinMode(13,OUTPUT). Dessa forma, poderemos colocar ou não tensão nele 
usando as constantes HIGH e LOW. 
Na função loop(), que é executada infinitamente enquanto o Arduino estiver ligado, como já 
vimos anteriormente, usamos o comando digitalWrite(13,HIGH) para indicar que haverá saída de 
tensão positiva de 5V (HIGH) pelo pino digital 13 do Arduino. 
Resultado esperado 
Após fazer upload para o Arduino, o programa fará com que o LED do pino digital 13 permaneça 
aceso o tempo todo. 
Muito bom, nós acabamos de verificar como um programa para Arduino deve funcionar. 
Primeiro, a função setup() entra em ação, é executada apenas uma vez logo que o Arduino é 
ligado. Em seguida, é a vez da função loop(), que ficará rodando em quanto o Arduino estiver 
ligado. 
Antes de tentarmos uma segunda experiência, dessa vez fazendo com que o LED do pino digital 
13 mude de estado, vamos aprender a utilizar a protoboard. 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 19 de 278 
ATIVIDADE 2 – MONTANDO UM CIRCUITO NA PROTOBOARD 
Para entender como usar a protoboard, precisamos de um exemplo prático. Para isso 
montaremos um circuito simples para acender um LED. 
Material necessário: 
01 Fonte de Alimentação (Arduino UNO ou Bateria de 5V), 01 LED Difuso, 01 Resistor de 220 
ohms, 01 Chave momentânea (push button), Jumpers, Protoboard. 
Montando o Circuito 
O circuito que vamos montar é bem simples, ele tem como função deixar um LED ligado. Não é 
necessário programação, utilizaremos o Arduino ou uma fonte externa para alimentação. 
Na protoboard esse circuito ficará da seguinte forma. 
 
Entendendo a fundo 
Vamos seguir esse circuito passo a passo a montagem do circuito na protoboard: 
– Definindo os barramentos de Alimentação 
Primeiro vamos definir os barramentos que irão receber os pinos de alimentação. Em geral 
usamos um barramento de baixo(vermelho) para alimentação positiva e um barramento de cima 
(azul ou preto) para o GND (referência). 
É importante que só se ligue a energia nesses barramentos depois que o circuito estiver pronto. 
Ou seja, definimos o barramento que será usado, mas ainda não conectaremos nele os fios da 
fonte externa de tensão. Por isso iremos desconsiderar a fonte de alimentação. 
– Conectando o resistor 
O próximo passo é conectar o resistor. Para montagem do circuito é usual usar os barramentos 
verticais. Dessa forma, conectamos uma das pernas em um barramento (B) e a outra perna em 
outro (C). 
Como uma das pernas do resistor estará conectada a fonte de alimentação positiva, precisamos 
colocar um jumper entre o barramento do resistor (B) e da fonte (A). 
– Conectando o LED 
Agora vamos conectar o LED. Como ele tem uma de suas pernas conectadas à uma das pernas 
do resistor (maior “+”), vamos colocar essa primeira perna no barramento (C) e a outra perna 
(menor “-“)no barramento (D). 
OBS.: Ao usar um LED você deve se atentar para o posicionamento correto dele. A corrente deve 
fluir da maior perna para a menor. Para nosso experimento a maior perna do LED fica conectada 
ao resistor, a menor irá se conectar à chave momentânea. 
– Conectando a chave momentânea 
Agora precisamos conectar a chave momentânea. Para isso iremos colocá-la entre os 
barramentos verticais superiores e inferiores. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 20 de 278 
Como uma das pernas da chave está conectada ao LED, vamos colocar essa perna no 
barramento (D). 
Aqui, também precisamos colocar um fio jumper indo da chave momentânea (E) para o 
barramento de referência (F). 
– Ligando a fonte externa 
Agora que nosso circuito está montado, basta ligar a fonte de alimentação externa com 5V. 
Essa fonte de energia pode ser oriunda dos pinos de alimentação 5V e GND de um Arduino UNO 
por exemplo. Você também poderá usar um conjunto em série de 6 Pilhas AA 1,5V, que 
totalizará 6V. 
Por fim teremos o seguinte circuito. Em preto, destacamos por onde a corrente está sendo 
conduzida através dos barramentos metálicos da matriz de contato. 
 
DICA 
Ao usar o protoboard, nós costumamos dividir o circuito em nós, denominando cada um com 
uma letra e depois considerando que cada nó é um barramento do protoboard. 
Nó, em circuitos elétricos, nada mais é que um ponto comum de interligação de dois ou mais 
componentes. 
Veja que no exemplo anterior dividimos o circuito em vários nós e o denominamos com letras. 
Ao transferir para protoboard, cada nó assumiu seu próprio barramento. 
Considerações finais 
Nesse projeto vimos como é organizada uma protoboard e como montar um circuito simples 
nela. Agora que você entende como usá-la, você poderá trabalhar em seus projetos com mais 
autonomia. 
 
 
 
 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 21 de 278 
ATIVIDADE 03 - HELLO WORLD – PISCAR (CONTROLE DE UM LED) 
O objetivo deste projeto é utilizar uma porta digital do Arduino para controlar o funcionamento 
de um Diodo Emissor de Luz (LED). Um nível 1 (HIGH) colocado no pino irá acender o LED, 
enquanto um nível 0 (LOW) vai apagar o LED. 
Consiste em uma continuação do projeto anterior, onde conseguimos ligar o LED do pino digital 
13. Agora, vamos desligá-lo também a cada período de tempo que definiremos na programação. 
Com isso, o LED piscará. 
Quando estamos aprendendo a programar, na maioria das linguagens de programação, o 
primeiro código que aprendemos é escreve “Hello World” na tela do computador. Como a placa 
Arduino não tem uma tela substituiremos esta função fazendo piscar um LED. 
O que Vamos Aprender? 
- Cabear um circuito 
- Ativar uma saída digital 
- Acenderum LED em ON/OFF 
- Temporizar um sinal de saída 
- Sintaxe de um programa Arduino 
Conhecimentos Prévios 
- Sinal digital 
- Função digitalWrite() 
- Polaridade de um LED 
- Conexão da placa Arduino com o computador. 
Materiais necessários 
Não há necessidade de qualquer componente exceto o próprio Arduino, mas para fixar bem, 
iremos utilizar alguns componentes externos, como: 01 Arduino UNO, 01 Resistor de 220 ohms 
(vermelho, vermelho, marrom) ou 330 ohms (laranja, laranja, marrom), 01 LED (qualquer cor), 
Jumpers, Protoboard. 
Passo 1: Opções de Montagem do Projeto 
 
Este código já vem junto com a IDE do Arduino. Você pode acessar em: Arquivo >> Exemplos >> 
01.Basics >> Blink. Estamos apenas reproduzido aqui com explicações e comentários. 
Observe os diagramas acima e de acordo com o modelo de protoboard que estiver usando: 
a) Conecte o pino GND do Arduino à linha de alimentação negativa (preta ou azul) da 
protoboard. 
b) Coloque o resistor de 220 ohms (ou 330 ohms) entre a linha de alimentação negativa e 
qualquer outra linha da protoboard. 
c) Coloque o LED com o Cátodo (lado chanfrado “negativo”) conectado ao resistor. 
d) Conecte o Ânodo (pino maior “positivo”) do LED ao pino 13 do Arduino. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 22 de 278 
 
Passo 2: Programa (Sketch) 
Inicie o ambiente de desenvolvimento do Arduino e digite o sketch (programa) a seguir: 
int ledPin = 13; //Porta onde o LED foi conectado (declarar variável do tipo inteiro “global”) 
void setup() { //Declara a função setup 
pinMode(ledPin, OUTPUT); } //Configura pino como saída 
void loop() { //Declara a função loop 
digitalWrite(ledPin, HIGH); //Escreve o nível 1 no pino – valor lógico Alto (liga o LED) 
delay(2000); //Aguarda por 2 segundos 
digitalWrite(ledPin, LOW); //Escreve o nível 0 no pino – valor lógico Baixo (apaga o LED) 
delay(2000); //Pausa de 2s 
} //Fecha a função loop 
Passo 3: Entendimento do Código 
Primeiramente devemos observar o que são e como são feitos os comentários em um código de 
linguagem C. 
Para fazer um comentário que irá se desenvolver por mais de 1 linha, devemos usar os 
caracteres: 
/* para começar um comentário de mais de 1 linha 
*/ para finalizar os comentários que foram feitos anteriormente 
Para fazer um comentário em 1 linha apenas, podemos utilizar: 
// para fazer um comentário de apenas 1 linha 
Vamos agora entender a estrutura dos programas. No início de todos os programas uma ordem 
deve ser respeitada: 
1. Estrutura de Inclusão de Bibliotecas 
2. Estrutura de Declaração de Variáveis 
3. Estrutura Setup 
4. Estrutura Loop 
5. Demais estruturas de funções 
O que são estas 5 estruturas citadas acima? 
1. Se pensarmos em fazer algum projeto mirabolante, podemos ter certeza que há 90% de 
chances de alguém já o ter feito. Desta forma, quando alguém já o fez, é bem provável que 
este alguém, em qualquer parte do mundo, já tenha escrito toda uma biblioteca para fazer 
o tal projeto. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 23 de 278 
2. Declaração das Variáveis: 
int ledPin = 13; //LED conectado na porta digital 13 
int: variável do tipo inteira. 
ledPin = 13; : nome da variável. Neste caso, como o próprio nome diz, temos que a variável 
PINO DO LED vale 13. 
//LED conectado na porta digital 13: comentário dizendo que existe um LED conectado ao 
pino digital de número 13. 
3. Vamos olhar a estrutura Setup: 
void setup() { //função configuração 
pinMode(ledPin, OUTPUT); //inicialize a porta digital como SAÍDA 
} 
A palavra reservada void é usada em declarações de funções. Este tipo indica que a função 
não retorna nenhum valor quando é executada. 
void setup() { : Declaração que irá começar o Setup do programa. Sempre aberto com 
uma “{“ e fechada, no fim da declaração, por uma “}”. 
//inicialize a porta digital como SAÍDA: Comentário dizendo que o pino digital será 
inicializado como uma saída 
pinMode(ledPin, OUTPUT); : Escolha do modo do pino, se é entrada (INPUT) ou saída 
(OUTPUT). 
Como neste caso queremos acender um LED, a corrente elétrica irá sair do pino e não entrar. 
Logo, setamos o ledPin (que tinha o valor 13, por causa do pino digital 13) como saída. 
4. Por fim, iremos analisar a estrutura Loop: 
void loop() { 
digitalWrite(ledPin, HIGH); //liga o LED 
delay(2000); //aguarda por 2 segundos 
digitalWrite(ledPin, LOW); //apaga o LED 
delay(2000); //aguarda por 2s 
} 
void loop() : De modo análogo ao setup, com o comando ao lado dizemos que irá começar 
o loop do programa, ou seja, o programa principal que ficará rodando por tempo 
indeterminado. Também é aberto com uma “{“ e fechado com uma “}”. 
digitalWrite(ledPin, HIGH); //liga o LED: Escrita digital. Por tratar-se de um pino digital, 
teremos nível lógico 1 ou nível lógico 0, no caso de um LED, ou teremos LED acesso (1) ou 
teremos LED apagado (0). O comando então liga o LED, ou seja, envia 1 para o pino 13. 
delay(2000); //aguardar por 2s: Delay é mais uma função pronta do Arduino. O número 
que for inserido entre os parêntesis será o valor, em milissegundos, que o Arduino irá 
esperar para seguir para a próxima instrução. No caso, temos um delay de 2000 
milissegundos, ou seja, uma espera de 2 segundos para executar a próxima instrução. 
digitalWrite(ledPin, LOW); //apagar o LED 
delay(2000); //aguardar por 2s: Estes dois comandos são análogos aos dois vistos 
anteriormente, com a única diferença que a escrita digital escreverá um 0 no pino do LED, 
ou seja, um nível lógico baixo: o LED apagará e o Arduino espera 2 segundos para fazer a 
próxima instrução que, no caso, volta a ser o digitalWrite(ledPin, HIGH); 
Analisando melhor o código 
//Piscar – comentário com o nome do projeto 
//Primeiramente iremos estabelecer um nome para a variável do tipo (Número) com o 
nome (ledPin) para armazenar o número do pino em que conectamos o LED 
Numero pinoLed = 13; 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 24 de 278 
//A função de configuração é obrigatória a todo projeto e é responsável por preparar o 
necessário para a execução da função Principal(). Neste caso, ela possui apenas uma 
instrução em seu bloco de código 
Configuracao(){ 
//Essa linha define o modo do pinoLed, que possui o valor 13, como (Saída), ou seja, o 
Arduino irá emitir uma corrente elétrica de 0 ou 5V. O método definirModo do conjunto 
Pino tem como argumentos o número do pino e o modo, que pode ser ENTRADA ou, como 
neste caso, SAÍDA. Depois de executar a configuração o Arduino inicia o método Principal(). 
Pino.definirModo(pinoLed, Saida); } 
//A função (Principal) é o segundo método obrigatório a todo projeto e será repetido 
enquanto o Arduino estiver ligado. 
Principal(){ 
//O método ligar do conjunto Pino liga o pino fornecido como argumento, no caso 
Digital.pinoLed. A indicação “Digital.” antes de nossa variável avisa para o Arduino que 
estamos utilizando um pino digital. Quando ligamos uma porta enviamos 5V para ela e 
quando desligamos enviamos 0V. 
Pino.ligar(Digital.pinoLed); 
//A função esperar é um método Arduino que faz uma “pausa” na execução do código 
durante o número de milissegundos indicados entre os parênteses, no caso 2000, que 
equivale a 2 segundos. Depois de esperar o tempo definido o Arduino executa a próxima 
linha: 
esperar(2000); 
//Se a função ligar fazia com que o pino ligasse, o método desligar faz o contrário, desliga o 
pino. Ou seja, essa linha irá enviar 0V pelo pino digital pinoLed, fazendo o LED apagar. 
Depois disso o código apresenta outra espera de dois segundos e reinicia o método 
Principal(), repetindo-o enquanto o Arduino permanecer ligado. 
Pino.desligar(Digital.pinoLed); 
esperar(2000); 
} 
Passo 4: Compilação e transferência do programa para o ArduinoDepois de entender o programa, podemos salvar o sketch (programa), e fazer a Compilação. Em 
seguida, conectar o Arduino à porta USB do computador. Para finalizar, pressionamos o botão 
Carregar (Transferir) para fazer a transferência (Upload) do sketch para o Arduino. 
Resultado esperado 
Após fazer upload para o Arduino, o programa fará com que o LED do pino digital 13 permaneça 
acesso por dois segundos e apagados também por dois segundos. 
A seguir, veremos as constantes que utilizamos no código-fonte dessas desses dois primeiros 
projetos: 
HIGH – indica que no pino no modo saída apresentará uma tensão acima de 3 volts para 
referência de 5 volts e acima de 2 volts para referência de 3,3 volts. Caso o pino esteja no 
modo entrada, ele poderá receber como leitura as mesmas tensões de saída. 
LOW – indica que no pino no modo saída apresentará uma tensão abaixo de 3 volts para 
referência de 5 volts e abaixo de 2 volts para referência de 3,3 volts. Caso o pino esteja no 
modo entrada, ele poderá receber como leitura as mesmas tensões de saída. 
INPUT – indica que o pino será utilizado como entrada. Ou seja, poderá realizar uma leitura 
de tensão. 
OUTPUT – indica que o pino será utilizado como saída. Ou seja, apresentará uma tensão de 
saída. 
LEDPIN – substitui o valor do pino onde o LED integrado está presente. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 25 de 278 
Entre desligar e ligar precisamos de tempo suficiente para que uma pessoa veja a diferença, 
então o comando delay() informa o Arduino não fazer nada durante 1000 milissegundos, ou um 
segundo. Quando usarmos o comando delay(), nada mais acontece neste período de tempo. 
Uma vez entendido os exemplos básicos, verifique também o exemplo Piscar sem delay para 
aprender como criar um delay enquanto faz outras funções. 
Código Fonte (sketch) 
/* Piscar 
Acende um LED por um segundo, e depois apaga pelo mesmo tempo, repetidamente. */ 
int ledPin = 13; //estabelece um nome para o pino 13 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(ledPin, OUTPUT); //inicializa o pino digital como saída 
} 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(ledPin, HIGH); //liga o LED 
delay(2000); //aguarda um segundo (2s = 2000ms) 
digitalWrite(ledPin, LOW); //desliga o LED 
delay(2000); //aguarda um segundo (2s = 2000ms) 
} 
DICA 
1 - Na linguagem Arduino // se utiliza para acrescentar comentários na linha de código, sendo 
muito útil para explicar uma sintaxe ou deixar um lembrete. Um exemplo utilizado por nós: 
digitalWrite(ledPin,LOW); //apaga o LED 
2 - Os sinais digitais (Aceso e Apagado) estão presentes em muitos sensores. Conheça alguns 
deles: 
 
FONTE: 
https://edisciplinas.usp.br/pluginfile.php/3252633/mod_resource/content/1/Guia_Arduino_Iniciante_Mu
ltilogica_Shop.pdf 
 
https://edisciplinas.usp.br/pluginfile.php/3252633/mod_resource/content/1/Guia_Arduino_Iniciante_Multilogica_Shop.pdf
https://edisciplinas.usp.br/pluginfile.php/3252633/mod_resource/content/1/Guia_Arduino_Iniciante_Multilogica_Shop.pdf
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 26 de 278 
EXERCÍCIO 01 (ATIVIDADE 03) 
A partir do código fonte apresentado nesta atividade, faça as modificações necessárias para que 
o LED fique: 
- 3 segundos aceso e 3 segundos apagado 
- 200 milissegundos aceso e 500 milissegundos apagado 
EXERCÍCIO 02 (ATIVIDADE 03) 
A partir do mesmo código fonte faça uma nova montagem deste exercício e faça as modificações 
necessárias no código fonte para que o LED seja colocado no Pino 5, e fique 2 segundos aceso e 
1 segundo apagado. 
 
Note que para qualquer pino que não seja o 13 é necessário colocar um resistor em série com o 
LED. Neste caso um resistor de 220Ω ou 330Ω é suficiente. 
 
DESAFIO 1 - - HELLO WORLD – PISCAR 
(1) Altere o código fonte para que o LED pisque a cada 03 segundos e fique 01 segundo 
desligado. 
(2) Acrescente um LED (LED2) e um resistor a porta 12 do circuito. 
a. Faça que o LED2 pisque junto com o LED1; 
b. Alterne o acendimento dos LEDs 1 e 2 (enquanto o 1º estiver acesso o 2º deve ficar 
apagado); 
(3) Faça 03 LEDs ligarem em sequência; 
(4) Faça uma simulação de um cruzamento de trânsito, utilizando os LEDs de cor vermelha, 
verde e amarelo. 
 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 27 de 278 
RESPOSTA DO EXERCÍCIO 01 - HELLO WORLD – PISCAR (ATIVIDADE 03) 
A partir do código fonte apresentado nesta atividade, faça as modificações necessárias para que 
o LED fique: 
- 3 segundos aceso e 3 segundos apagado 
- 200 milissegundos aceso e 500 milissegundos apagado 
Diagrama 
 
Códico Fonte (sketch) 
int LED = 13; //estabelece um nome para o pino 13 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED, OUTPUT); //inicializa o pino digital como saída 
} 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED, HIGH); //acende o LED – (pino e estado) 
delay(3000); //aguarda um segundo (3s = 3000ms) 
digitalWrite(LED, LOW); //apaga o LED – (pino e estado) 
delay(3000); //aguarda um segundo (3s = 3000ms) 
} 
RESPOSTA DO EXERCÍCIO 02 - HELLO WORLD – PISCAR (ATIVIDADE 03) 
A partir do mesmo código fonte faça uma nova montagem deste exercício e faça as modificações 
necessárias no código fonte para que o LED seja colocado no Pino 5, e fique 2 segundos aceso e 
1 segundo apagado. 
Diagrama 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 28 de 278 
Códico Fonte (sketch) 
int LED = 5; //estabelece um nome para o pino 13 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED, OUTPUT); //inicializa o pino digital como saída 
} 
//A funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED, HIGH); //acende o LED – (pino e estado) 
delay(2000); //aguarda um segundo (2s = 2000ms) 
digitalWrite(LED, LOW); //apaga o LED 
delay(1000); //aguarda um segundo (1s = 1000ms) 
} 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 29 de 278 
RESPOSTA DO DESAFIO 1 - HELLO WORLD – PISCAR (ATIVIDADE 03) 
(1) Altere o código fonte para que o LED pisque a cada 03 segundos e fique 01 segundo 
desligado. 
(2) Acrescente um LED (LED2) e um resistor a porta 12 do circuito. 
a. Faça que o LED2 pisque junto com o LED1; 
b. Alterne o acendimento dos LEDs 1 e 2 (enquanto o 1º estiver acesso o 2º deve ficar 
apagado). 
(3) Faça 03 LEDs ligarem em sequência; 
(4) Faça uma simulação de um cruzamento de trânsito, utilizando os LEDs de cor vermelha, 
verde e amarelo. 
RESPOSTAS 
(1) Altere o código fonte para que o LED pisque a cada 03 segundos e fique 01 segundo 
desligado. 
Código Fonte (sketch) 
Acende um LED por três segundos, e depois apaga por um segundo, repetidamente. 
int LED = 13; //estabelece um nome para o pino 13 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED, OUTPUT); } //inicializa o pino digital como saída 
 //a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
 //ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED, HIGH); //acende o LED 
delay(3000); //aguarda um segundo (3s = 3000ms) 
digitalWrite(LED, LOW); //apaga o LED 
delay(1000);//aguarda um segundo (1s = 1000ms) 
} 
(2) Acrescente um LED (LED2) e um resistor a porta 12 do circuito. 
(a) Faça que o LED2 pisque junto com o LED1; 
Diagrama 
 
Código Fonte (sketch) 
//Acende dois LEDs por um segundo, e depois apaga pelo mesmo tempo, repetidamente. 
int LED1 = 13; //estabelece um nome para o pino 13 
int LED2 = 12; //estabelece um nome para o pino 12 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED1, OUTPUT); //inicializa o pino digital como saída 
pinMode(LED2, OUTPUT);} 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botao reset seja acionado. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 30 de 278 
void loop() { 
digitalWrite(LED1, HIGH); //acende o LED1 
digitalWrite(LED2, HIGH); //acende o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, LOW); //apaga o LED1 
digitalWrite(LED2, LOW); //apaga o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
} 
(b) Alterne o acendimento dos LEDs 1 e 2 (enquanto o 1º estiver acesso o 2º deve ficar 
apagado). 
Código Fonte (sketch) 
//Acende e apaga dois LEDs por um segundo, alternadamente, repetidamente. 
int LED1 = 13; //estabelece um nome para o pino 13 
int LED2 = 12; //estabelece um nome para o pino 12 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED1, OUTPUT); //inicializa o pino digital como saída 
pinMode(LED2, OUTPUT);} 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED1, HIGH); //acende o LED1 
digitalWrite(LED2, LOW); //apaga o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, LOW); //apaga o LED1 
digitalWrite(LED2, HIGH); //acende o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
} 
(3) Faça 03 LEDs ligarem em sequência; 
Diagrama 
 
PRIMEIRA OPÇÃO– LEDs acedem e apagam em sequencia, ficando só um aceso. 
Código Fonte (sketch) 
//Acende e apaga três LEDs por um segundo, alternadamente, repetidamente. 
int LED1 = 8; //estabelece um nome para o pino 8 
int LED2 = 12 //estabelece um nome para o pino 12 
int LED3 = 13; //estabelece um nome para o pino 13 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED1, OUTPUT); //inicializa os pinos digitais como saída 
pinMode(LED2, OUTPUT); 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 31 de 278 
pinMode(LED3, OUTPUT);} 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED1, HIGH); //acende o LED1 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, LOW); //apaga o LED1 
digitalWrite(LED2, HIGH); //acende o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED2, LOW); //apaga o LED2 
digitalWrite(LED3, HIGH); //acende o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED3, LOW); //apaga o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
} 
SEGUNDA OPÇÃO – LEDs acedem sucessivamente, em sequencia e ficam todos acesos. 
Código Fonte (sketch) 
//Acende e apaga três LEDs por um segundo, alternadamente, repetidamente. 
int LED1 = 8; //estabelece um nome para o pino 8 
int LED2 = 12; //estabelece um nome para o pino 12 
int LED3 = 13; //estabelece um nome para o pino 13 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED1, OUTPUT); //inicializa o pino digital como saída 
pinMode(LED2, OUTPUT); 
pinMode(LED3, OUTPUT);} 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED1, HIGH); //acende o LED1 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED2, HIGH); //acende o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED3, HIGH); //acende o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, LOW); //apaga o LED1 
digitalWrite(LED2, LOW); //apaga o LED2 
digitalWrite(LED3, LOW); //apaga o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
} 
TERCEIRA OPÇÃO – LEDs acedem sucessivamente indo e voltando. 
Código Fonte (sketch) 
//Acende e apaga três LEDs por um segundo, alternadamente, repetidamente. 
int LED1 = 8; //estabelece um nome para o pino 8 
int LED2 = 12; //estabelece um nome para o pino 12 
int LED3 = 13; //estabelece um nome para o pino 13 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED1, OUTPUT); //inicializa o pino digital como saída 
pinMode(LED2, OUTPUT); 
pinMode(LED3, OUTPUT);} 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 32 de 278 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED1, HIGH); //acende o LED1 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED2, HIGH); //acende o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED3, HIGH); //acende o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, LOW); //apaga o LED1 
digitalWrite(LED2, LOW); //apaga o LED2 
digitalWrite(LED3, LOW); //apaga o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED3, HIGH); //acende o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED2, HIGH); //acende o LED2 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, HIGH); //acende o LED1 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, LOW); //apaga o LED1 
digitalWrite(LED2, LOW); //apaga o LED2 
digitalWrite(LED3, LOW); //apaga o LED3 
delay(1000); //aguarda um segundo (1s = 1000ms) 
} 
(4) Faça uma simulação de um cruzamento de trânsito, utilizando os LEDs de cor vermelha, 
verde e amarelo. 
Código Fonte (sketch) 
//Simulação de um Cruzamento de Trânsito. 
int LED1 = 8; //estabelece um nome para o pino 8 (LED Verde) 
int LED2 = 12; //estabelece um nome para o pino 12 (LED Amarelo) 
int LED3 = 13; //estabelece um nome para o pino 13 (LED Vermelho) 
void setup() { //executa cada vez que o Arduino inicia 
pinMode(LED1, OUTPUT); //inicializa o pino digital como saída 
pinMode(LED2, OUTPUT); 
pinMode(LED3, OUTPUT);} 
//a funcao loop() continua executando enquanto o Arduino estiver alimentado, 
//// ou até que o botão reset seja acionado. 
void loop() { 
digitalWrite(LED1, HIGH); //acende o LED1 Verde 
delay(2000); //aguarda dois segundo (2s = 2000ms) 
digitalWrite(LED2, HIGH); //acende o LED2 Amarelo 
delay(1000); //aguarda um segundo (1s = 1000ms) 
digitalWrite(LED1, LOW); //apaga o LED1 Verde 
digitalWrite(LED2, LOW); //apaga o LED2 Amarelo 
digitalWrite(LED3, HIGH); //acende o LED2 Vermelho 
delay(2000); //aguarda dois segundo (2s = 2000ms) 
digitalWrite(LED2, HIGH); //apaga o LED2 Amarelo 
delay(1000); //aguarda um segundo (1s = 2000ms) 
digitalWrite(LED2, LOW); //apaga o LED2 Amarelo 
digitalWrite(LED3, LOW); //apaga o LED3 Vermelho 
} 
Equipe do Núcleo de TecnológicaEducacional de Paulista Página 33 de 278 
DESAFIO 2 – SEQUENCIAL COM LEDs 
Seguindo o aumento de complexidade, vamos controlar 03 LEDs em nosso projeto. A lógica é a 
mesma para apenas um LED, mas as possibilidades são quase infinitas do que se pode fazer em 
relação à sequência de acender e apagar os LEDs. 
Sugestões de projetos não faltam, tais como um semáforo simples, com três luzes. Saltar de três 
para seis LEDs não deve ser muito difícil, basta um pouco de paciência e tempo para entender 
melhor a programação, e construir um cruzamento com dois semáforos também pode ser um 
exercício interessante. 
Vale a pena parar um pouco neste projeto e soltar a imaginação para exercitar o controle de 
LEDs externos ao Arduino. 
A) SEMÁFORO DE VEÍCULOS 
Objetivo - Aplicar o conceito de Saídas Digitais, abordado no Projeto 2 e reproduzir o 
funcionamento de um sinal de trânsito. 
Material necessário: 
0 Arduino, 03 Resistores de 220 ohms (vermelho, vermelho, marrom) ou de 330 ohms (laranja, 
laranja, marrom), 03 LEDs (01 vermelho, 01 verde e 01 amarelo), Jumper, Protoboard. 
Montagem do circuito 
 
Realize a montagem do circuito, conforme ilustra a Figura acima: 
a) Conecte o pino GND do Arduino à linha de alimentação negativa (azul) da protoboard. 
b) Coloque 03 resistores de 220 ohms (ou 330 ohms) entre uma ligação na linha de 
alimentação negativa e qualquer outra linha do protoboard. 
c) Coloque os 03 LEDs com o Cátodo (lado chanfrado – pino negativo) conectado em cada um 
dos resistores. 
d) Conecte, usando um cabinho, o Ânodo dos LEDs (pino positivo) na seguinte ordem: pino 13 
do Arduino em um LED vermelho, pino 12 do Arduino em um LED amarelo e pino 11 do 
Arduino em um LED verde. 
B) SEMÁFORO DE VEÍCULOS E PEDESTRES 
Objetivo - Reproduzir um cenário similar ao de um semáforo de veículos e pedestres. Supondo o 
estado inicial do cenário com semáforo de veículos (VEÍCULO) sendo vermelho (PARE) e o 
semáforo de pedestres (PEDESTRE) sendo verde (SIGA), deve-se programar a sequência de luzes 
indicando os estados do semáforo de veículos sincronizado com os estados do semáforo de 
pedestres. Algumas especificações a serem seguidas: 
• O sinal vermelho e sinal verde de VEÍCULO tem duração de 5 segundos cada. 
• O sinal amarelo de VEÍCULO tem duração de 2 segundos. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 34 de 278 
• O sinal vermelho de PEDESTRE ficará acesso durante todo o tempo que o sinal vermelho e 
sinal amarelo de VEÍCULO estiverem acessos, impedindo a passagem de pedestres enquanto 
os carros transitam. 
• O sinal verde de PEDESTRE ficará acesso durante todo o tempo que o sinal vermelho de 
VEÍCULO ficar acesso, indicando que os pedestres estão livres para atravessar. 
• Antes transição do sinal verde para o vermelho de PEDESTRE, faltando 3 segundos para a 
transição, o sinal verde pisca rapidamente 3 vezes indicando aos pedestres que se tornará 
vermelho. 
Material necessário: 
01 Arduino, 05 Resistores de 220 ohms (vermelho, vermelho, marrom) ou de 330 ohms (laranja, 
laranja, marrom), 05 LEDs (2 vermelhos, 2 verdes e 1 amarelo), Jumpers, Protoboard. 
 
Montagem do circuito 
Conforme ilustra a Figura acima realize os seguintes passos: 
a) Conecte o pino GND do Arduino à linha de alimentação negativa (azul) do protoboard. 
b) Coloque 05 resistores de 220 ohms (ou 330 ohms) entre com uma ligação na linha de 
alimentação negativa e qualquer outra linha do protoboard. 
c) Coloque 05 LEDs com o Cátodo (lado chanfrado) conectado em cada um dos resistores. 
d) Conecte o Ânodo dos LEDs na seguinte ordem: pino 13 do Arduino no LED vermelho 
(vermelho de VEÍCULO), pino 12 do Arduino no LED amarelo (amarelo de VEÍCULO), pino 11 
do Arduino no LED verde (verde de VEÍCULO), pino 10 do Arduino no LED vermelho 
(vermelho de PEDESTRE) e pino 9 do Arduino no LED verde (verde de PEDESTRE). 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 35 de 278 
RESPOSTA DESAFIO 2 – SEQUENCIAL COM LEDs (ATIVIDADE 03) 
A) SEMÁFORO DE VEÍCULOS (EXEMPLO) 
Programação (Sketch) 
int LEDVerde = 11; //declaração das variáveis 
int LEDAmarelo = 12; 
int LEDVermelho = 13; 
void setup(){ 
 pinMode(LEDVerde, OUTPUT); //configuração 
 pinMode(LEDAmarelo, OUTPUT); 
 pinMode(LEDVermelho, OUTPUT); 
} 
void loop(){ 
 digitalWrite(LEDVerde, HIGH); //liga o LED Verde 
 delay(2000); //por 2 segundos 
 digitalWrite(LEDVerde, LOW); //desliga o LED Verde 
 digitalWrite(LEDAmarelo, HIGH); //liga o LED Amarelo 
 delay(2000); //por 2 segundos 
 digitalWrite(LEDAmarelo, LOW); //desliga o LED Amarelo 
 digitalWrite(LEDVermelho, HIGH); //liga o LED Vermelho 
 delay(2000); //por 2 segundos 
 digitalWrite(LEDVermelho, LOW); //desliga o LED Vermelho 
} //reinicia o loop 
B) SEMÁFORO DE VEÍCULOS E PEDESTRES (EXEMPLO) 
Programação (Sketch) 
int LEDCarVed = 11; //Carro 
int LEDCarAma = 12; 
int LEDCarVem = 13; 
int LEDPedVed = 9; //Pedestre 
int LEDPedVem = 10; 
void setup(){ 
 pinMode(LEDCarVed, OUTPUT); //definição das Portas 
 pinMode(LEDCarAma, OUTPUT); 
 pinMode(LEDCarVem, OUTPUT); 
 pinMode(LEDPedVed, OUTPUT); 
 pinMode(LEDPedVem, OUTPUT); 
} 
void loop(){ 
 digitalWrite(LEDCarVed, HIGH); //liga LED Verde Carro 
 digitalWrite(LEDPedVem, HIGH); //liga LED Vermelho Pedestre 
 delay(5000); //por 5 segundos 
 digitalWrite(LEDCarVed, LOW); //desliga o LED Verde Carro 
 digitalWrite(LEDCarAma, HIGH); //liga o LED Amarelo Carro 
 delay(2000); //por 2 segundos 
 digitalWrite(LEDCarAma, LOW); //desliga o LED Amarelo Carro 
 digitalWrite(LEDPedVem, LOW); //desliga o LED Vermelho Pedestre 
 digitalWrite(LEDCarVem, HIGH); //liga o LED Vermelho Carro 
 digitalWrite(LEDPedVed, HIGH); //liga o LED Verde Pedestre 
 delay(5000); //por 5 segundos 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 36 de 278 
 digitalWrite(LEDPedVed, LOW); //desliga/liga LED Verde Pedestre 
 delay(500); 
 digitalWrite(LEDPedVed, HIGH); 
 delay(500); 
 digitalWrite(LEDPedVed, LOW); 
 delay(500); 
 digitalWrite(LEDPedVed, HIGH); 
 delay(500); 
 digitalWrite(LEDPedVed, LOW); 
 delay(500); 
 digitalWrite(LEDPedVed, HIGH); 
 delay(500); 
 digitalWrite(LEDPedVed, LOW); //desliga o LED Verde Pedestre 
 digitalWrite(LEDCarVem, LOW); //desliga o LED Vermelho Carro 
} //reinicia o loop 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 37 de 278 
ATIVIDADE 04 - CONTROLANDO LED COM SINAL PWM (REVISÃO) 
Para controlar o brilho de um LED ou até diminuir a velocidade de um motor CC, a ferramenta 
ideal é o PWM. 
Na placa do Arduino UNO existe o desenho de um til (~) ao lado de alguns pinos, que significam 
que aquele pino é capaz de realizar PWM. Observamos que a placa Arduino UNO possui 6 pinos 
para saída PWM (3, 5, 6, 9, 10, 11). 
O que é PWM? 
PWM, do inglês Pulse Width Modulation, é uma técnica utilizada por sistemas digitais para 
variação do valor médio de uma forma de onda periódica. A técnica consiste em manter a 
frequência de uma onda quadrada fixa e variar o tempo que o sinal fica em nível lógico alto. Esse 
tempo é chamado de duty cycle, ou seja, o ciclo ativo da forma de onda. 
Para auxiliar na manipulação desses pinos a plataforma possui uma função que auxilia na escrita 
de valores de duty cycle para esses pinos, assim podemos facilmente usar o PWM do Arduino 
UNO e outras placas. 
 
Função analogWrite() 
Esta função escreve um valor de PWM em um pino digital que possui a função PWM. Após a 
chamada dessa função, o pino passa a operar com uma onda quadrada de frequência fixa e com 
dutycycle conforme valor passado pela função. A frequência dessa onda, na maioria dos pinos é 
em tordo de 490 Hz, porém, os pinos 5 e 6 da Arduino UNO operam em 980 Hz. 
Para utilizar a função analogWrite() , deve-se configurar o pino correspondente como saída 
digital. É interessante notar que essas saídas não são conversores digital-analógico como o nome 
sugere, e estes pinos não estão relacionados às entradas analógicas. 
A função analogWrite deve ser utilizada da seguinte forma: 
Sintaxe: 
analogWrite(pino, valor); 
Onde: 
-- Pino corresponde ao pino que será gerado o sinal PWM; 
- Valor corresponde ao duty cycle, ou seja, o valor que permanecerá em nível alto o sinal. 
O valor deve ser de 0 a 255 onde com 0 a saída permanece sempre em nível baixo e 255 a saída 
permanece sempre em nível alto. 
Materiais necessários 
01 Arduino, 01 LED, 01 Resistor de 220Ω, Jumpers, Protoboard 
Código Fonte (sketch) 
int LED=10; 
int brilho=0; 
int pulo=5; 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 38 de 278 
void setup () { 
pinMode (LED, OUTPUT); 
} 
void loop () { 
analogWrite (LED, brilho); 
brilho = brilho + pulo; 
if (brilho==0 || brilho==255) { // || = ou 
pulo= - pulo; } 
delay(30); 
} 
 
DESAFIO 
(1) Troque o pino para analógio e também digital. Observe a variação de lunizidade do LED; 
(2) Modifique os valores delay para mais e para menos observe os resultados. 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 39 de 278 
ATIVIDADE 05 - LEDs EM PARALELO 
Vamos ligar 03 LEDs em paralelo utilizando sketch (programação) para piscar. 
 
CALCULANDO O RESISTOR ADEQUADO PARA UM LED 
Para o LED VERMELHO e para o LED 
Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (amperes). 
R = (5 - 2) / 0,02 
R = 3 / 0,02 
R = 150 ohms 
Para o LED VERDE 
R = (5 - 2,5) / 0,02 
R = 6,5 / 0,02 
R = 325 ohms 
Como vai ser muito difícil encontrar um resistor de 325 ohms você pode usar um de 330 ohms. 
Materiais necessários 
01 Arduino, 03 LED (vermelho, verde, amarelo), 03 Resistores de 330Ω, Jumpers, Protoboard. 
Códico Fonte (sketch) 
int LED = 13; //declaração de uma variável chamada LED 
void setup() { //função de ajuste executada uma única vez 
pinMode (LED, OUTPUT); } //rotulando a variável com saída de dados 
void loop() { 
digitalWrite(LED, HIGH); //torna a variável LED ligada (HIGH coloca a tensão no máximo 5V) 
delay(1000); //espera um segundo (1000 milissegundos) 
digitalWrite(LED, LOW); //torna a variável LED desligada (LOW coloca a tensão no mínimo 5 V) 
delay(1000); 
} 
Em paralelo todos os LEDs juntos vão consumir a mesma tensão que um, e as correntes se 
somam. Em série as tensões se somam e a corrente consumida é a mesma. Não há vantagem em 
ligar LEDs em paralelo. 
Nunca devemos ligá-los em paralelo, pois como eles têm características sempre um pouco 
diferentes, as correntes não se dividiriam por igual e eles acenderiam com brilhos diferentes. 
DESAFIO 
(1) Modifique os valores delay para mais (+) e para menos (-); 
(2) Observe o resultado e comente. 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 40 de 278 
ATIVIDADE 06 – LEDs EM SÉRIE, PARALELO E MISTO, COM BATERIA 9V 
Vamos verificar o circuito de LEDs ligados em Série, LEDs ligados em Paralelo e de LEDs ligados 
em série e paralelo ao mesmo tempo (Misto). 
TABELA GENÉRICA DE TENSÃO E CORRENTE PARA LEDS DIFUSO 3MM E 5MM: 
Se você não sabe a tensão e corrente exata do seu LED, utilize a tabela genérica abaixo para 
LEDs de 3mm e 5mm. 
 
OBS.: Para evitar possíveis danos aos componentes, os valores apresentados nesta tabela são 
propositalmente mais baixos que os valores reais da maioria dos LEDs. 
1. LEDs EM SERIE 
Vamos ligar 04 LEDs difusos 5mm, cor vermelha, com tensão aproximada de 2,0V e corrente de 
20mA. 
Primeiro precisamos calcular o resistor R1. Para isto, utilizaremos a fórmula da Lei de Ohm: 
U = R1 x I => R1 = U / I 
Onde: U = (Valimentação - Vled) e I = corrente suportada pelo LED (20mA = 0,02A) 
Como utilizamos 04 LEDs em série, a tensão dos LED será: Vled = 4 x 2,0 => Vled = 8,0V (tensão 
suportada pelos LEDs) 
Vamos utilizar uma bateria de 9V, logo a tensão de alimentação será: Valimentação = 9,0V (tensão 
da bateria) 
Portanto: R1 = (9,0V - 8,0V) / 0,02A => R1 = 50Ω (ohms). 
Segundo a fórmula o resistor adequado possui 50 ohms, entretanto podemos utilizar um resistor 
com a resistência maior encontrado. Desta forma, vamos utilizar um resistor de 100 Ω (ohms). 
Materiais necessários 
01 Pilha 9V, 01 Suporte para Pilha 9V, 03 LEDs (mesma cor), 01 Resistor de 150Ω, Jumpers, 
Protoboard. 
Veja abaixo como fica o esquema de montagem do nosso circuito no Protoboard: 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 41 de 278 
2. LEDs EM PARALEDO 
Vamos utilizar 04 LEDs de 5mm, nas cores: Vermelho, Laranja, Verde e Azul. 
Utilizando a Lei de Ohm vamos calcular os resistores para cada LED de acordo com a tabela 
genérica. 
PARA O LED VERMELHO E AMARELO 
Convertendo os 20mA (miliampèeres) do LED para amperes dariam 0,02 A (amperes). 
R = (9 - 2) / 0,02 
R = 7 / 0,02 
R1 = 350 ohms 
Como vai ser muito difícil encontrar um resistor de 350 ohms, vamos utilizar um de 470 ohms. 
PARA O LED VERDE 
Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (amperes). 
R = (9 - 2,5) / 0,02 
R = 6,5 / 0,02 
R3 = 325 ohms 
Como vai ser muito difícil encontrar um resistor de 325 ohms, vamos utilizar um de 330 ohms. 
PARA O LED AZUL 
Convertendo os 20mA (miliamperes) do LED para amperes dariam 0,02 A (amperes). 
R = (9 - 3) / 0,02 
R = 6 / 0,02 
R4 = 300 ohms 
Podemos utilizar um resistor de 300 ohms. 
Materiais necessários 
01 Pilha 9V, 01 Suporte para pilha 9V, 04 LEDs (cores diferentes), 02 Resistores de 470Ω e 02 de 
350Ω, Jumpers, Protoboard. 
Veja abaixo como fica a simulação do nosso circuito montado no Protoboard: 
 
 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 42 de 278 
3. LEDS LIGADOS EM PARALELO E EM SÉRIE AO MESMO TEMPO (LIGAÇÃO MISTA) 
Agora vamos verificar a ligação de LEDs em paralelo e em Série ao mesmo tempo. 
Imagine que você queira ligar 03 LEDs azuis sem Série em uma fonte de alimentação de 9V e um 
outro LED em paralelo com estes. A tensão dos LEDs em paralelo ultrapassa a tensão de 
alimentação que é de 9V, ou seja, a tensão dos 04 LEDs = 4 X 2,5V = 10V. 
Para resolver isto, vamos utilizar uma ligação mista de LEDs de acordo com o circuito abaixo: 
Vamos então calcular os valores dos resistores R1 (Paralelo) e R2 (Série) através da Lei de Ohm: 
CÁLCULO DE R1 
Tensão de alimentação = 9V 
Tensão do LED = 3V 
Corrente máxima suportada do LED >> I = 20mA = 0,02A 
U = R1. I >> R1 = U / I >> R1 = (9V - 3,0V) / 0,02A 
R1 = 6V / 0,02A >> R1 = 300Ω 
Entretanto, nós vamos utilizar o valor do resistor da tabela prática - LED Azul para tensão de 
alimentação de 9V >> R1 = 350Ω 
DICA: Faça o teste com os 02 resistores para verificar se há diferença de luminosidade. 
Observação: Se você tem o "datasheet" do fabricante com o valor especificado, prefira sempre 
utilizar o valor do resistor calculado. 
CÁLCULO DE R2 
Tensão de alimentação = 9V 
Tensão dos LEDs (03 LEDs) = 3 x 2,5V = 7,5V 
Corrente máxima suportada do LED >> I = 20mA = 0,02A 
U = R2. I >> R2 = U / I >> R2 = (9V - 7,5V) / 0,02A 
R2 = 1,5V / 0,02A >> R2 = 75Ω 
Como vai ser muito difícil encontrar um resistor de 75Ω, utilizaremos um resistor >> R2 = 150Ω. 
Veja abaixo o diagrama com LEDs ligados em paralelo e em série ao mesmo tempo: 
 
 
FONTE 
http://www.squids.com.br/arduino/index.php/projetos-eletronica/projetos-basicos/79-teste-01-leds-
ligados-em-serie-e-em-paralelo 
 
http://www.squids.com.br/arduino/index.php/projetos-eletronica/projetos-basicos/79-teste-01-leds-ligados-em-serie-e-em-paralelo
http://www.squids.com.br/arduino/index.php/projetos-eletronica/projetos-basicos/79-teste-01-leds-ligados-em-serie-e-em-paralelo
Equipe do Núcleo deTecnológica Educacional de Paulista Página 43 de 278 
ATIVIDADE 07 - SINAL DE TRÂNSITO (REVISÃO) 
Vamos fazer um projeto de um sinal de trânsito no microcontrolador Arduino. Este projeto 
apresenta diversos conceitos introdutórios. 
Materiais necessários 
01 Arduino, 03 LED (vermelho, amarelo, verde), 03 Resistores de 100Ω ou 220Ω, Jumper, 
Protoboard. 
Montagem do Circuito 
Primeiramente conecte os LEDs na protoboard. 
Depois conecte a perna de cada um dos resistores de 100 ou 220Ω (ohms) na linha das pernas 
menores dos LEDs, e a outra perna dos resistores, na linha do GND (negativo) da protoboard. 
Usando os fios jumper, conecte o fio jumper preto no pino digital GND do Arduino. Conecte o fio 
verde no pino digital 8 do Arduino, o amarelo no pino digital 9 do Arduino e o vermelho no pino 
digital 10 do Arduino, conforme diagrama abaixo. 
Diagrama 
 
O projeto físico do sinal de trânsito está pronto. 
Agora é a parte de programação do Arduino para fazer com que o diagrama acima se comporte 
como um sinal de trânsito. Abra a IDE do Arduino. 
Copie e cole na IDE o código fonte do programa, ou escreva. 
Códico Fonte (sketch) 
int LEDvd = 8; 
int LEDam = 9; 
int LEDvm = 10; 
void setup() { //é executado uma vez apenas 
pinMode(LEDvd,OUTPUT); //define o pino 8 como saída 
pinMode(LEDam,OUTPUT); //define o pino 9 como saída 
pinMode(LEDvm,OUTPUT); } //define o pino 10 como saída 
void loop() { //é executado enquanto o arduino estiver ligado 
digitalWrite(LEDvd ,HIGH); //controle do LED verde – acende o LED 
delay(4000); //espera 4 segundos 
digitalWrite(LEDvd ,LOW); //apaga o LED 
digitalWrite(LEDam,HIGH); //controle do LED amarelo - acende o LED 
delay(2000); //espera 2 segundos 
digitalWrite(LEDam,LOW); //apaga o LED 
digitalWrite(LEDvm,HIGH); //controle do LED vermelho - acende o LED 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 44 de 278 
delay(4000); //espera 4 segundos 
digitalWrite(LEDvm,LOW); //apaga o LED 
} //fim do loop 
Conecte o seu Arduino ao computador usando o cabo USB AB. 
Agora compile o programa, pressionando o botão Verificar (botão com um V) e posteriormente 
faça o upload do programa para o Arduino pressionando o botão Carregar (botão com uma Seta 
apontando para a direita). 
Pronto, projeto finalizado. Após o upload do programa para o Arduino, o mesmo já começa a se 
comportar como um sinal de trânsito, acendendo e apagando os LEDs de acordo com a ordem e 
o tempo definido no programa. 
EXERCÍCIO 
Estude o Códico Fonte (sketch) com suas: 
- Estruturas, 
– Variáveis, 
- Operadores booleanos, de comparação e aritméticos, 
- Estrutura de controle, 
- Funções digitais e analógicas. 
DESAFIO 
(1) Faça uma medição dos tempos equivalente em segundos para deles verificar se o valor de 
delay(4000) corresponde de fato a 4,0 segundos; 
(2) Inclua agora mais 01 LED vermelho. Faça com que o sinal vermelho seja escalonado, ou seja, 
ao ser acionado o vermelho, os 02 LEDs se acendem simultaneamente, mas, antes de passar 
para o amarelo, apague um dos LEDs vermelhos e temporize 02 segundos antes de passar para o 
verde. 
(3) Faça um projeto agora com 02 semáforos de 03 LEDs (vermelho, amarelo e verde) cada um. 
Simule a operação de um cruzamento com esses 02 semáforos, abrindo para uma rua e 
interrompendo a outra e vice-versa. 
(4) Escreva suas conclusões sobre como temporizar o acionamento de LEDs para fazer um 
semáforo. 
FONTE 
http://www.comofazerascoisas.com.br/projeto-arduino-sinal-de-transito.html 
 
http://www.comofazerascoisas.com.br/projeto-arduino-sinal-de-transito.html
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 45 de 278 
RESPOSTA DO DESAFIO - SINAL DE TRÂNSITO (ATIVIDADE 07) 
(2) Inclua agora mais 01 LED vermelho. Faça com que o sinal vermelho seja escalonado, ou seja, 
ao ser acionado o vermelho, os 02 LEDs se acendem simultaneamente, mas, antes de passar 
para o amarelo, apague um dos LEDs vermelhos e temporize 02 segundos antes de passar para o 
verde. 
Diagrama 
 
Códico Fonte (sketch) 
int LEDvd = 8; 
int LEDam = 9; 
int LEDvm = 10; 
int LEDvm1 = 11; 
void setup() { //é executado uma vez apenas 
pinMode(LEDvd,OUTPUT); //define o pino 8 como saída 
pinMode(LEDam,OUTPUT); //define o pino 9 como saída 
pinMode(LEDvm,OUTPUT); //define o pino 10 como saída 
pinMode(LEDvm1,OUTPUT);} //define o pino 13 como saída 
void loop() { //é executado enquanto o arduino estiver ligado 
digitalWrite(LEDvm ,HIGH); //controle do LED vermelho – acende o LED 
digitalWrite(LEDvm1 ,HIGH); //controle do seguno LED vermelho – acende o LED 
delay(4000); //espera 4 segundos 
digitalWrite(LEDvm ,LOW); //controle do LED vermelho – acende o LED 
digitalWrite(LEDvm1 ,HIGH); //controle do seguno LED vermelho – acende o LED 
delay(2000); //espera 2 segundos 
digitalWrite(LEDvm1 ,LOW); //apaga o LED 
digitalWrite(LEDam,HIGH); //controle do LED amarelo - acende o LED 
delay(2000); //espera 2 segundos 
digitalWrite(LEDam,LOW); //apaga o LED 
digitalWrite(LEDvd,HIGH); //controle do LED verde - acende o led 
delay(4000); //espera 4 segundos 
digitalWrite(LEDvd,LOW); //apaga o LED 
} 
(3) Faça um projeto agora com 02 semáforos de 03 LEDs (vermelho, amarelo e verde) cada um. 
Simule a operação de um cruzamento com esses 02 semáforos, abrindo para uma rua e 
interrompendo a outra e vice-versa. 
Diagrama 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 46 de 278 
 
Códico Fonte (sketch) 
int LEDvd = 7; 
int LEDam = 8; 
int LEDvm = 9; 
int LEDvd1 = 10; 
int LEDam1 = 11; 
int LEDvm1 = 12; 
void setup() { //é executado uma vez apenas 
pinMode(LEDvd,OUTPUT); //define o pino 8 como saída 
pinMode(LEDam,OUTPUT); //define o pino 9 como saída 
pinMode(LEDvm,OUTPUT); //define o pino 10 como saída 
pinMode(LEDvd1,OUTPUT); //define o pino 11 como saída 
pinMode(LEDam1,OUTPUT); //define o pino 12 como saída 
pinMode(LEDvm1,OUTPUT);} //define o pino 13 como saída 
void loop() { //é executado enquanto o arduino estiver ligado 
digitalWrite(LEDvd,HIGH); //acende o LED verde 
digitalWrite(LEDvm1,HIGH); //acende o LED vermelho1 
delay(4000); //espera 4 segundos 
digitalWrite(LEDvd,LOW); //apaga o LED 
digitalWrite(LEDvm1,LOW); //apaga o LED vermelho1 
digitalWrite(LEDam,HIGH); //acende o LED amarelo 
digitalWrite(LEDam1,HIGH); //acende o LED amarelo1 
delay(2000); //espera 2 segundos 
digitalWrite(LEDam,LOW); //apaga o LED amarelo 
digitalWrite(LEDam1,LOW); //apaga o LED amarelo1 
digitalWrite(LEDvm,HIGH); //acende o LED vermelho 
digitalWrite(LEDvd1,HIGH); //acende o LED verde1 
delay(4000); //espera 4 segundos 
digitalWrite(LEDvm,LOW); //apaga o LED vermelho 
digitalWrite(LEDvd1,LOW); //apaga o LED verde1 
digitalWrite(LEDam,HIGH); //acende o LED amarelo 
digitalWrite(LEDam1,HIGH); //acende o LED amarelo1 
delay(2000); //espera 2 segundos 
digitalWrite(LEDam,LOW); //apaga o LED amarelo 
digitalWrite(LEDam1,LOW); //apaga o LED amarelo1 
delay(500); //espera 0,5 segundos 
} 
 
Equipe do Núcleo de Tecnológica Educacional de Paulista Página 47 de 278 
ATIVIDADE 08 – FADE (REVISÃO) 
Vamos demonstrar o uso da função analogWrite() para apagar um LED em fade (variação 
gradual). AnalogWrite usa um pulso PWM, alternando o pino digital on e off rapidamente,

Outros materiais