Curso Básico de Arduino
Curso Básico de Arduino
Curso Básico de Arduino
1
Sumário
Sobre os autores ................................................................................................................................... 3
O que é Arduino? .................................................................................................................................. 4
O que são shields? ............................................................................................................................... 6
Componentes da placa Arduino........................................................................................................ 7
Instalando a IDE do Arduino no Windows .................................................................................... 16
Placa de Ensaio ou Protoboard ....................................................................................................... 19
Conhecendo o ambiente de trabalho do TinkerCad .................................................................. 22
Aula 01 - Hello, World! ....................................................................................................................... 26
Aula 02 - LED com botão liga desliga ............................................................................................ 28
Aula 03 - Controlar um LED com um potenciômetro ................................................................. 34
Aula 04 - Botão que acende LED-s com efeito ............................................................................ 40
Aula 05 - Controlando 8 LED-s com CI74HC595 e fazendo contagem binária ................... 47
Aula 06 - Piscar um LED com efeito fader .................................................................................... 52
Aula 07 - Sinal de trânsito ................................................................................................................. 56
Aula 08 - Dois sinais de trânsito sincronizados.......................................................................... 61
Aula 09 - Controlando LED RGB multicolorido ........................................................................... 70
Aula 10 - Controlar as cores de um LED RGB com botões ..................................................... 76
Aula 11 - Sensor de luz LDR com saída de leitura em LED-s .................................................. 84
Aula 12 - Emitir sons com o buzzer ................................................................................................ 87
Aula 13 - Controlando dois servomotores com potenciômetros ........................................... 92
Aula 14 - Controlando um servomotor com potenciômetro .................................................... 95
Aula 15 - Controlar a velocidade de um motor CC com potenciômetro ............................... 98
Aula 16 - Motor CC com controle de velocidade, LED-s medidores de potência e buzzer
para alerta de potência máxima .................................................................................................... 102
Aula 17 - Alarme com sensor de movimentos PIR ................................................................... 107
Aula 18 - Display LCD - Hello World ............................................................................................. 110
Aula 19 - Display LCD com dois potenciômetros ..................................................................... 113
Aula 20 - Display LCD com sensor de temperatura e luminosidade ................................... 119
Aula 21 - Display LCD com dois potenciômetros e servomotor controlado com um
potenciômetro .................................................................................................................................... 125
Aula 22 - Relógio simples com display LCD .............................................................................. 130
Aula 23 - Montagem de relógio com módulo DS1302RTC ..................................................... 133
Aula 24 - Sensor de obstáculos ultrassônico HC-SRO4 ......................................................... 138
Aula 25 - Carro robótico com sensor de obstáculo e servomotor ....................................... 143
Aula 26 - Carro robótico controlado com controle remoto infravermelho ........................ 147
Aula 27 - Braço robótico com 4 servomotores controlados com potenciômetros ......... 151
Aula 28 - Calculadora ....................................................................................................................... 158
2
Sobre os autores
3
O que é Arduino?
Além disso, todas essas ferramentas são de código aberto, ou seja, qualquer
pessoa pode replicá-las ou contribuir para o seu aperfeiçoamento, respeitando algumas
regras. Isso é o que permite o surgimento de diversas placas compatíveis, melhoradas
e para as mais diversas aplicações. São todas essas ferramentas que nos permitem
interagir com uma série de componentes eletrônicos para desenvolver uma infinidade
de projetos.
O material aqui coletado ajudará a você aprender sobre essa plataforma que vem
revolucionando o aprendizado da eletrônica:
https://www.arduino.cc
https://www.tinkercad.com/circuits
http://fritzing.org/download/
http://snap4arduino.org
• Local para baixar o driver da porta USB, caso não seja reconhecida no Plug
& Play do Windows (ownload do drive USB2.0-Serial CH34x)
https://sparks.gogo.co.nz/ch340.html
https://www.huinfinito.com.br
https://www.contatopro.com.br/
https://www.robocore.net/loja/shields-para-arduino
O primeiro Arduino surgiu por volta de 2005, na Itália, e a idéia era disponibilizar
um microcontrolador barato e fácil de se usar, voltado para hobistas, estudantes e
profissionais, que possibilitasse que esse grupo de pessoas construísse sistemas de
5
O Arduino possui várias versões, dentre elas pode-se destacar: Arduino UNO,
Arduino Leonardo, Arduino Due, Arduino Yún, Arduino Micro, Arduino Mega, Arduino
Fio, Arduino Tre, Arduino Zero e muitas outras. E recomendado iniciar com Arduino
UNO R3.
6
Componentes da placa Arduino
Existe uma grande variedade de placas Arduino que podem ser utilizadas para
diferentes propósitos. Algumas placas podem ser diferentes da placa abaixo, mas a
maioria das placas Arduino possui os componentes listados.
A conexão USB também é por onde será carregado o código na placa Arduino.
NOTA 1: NÃO use uma fonte de alimentação superior a 15 V, pois você irá superar a
tensão máxima do seu Arduino e assim irá queimá-lo. A tensão recomendada para a
maioria dos modelos Arduino é de 6 V a 12 V.
7
NOTA 2: quando alimentar a sua placa por uma fonte externa, verifique que o terminal
positivo (+) é o terminal interno do conector P4.
Pinos (5V, 3V3, GND, Analógicos, Digitais, PWM, AREF)
Os pinos na placa Arduino são os lugares onde se conecta os fios para construir
um circuito, em conjunto com uma protoboard. O Arduino tem vários tipos diferentes de
pinos, cada um dos quais é rotulado na placa e usado para diferentes funções.
GND (3): abreviação de "ground" (terra em inglês). Existem vários pinos de GND
no Arduino, qualquer um deles pode ser utilizado para aterrar o circuito.
5V (4) e 3V3 (5): o pino de 5V fornece 5 volts de energia e o pino de 3V3 fornece
3,3 volts. A maioria dos componentes simples usados com o Arduino trabalham
felizmente com 5 V ou 3,3 V;
Analógico (6): a área dos pinos rotulada com "ANALOG IN" (A0 a A5 no UNO) é
para os pinos analógicos. Esses pinos podem ler o sinal de um sensor analógico (como
um sensor de luminosidade) e convertê-lo em um valor digital para usar no código.
Digital (7): a área dos pinos rotulada com "DIGITAL" (0 a 13 no UNO) é para os
pinos digitais. Esses pinos podem ser usados tanto para entrada digital (como dizer se
um botão está pressionado) como para saída digital (como alimentar um LED).
PWM (8): o til (~) ao lado de alguns dos pinos digitais (3, 5, 6, 9, 10 e 11 no UNO)
atuam como pinos digitais normais, mas também podem ser utilizados para algo
chamado Modulação por Largura de Pulso (PWM). Esses pinos são capazes de atuar
como uma "saída analógica" (podendo controlar a intensidade de um LED, por
exemplo).
8
Botão de reset
NOTA: o reset não apaga o código carregado na placa, ele serve para reiniciar a
execução do programa.
LED indicador de energia
Ao centro da placa existe um pequeno LED ao lado da palavra "ON" (10). Este
LED deve acender sempre que ligar o Arduino a uma fonte de energia. Se esta luz não
ligar, há uma boa chance de haver algo errado. Verifique o seu circuito!
LED-s TX e RX
TX é a abreviação para transmitir, o RX é a sigla para receber. Essas marcas
aparecem um pouco na eletrônica para indicar os pinos responsáveis pela comunicação
serial. No nosso caso, há dois lugares no Arduino UNO onde TX e RX aparecem: uma
vez ao lado dos pinos digitais 0 e 1, e uma segunda vez ao lado dos LED-s indicadores
TX e RX (11). Esses LED-s nos darão algumas boas indicações visuais sempre que
nosso Arduino estiver recebendo ou transmitindo dados. Por exemplo quando estamos
carregando um novo programa na placa.
9
CI principal
O maior componente da placa, com várias pernas metálicas, é um CI, ou circuito
integrado (12). É nele que o código é executado e todos os dados são processados. O
CI principal no Arduino é diferente entre modelos de placa, mas geralmente é da linha
ATmega de microcontroladores da empresa Atmel (agora Microchip).
Reguladores de tensão
Os reguladores de tensão não são realmente algo que se deva mexer no Arduino.
Mas é útil saber que estão lá e para que servem. Os reguladores de tensão fazem
exatamente o que o nome diz, eles controlam a tensão interna da sua placa Arduino.
Ele faz com que a tensão do circuito seja sempre a mesma, independente da tensão
de alimentação.
10
Módulos para placa Arduino
11
Geekcreit® UNO R3
Kit básico de aprendizagem inicial atualização da versão
para Arduino
Característica:
Esta é uma versão atualizado do UNO R3 kit para inicial, adiciona mais
componentes para obter mais recursos e experimentar.
Incluído no pacote:
12
13
https://www.tinkercad.com/learn
http://www.comofazerascoisas.com.br/projeto-arduino-led-com-botao-liga-desliga.html
http://www.comofazerascoisas.com.br/marcadores/Arduino+Uno+R3
http://www.comofazerascoisas.com.br/projeto-arduino-controlando-led-rgb-
multicolorido.html
http://www.comofazerascoisas.com.br/projeto-arduino-com-display-lcd.html
http://www.comofazerascoisas.com.br/circuito-simples-que-controla-a-velocidade-de-
um-motorzinho-como-fazer.html
http://www.comofazerascoisas.com.br/projeto-arduino-com-display-lcd-sensor-de-
temperatura-e-sensor-de-luz.html
http://www.comofazerascoisas.com.br/motor-cc-no-arduino-com-controle-de-
velocidade-e-leds-medidores-de-potencia.html
http://www.comofazerascoisas.com.br/joystick-controlando-3-servomotores-no-
arduino.html
http://www.comofazerascoisas.com.br/guincho-robotico-de-palito-de-picole-com-
arduino-e-servomotores-como-fazer.html
http://www.comofazerascoisas.com.br/como-fazer-um-mini-gerador-de-energia-
aeolica-versao-2.html
http://www.comofazerascoisas.com.br/como-fazer-um-aviao-bimotor-de-palitos-de-
picole.html
http://www.comofazerascoisas.com.br/arduino-com-sensor-de-obstaculos-ultrasonico-
HC-SRO4.html
http://www.comofazerascoisas.com.br/como-fazer-um-alarme-com-arduino-sensor-de-
movimentos-pir.html
http://www.comofazerascoisas.com.br/controlando-a-velocidade-de-um-motor-cc-no-
arduino-com-potenciometro.html
https://www.instructables.com/id/Smartphone-Controlled-RC-Car-Using-Arduino/
https://www.instructables.com/id/Arduino-CNC-Plotter-DRAWING-MACHINE/
https://www.instructables.com/id/Sensor-Stations-Network-for-Lighting-and-Security-/
https://www.instructables.com/id/Arduino-Bluetooth-Controlled-Robot-Car-1/
https://www.instructables.com/id/Arduino-Robot-Arm-3/
https://www.instructables.com/id/Mini-CNC-Laser-Wood-Engraver-and-Paper-Cutter/
https://www.instructables.com/id/DoggoBot-Version-1/
https://www.instructables.com/id/Radar-Gr%C3%A1fico-Con-Arduino-Y-Processing/
14
https://www.instructables.com/id/Electric-Analog-Piano/
https://www.instructables.com/id/How-to-Build-a-GPS-Guided-Robot/
https://www.instructables.com/id/Arduino-CNC-Drawing-Machine-or-the-Road-to-
Success/
https://www.instructables.com/id/How-to-Make-a-Drone-Using-Arduino-Make-a-
Quadcopte/
https://www.instructables.com/id/DIY-Arduino-Drawing-Machine/
https://www.instructables.com/id/How-to-Make-a-Line-Follower-Using-Arduino/
https://www.instructables.com/id/Yet-Another-Balancing-Robot/
https://www.instructables.com/id/Arduino-Camera-Stabilizer-DIY/
https://randomnerdtutorials.com/projects/#home-automation
https://www.hackster.io/petoi/opencat-845129
http://www.techmonkeybusiness.com/ps2-controller-sketch-for-escs-and-stuff.html
15
Instalando a IDE2 do Arduino no Windows
https://www.arduino.cc/en/Guide/Windows?setlang=en#toc1
https://www.arduino.cc/en/Guide/Windows?setlang=en#toc2
Baixe a versão mais atualizada na página de download. Lá, você poderá escolher
o tipo de instalação que deseja realizar, .exe ou Zip. Sugiro que escolha a primeira
opção que faz a instalação com tudo que você vai precisar para utilizer a IDE do
Arduino, inclusive os drivers da placa Arduino. A versão do pacote Zip exigirá que você
faça a instalação dos drivers da placa Arduino manualmente. A versão Zip é muito útil
se você quiser fazer a instlação do tipo portátil.
2
Integrated Development Environment (IDE) ou Ambiente de Desenvolvimento Integrado, é um
programa de computador que reúne características e ferramentas de apoio ao desenvolvimento de
software com o objetivo de agilizar este processo.
16
Escolha o diretório de instlação, sugiro que utilize o diretório sugerido pelo
programa de instalçao, conforme figura abaixo:
17
Antes de começar, escolha a placa Arduino que irá utilizar na barra de ferramentas
da IDE do Arduino, selecione “Ferramentas”, depois “Placa” e selecione o tipo de placa
que irá utilizar. Geralmente a mais utilizada é a “Arduino UNO R3” ou simplemente
“Arduino UNO”.
18
Placa de Ensaio ou Protoboard
19
Placa de Ensaio grande
FAIXAS DE TERMINAIS
20
FAIXAS DE BARRAMENTOS
Vamos começar nossos exercícios para saber como a placa de ensaio funciona.
21
Conhecendo o ambiente de trabalho do TinkerCad
https://www.tinkercad.com/
O QUE É O TINKERCAD?
O Tinkercad é uma plataforma online que permite aos usuários projetar e simular
modelos 3D. É uma ferramenta gratuita e fácil de usar, projetada para iniciantes e
especialistas. Com o Tinkercad, os usuários podem criar modelos 3D de objetos,
edifícios e muito mais e, em seguida, exportá-los para impressão 3D ou usá-los em
outros projetos.
A Tinkercad foi fundada como uma empresa em 2010 na União Europeia pelo ex-
engenheiro do Google Kai Backman e seu cofundador Mikko Mononen, com o objetivo
de tornar a modelagem 3D, especialmente o design de itens físicos, acessível ao
público em geral, e permitir que os usuários publiquem seus projetos sob uma licença
Creative Commons.
Uma das coisas mais interessantes sobre o Arduino e o Tinkercad é que eles
podem ser usados juntos. O Tinkercad possui uma gama de componentes eletrônicos
que podem ser usados para construir circuitos e dispositivos de controle, e também
possui um simulador de Arduino embutido que permite aos usuários programar e testar
seus circuitos em um ambiente virtual. Isso torna mais fácil prototipar e testar novas
ideias antes de construí-las no mundo real.
Site: https://www.tinkercad.com/
23
Identificação das partes da ferramenta Tinkercadd do Arduino
Logo de retorno para tela principal do Tinkercad e nome aleatório dado
ao circuito pelo ambiente do Tinkercad.
Mensagens do sistema, vista do circuito, vista esquemática, lista de
componentes e identificação do usuário com foto.
Barra de ferramentas: copiar, colar e excluir. Desfazer e refazer.
Ferramentas de notas e alterar visibilidade de notas. Cor do fio e tipo de
fio. Rotacionar e espelhar componente.
Alternar editor de código: bloco, bloco e texto, texto. Iniciar simulação e
parar simulação. Enviar para.
Zoom para ajustar.
Localizar mais componentes. Alterar para vista com detalhes.
Procurar componentes.
24
Lista de componentes.
Área de trabalho do Tinkercad.
25
Aula 01 - Hello, World!
26
Passo 3 – Conecte o fio verde na casa 6b da protoboard e no pino digital 8 da placa do
Arduino e conecte o fio preto no ponto negativo da protoboard e no pino GND da placa
do Arduino.
SCRIPT ARDUINO
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto acendendo um LED.
3 */
4
5 void setup()
6 {
7 pinMode(8, OUTPUT);
8 }
9
10 void loop()
11 {
12 digitalWrite(8, HIGH);
13 delay(1000);
14 digitalWrite(8, LOW);
15 delay(1000);
16 }
RESULTADO
Após o envio do programa, o LED ficará aceso até o Arduino ser desligado.
COMENTÁRIOS
27
Aula 02 - LED com botão liga desliga
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-led-com-botao-liga-desliga.html
28
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a conexão
correta dos componentes.
Passo 1 - Conecte o botão na protoboard, atentando para a sua posição, que pode ser vista na
imagem abaixo.
Neste caso conectamos uma perna do botão na coluna 50 e uma na coluna 48 da protoboard.
29
Passo 2 – Agora, conecte uma perna do resistor de 150 ohms na coluna 48, a mesma do botão, e
a outra perna do resistor você vai conectar na coluna 45. Conecte um fio jumper ligando a perna do
resistor na coluna 45 (fio preto) a linha horizontal negativa (linha azul da protoboard). Conecte outro
fio jumper ligando a perna do botão da coluna 50 (fio vermelho) a linha horizontal positiva (linha
vermelha da protoboard).
Passo 3 - Conecte um fio jumper, fio amarelo, entre a perna do botão e a do resistor na coluna 48.
30
Passo 4 - Agora chegou a hora de ligar o LED na protoboard. Conecte a perna grande do LED na
coluna 55 e a perna pequena na coluna 56. Conecte um resistor de 100 ohms entre o LED e o fio
jumper, conforme mostra a imagem abaixo.
Passo 5 - Conecte um fio jumper na coluna 56 e na linha negativa da protoboard, ligando a perna
pequena do LED com a linha negativa.
Passo 6 - Conecte um fio jumper no início da linha negativa, fio preto, e outro no início da linha
positiva, o fio vermelho.
Passo 7 - Conecte a protoboard, juntamente com os seus componentes (LED, botão, resistores) no
Arduino. Para facilitar o entendimento e a explicação usarei como referência as cores dos fios
jumper usados neste projeto. Segue abaixo os passos para realizar as ligações dos fios jumper da
protoboard ao Arduino.
Feito isso seu projeto físico Arduino LED com botão está completo e pronto para funcionar.
SCRIPT ARDUINO
31
Segue abaixo o código fonte do programa que vai controlar o Arduino, conforme o presionamento
do botão, que se estiver apertado acende o LED, se não apaga o LED.
Neste projeto é introduzido o uso de constantes em programas Arduino. A diferença de uma
constante para uma variável é que uma variável pode ter seu valor alterado quantas vezes for
necessário dentro do programa. Já a constante, uma vez que se define o valor inicial não se pode
mais alterar este valor.
Neste programa também é utilizado o comando digitalRead que, neste caso, faz a leitura do pino
digital 2, detectando se o mesmo está ou não recebendo energia.
Em síntese, este programa captura o estado do botão, pressionado ou não pressionado, e, de
acordo com o estado, envia ou não energia para acender o LED.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino acendendo e apagando o LED com botão.
3 Por João Paulo - Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //Declaração das constantes
10 const int led = 8; //constante LED refere-se ao pino digital 8.
11 const int botao = 2; //constante botão refere-se ao pino digital 2.
12
13 //Variável que conterá os estados do botão (0 LOW, 1 HIGH).
14 int estadoBotao = 0;
15
16 //Método setup, executado uma vez ao ligar o Arduino.
17 void setup() {
18 pinMode(led,OUTPUT); //Definindo pino digital 8 como de saída.
19 pinMode(botao,INPUT); //Definindo pino digital 2 como de entrada.
20 }
21
22 //Método loop, executado enquanto o Arduino estiver ligado.
23 void loop() {
24 //Lendo o estado do pino 2, constante botao, e atribuindo
25 //o resultado a variável estadoBotao.
26 estadoBotao = digitalRead(botao);
27
28 //Verificando o estado do botão para definir se acenderá ou
29 //apagará o LED.
30 if (estadoBotao == HIGH) {
31 digitalWrite(led,HIGH); //Botão pressionado, acende o LED.
32 } else {
33 digitalWrite(led,LOW); //Botão não pressionado, apaga o LED.
34 }
35 }
Com o programa na IDE do Arduino, agora é só compilar e depois fazer o upload. A imagem abaixo
destaca os botões de verificação/compilação e de upload na barra de ferramentas da IDE do
Arduino.
32
Após a compilação e upload seu projeto está completamente pronto! Agora é só apertar o botão
para acender o LED.
RESULTADO
COMENTÁRIOS
33
Aula 03 - Controlar um LED com um potenciômetro
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-como-controlar-um-led-com-
potenciometro.html
Acender e pagar um LED utilizando um potenciômetro para controlar o tempo de pausa entre um
estado e outro.
3 Os resistores são componentes eletrônicos passivos, muito comuns no mundo da eletrônica e a letra R
é usada para representá-lo. Os resistores não são polarizados, ou seja, não possuem polo positivo e
negativo. A função do resistor é limitar o fluxo de corrente elétrica que passa por ele, e a essa limitação
se dá o nome de resistência, medida em ohms, e ela define qual a facilidade ou dificuldade que os
eletrons terão que enfrentar para passar pelo resistor. Quanto maior o valor da resistência (em ohms)
mais difícil será para os eletrons passarem pelo resistor e quanto menor o valor da resistência (em ohms)
mais fácil será para os eletrons passarem. A limitação do fluxo da corrente elétrica que o resistor impõe
causa também uma queda na tensão.
4 Potenciômeto é um componente eletrônico que cria uma limitação para o fluxo de corrente elétrica que
passa por ele, e essa limitação pode ser ajustada manualmente, podendo ser aumentada ou diminuida.
Os potenciômetros e o resistores tem essa finalidade de limitar o fluxo de corrente elétrica em um circuito,
a diferença é que o potenciômetro pode ter sua resistência ajustada e o resistor comum não pode pois
ele possui um valor de resistência fixo.
34
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a conexão
correta dos componentes.
O primeiro passo é conectar o LED, o potenciômetro e o resistor na protoboard. Neste caso o LED
teve a sua perna maior conectada na coluna 55 e a menor conectada na coluna 56. O resistor de
100 ohms apenas uma de suas pernas conectada na coluna 55 e o potenciômetro teve uma perna
conectada na coluna 40, outra na 42 e outra na 44. Veja a disposição dos componentes na imagem
abaixo.
Usando os fios jumper pequenos conecte uma perna do LED, a da coluna 56, na linha horizontal
azul, que será o fio terra do projeto. Conecte a perna da coluna 40 do potenciômetro também na
linha horizontal azul e a perna da coluna 44 na linha horizontal vermelha, que fornecerá os 5V do
projeto.
35
Conecte os fios jumper médios na protoboard, um na coluna 42 que é a perna do meio do
potenciômetro, no caso do fio azul conecte-o direto na perna do resistor, não é necessário conectar
nem esta perna do resistor nem o fio azul na protoboard, a ligação é direta entre o fio azul e uma
perna do resistor. Um fio na linha horizontal vermelha (5V) e um na linha horizontal azul (terra).
36
Abaixo está melhor exemplificado a ligação entre LED, resistor e fio jumper.
Agora chegou a hora de conectar os fios da protoboard no arduino, usarei as cores dos fios usadas
neste projeto como referência para explanar esta ligação.
O potenciômetro foi ligado ao pino analógico pelo fato deste pino poder assumir valores
diversos e não apenas 0 e 1 que é o caso do pino digital.
37
SCRIPT ARDUINO
Após fazer as ligações entre o arduino e a protoboard o seu projeto físico está pronto, faltando agora
a programação que irá controlar o arduino nesta tarefa de piscar o LED em intervalos definidos via
potenciômetro. Para programar o arduino conecte-o no seu computador usando um cabo USB e
execute a IDE.
Segue abaixo o código fonte deste projeto, que é bem simples e fácil de entender. Copie e cole na
IDE do Arduino.
1 /*
2 Pisca um LED, onde a velocidade das piscadas é
3 controlada por um potenciômetro.
4 Por Jota
5 ----------------------------------------
6 --=<| www.ComoFazerAsCoisas.com.br |>=--
7 ----------------------------------------
8 */
9
10 int ledAzul = 8;
11 int potenciometro = 2;
12 int tempoDeEspera = 0;
13
14 void setup() {
15 pinMode(ledAzul,OUTPUT);
16 }
17
18 void loop() {
19 //Leitura do valor do potenciômetro que é usada como delay
20 tempoDeEspera = analogRead(potenciometro);
21
22 digitalWrite(ledAzul, HIGH);
23 delay(tempoDeEspera);
24 digitalWrite(ledAzul, LOW);
25 delay(tempoDeEspera);
26 }
Em resumo este código fonte define que o tempo de espera entre as piscadas do LED será lido do
protenciômetro pelo pino analógico A2 e será aplicado utilizando o comando delay. Após copiar o
código fonte do projeto para a IDE do arduino compile e posteriormente faça o upload.
38
RESULTADO
COMENTÁRIOS
39
Aula 04 - Botão que acende LED-s com efeito
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-botao-acende-leds-com-efeito.html
Acender vários LED-s ao se pressionar um botão. Neste projeto um pequeno efeito é gerado, pois
foi definido um intervalo de tempo entre o acendimento de cada LED. Este projeto reforça o projeto
LED com botão liga desliga que também usa um botão para acender um LED e que tem uma
programação mais simples.
40
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a conexão
correta dos componentes.
A primeira coisa a fazer é colocar os LED-s e o botão na protoboard. Neste caso as pernas grandes
dos LED-s foram conectadas nas colunas 40, 45, 50, 55. As pernas pequenas dos LED-s foram
conectadas nas colunas 41, 46, 51, 56. O botão teve suas perninhas conectadas as colunas 33 e
35.
41
Agora chegou a vez dos resistores. Conecte os quatros resistores de 100 ohms nas colunas que
estão conectadas as pernas grandes dos LED-s (colunas 40, 45, 50 e 55) conforme mostra a
imagem abaixo. Os resistores dos LED-s devem ter apenas uma de suas pernas conectadas a
protoboard, pois a outra perna do resistor será ligada aos fios jumper que serão conectados ao
Arduino. Conecte o resistor de 150 ohms na coluna 33 e na linha horizontal negativa da protoboard
(linha azul neste caso) como na imagem abaixo.
Conecte os fios jumper pequenos na linha horizontal negativa da protoboard e nas colunas das
pernas pequenas dos LED-s, no caso as colunas 41, 46, 51, 56. Conecte a coluna 35, que esta a
perninha do botão um fio jumper ligado a linha horizontal positiva da protoboard, linha vermelha
neste caso.
Chegou a hora de conectar os fios jumper maiores na protoboard. Para cada perna grande de um
LED vai ligar um fio jumper, neste caso o fio azul esta ligado no resistor da coluna 55, o fio vermelho
no resistor da coluna 50, o fio verde no resistor da coluna 45 e o fio amarelo no resistor da coluna
40. Na coluna 33 entre o botão e o resistor você vai ligar outro fio jumper, neste caso é o fio jumper
roxo. Para finalizar conecte um fio jumper na linha horizontal negativa azul, neste caso foi o fio preto,
e outro fio na linha horizontal positiva vermelha, neste caso foi o fio cinza.
42
Veja na imagem abaixo outro ponto de vista da protoboard com todos os componentes do projeto
arduino com um botão que acende os LED-s com efeito. O próximo passo é conectar os fios jumper
grandes no arduino.
Abaixo está melhor exemplificado como deve ser feita a ligação entre cada um dos LED-s, resistores
e fios jumper.
Os pinos digitais 8, 9, 10, e 11 do arduino serão responsáveis por enviar a energia para acender os
LED-s conectados na protoboard. O pino digital 2 será um pino de entrada, que receberá ou não
energia, conforme o presionamento do botão, possibilitando a leitura do estado do botão
43
(pressionado ou não pressionado). O pino GND é o terra do arduino, onde estão conectadas todas
as perninhas menores dos LED-s. E o pino 5V é o responsável por mandar energia para o botão
possibilitando o controle do seu estado, juntamente com o pino digital 2 do arduino.
44
SCRIPT ARDUINO
Segue abaixo o código fonte completo e testado deste projeto. Copie e cole ou faça você mesmo a
sua versão do programa de controle do Arduino, compile, e posteriormente faça o upload do
programa para o Arduino.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino acendendo com efeito e apagando os LED-s com botão.
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //Declaração das constantes referentes aos pinos digitais.
10 const int ledAmarelo = 8;
11 const int ledVerde = 9;
12 const int ledVermelho = 10;
13 const int ledAzul = 11;
14 const int botao = 2;
15
16 //Declaração da variável que possuirá os estados do botão.
17 int estadoBotao = 0;
18
19 //Método setup, executado uma vez assim que o Arduino é ligado.
20 void setup() {
21 pinMode(ledAmarelo,OUTPUT); //Definindo pino 8 como saída.
22 pinMode(ledVerde,OUTPUT); //Definindo pino 9 como saída.
23 pinMode(ledVermelho,OUTPUT); //Definindo pino 10 como saída.
24 pinMode(ledAzul,OUTPUT); //Definindo pino 11 como saída.
25
26 pinMode(botao,INPUT); //Definindo pino 2 como entrada.
27 }
28
29 //Método loop, executado enquanto o Arduino estiver ligado.
30 void loop() {
31 estadoBotao = digitalRead(botao);
32
33 if (estadoBotao == HIGH) {
45
34 //Acendendo os LED-s caso o botão esteja pressionado, com
35 //um intervalo de tempo (delay) entre os acendimentos para
36 //criar um pequeno efeito.
37 digitalWrite(ledAmarelo,HIGH);
38 delay(200);
39 digitalWrite(ledVerde,HIGH);
40 delay(200);
41 digitalWrite(ledVermelho,HIGH);
42 delay(200);
43 digitalWrite(ledAzul,HIGH);
44 delay(200);
45 } else {
46 //Apagando os LED-s caso o botão não esteja pressionado.
47 digitalWrite(ledAmarelo,LOW);
48 digitalWrite(ledVerde,LOW);
49 digitalWrite(ledVermelho,LOW);
50 digitalWrite(ledAzul,LOW);
51 }
52 }
RESULTADO
Em resumo, este programa verifica se o botão está pressionado, e caso esteja acende os LED-s.
Caso não esteja pressionado apaga os LED-s.
COMENTÁRIOS
46
Aula 05 - Controlando 8 LED-s com CI74HC595 e fazendo contagem
binária
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/controlando-8-leds-com-arduino-usando-ci74HC595-
fazendo-uma-contagem-binaria.html
Fazer um contador binário que usa 8 LED-s para formar um byte, onde um LED aceso representa
1 e o LED apagado representa 0, e esse conjunto de 8 LED-s que forma o byte irá representar um
número entre 0 e 255, ou melhor, irá contar de 0 até 255 só que em base binária. O componente
principal desse projeto é o circuito integrado 74HC595, que vai ser responsável pelo controle dos 8
LED-s.
O circuito integrado 74HC595 tem a capacidade de transformar uma entrada serial em uma saída
paralela de 8 vias, e cada uma dessas 8 vias da saída paralela irá controlar um LED. E o melhor é
que para controlar esses 8 LED-s vamos usar apenas 3 pinos do Arduino.
Neste projeto os números decimais entre 0 e 255 vão ser representados de forma binária. Para
entender melhor, segue abaixo uma tabela de equivalência entre binários e decimais.
Nr O Material Qtde
1 Arduino UNO R3 01
2 Protoboard 01
3 Cabo jumper macho curto 17
4 Cabo jumper macho longo 10
5 Resistor de 1k ohms 08
6 LED azul 08
Registrador de deslocamento de
7 01
oito bits 74HC595
47
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a conexão
correta dos componentes.
Numa visão geral este projeto funcionará da seguinte forma, o arduino avisa ao CI74HC595 que
vai enviar dados, o CI se prepara para receber os bits, então o arduino envia 8 bits, um de cada
vez, ou seja sequencialmente, o CI apenas armazena cada um dos 8 bits enviados, o arduino
envia um sinal ao CI para que ele libere os 8 bits armazenados, e o CI libera os 8 bits de uma vez,
ou seja paralelamente. E esses passos se repetem para a formação de cada um dos números
entre 0 e 255.
O CI74HC595 é muito bom para controlar muitos LED-s usando poucos pinos do arduino. O
projeto do contador binário apresentado neste post é apenas um exemplo entre milhares de
projetos de controle de LED-s que podem ser desenvolvidos com o CI74HC595.
Segue abaixo o datasheet do CI74HC595, para que você conheça cada um dos pinos do mesmo.
Bem, para começar vamos conectar na protoboard os componentes do projeto, que são os oito
LED-s, de 5mm neste caso, o CI74HC595, e os oito resistores de 330 ohms, um em cada perna
positiva dos LED-s.
48
Agora conecte os fios jumper entre os componentes da protoboard e entre a protoboard e o
Arduino. O esquema detalhado da ligação dos fios jumpers entre os componentes e o Arduino
está detalhado logo abaixo.
SCRIPT ARDUINO
49
Depois de concluir o projeto físico, ou seja, a montagem e as conexões entre Arduino e
componentes, chegou a hora de programar o Arduino para que ele faça o que queremos. Então
usando o cabo USB conecte o Arduino ao seu computador e execute a IDE do Arduino.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino contador binário
3 com saída em 8 LED-s que formam 1 byte.
4 Por Jota
5 ----------------------------------------
6 --=<| www.ComoFazerAsCoisas.com.br |>=--
7 ----------------------------------------
8 */
9
10 //Constantes associadas aos pinos do Arduino
11 int const clock = 2; //ligado ao clock do 74HC595
12 int const latch = 3; //ligado ao latch do 74HC595
13 int const data = 4; //ligado ao data do 74HC595
14
15 void setup() {
16 //definindo os pinos como de saída
17 pinMode(clock,OUTPUT);
18 pinMode(latch,OUTPUT);
19 pinMode(data,OUTPUT);
20 }
21
22 void loop() {
23 //Contando de 0 até 255
24 for (int i = 0; i <= 255; i++) {
25
26 //permite o fluxo dos dados.
27 digitalWrite(latch,LOW);
28
29 for (int x = 0; x <= 7; x++) {
30
31 //pronto para receber o bit.
32 digitalWrite(clock,LOW);
33
34 if (i & (1 << x)) {
35 digitalWrite(data,HIGH);
36 } else {
37 digitalWrite(data,LOW);
38 }
39
40 //grava o bit recebido.
41 digitalWrite(clock,HIGH);
42 }
43
44 //finaliza o fluxo dos dados e envia os 8 bits.
45 digitalWrite(latch,HIGH);
46
47 //tempo de espera entre a exibição de um
48 //número e o outro.
49 delay(100);
50 }
51 }
RESULTADO
50
Após introduzir o código fonte deste projeto na IDE do Arduino, compile-o e posteriormente faça o
upload.
Aguarde alguns segundos e logo o seu projeto estará em funcionamento, contando de 0 até 255 em
base binária, e além disso o efeito dos LED-s apagando e acendendo durante a contagem é muito
legal.
COMENTÁRIOS
51
Aula 06 - Piscar um LED com efeito fader
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-como-piscar-led-com-efeito-fader.html
Diferente do acendimento normal que acende e apaga de uma vez o LED, o efeito fader faz com
que o LED vá acendendo progressivamente, de uma luizinha bem fraca para uma luz forte, e depois
apague da mesma forma.
O segredo deste projeto está na programação e no uso de um pino digital PWM que pode funcionar
como um pino analógico. PWM (Pulse-Width Modulation) ou modulação por largura de pulso é um
meio para se obter resultados analógicos em um pino digital.
Alguns pinos digitais do Arduino possuem esse recurso, no caso do Arduino UNO R3 os pinos
digitais 3, 5, 6, 9, 10 e 11 são PWM. Impresso na placa Arduino existe uma indicação de quais pinos
são PWM. Veja abaixo que os pinos PWM possuem um til ( ~ ) antes do número do pino.
52
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a conexão
correta dos componentes.
O primeiro passo é conectar o LED e o resistor na protoboard. O resistor deve estar ligado a perna
positiva do LED.
Conecte o fio azul na perna positiva do led, antes do resistor, e conecte o fio preto na perna negativa
do LED. Veja no exemplo abaixo.
No arduino conecte o fio azul no pino digital 10. Observe que o pino digital 10 é um pino PWM, que
pode funcionar como um pino analógico. Conecte o fio preto no pino GND.
Logo abaixo está o esquema do projeto pisca LED com efeito fader.
53
SCRIPT ARDUINO
Segue abaixo o código fonte completo que pisca um LED com efeito fader. Lembrando que como
estamos usando um pino digital, no caso o pino 10, que possui recurso PWM vamos tratá-lo como
analógico, usando o comando analogWrite (LED, brilho).
O intervalo/escala de valores para o pino PWM é de 0 até 255, por isso a variável brilho irá assumirá
valores entre 0 e 255 durante a execução do programa. E quanto menor for o valor da variável brilho
menor será o brilho do LED, e quanto maior for o valor da variável brilho maior será o brilho do LED.
Quando brilho for igual a zero o LED será apagado. Quando brilho for igual a 255 o LED brilhará no
máximo.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino acendendo led com efeito fader.
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //Constante que representa o pino onde o positivo do
10 //led será ligado.
11 const int led = 10;
12
13 //Controladores do efeito de fader
14 int brilho = 0;
15 int fader = 5;
16 boolean acende = true;
17 boolean apaga = false;
54
18
19 //Método setup, executado uma vez ao ligar o Arduino.
20 void setup() {
21 //Definindo o pino led como de saída.
22 pinMode(led,OUTPUT);
23 }
24
25 //Método loop, executado enquanto o Arduino estiver ligado.
26 void loop() {
27 analogWrite(led,brilho);
28
29 //Processo de acendimento do led usando o efeito fader.
30 if (acende == true) {
31 if (brilho < 255) {
32 brilho = brilho + fader; //aumentando o brilho do led.
33 } else {
34 acende = false;
35 apaga = true;
36 }
37 }
38
39 //Processo para apagar o led com efeito fader.
40 if (apaga == true) {
41 if (brilho > 0) {
42 brilho = brilho - fader; // diminuindo o brilho do led.
43 } else {
44 acende = true;
45 apaga = false;
46 }
47 }
48
49 delay(20);
50 }
RESULTADO
Compile o programa na IDE do arduino e depois faça o upload e o seu projeto arduino de piscar um
LED com efeito fader está concluído.
COMENTÁRIOS
55
Aula 07 - Sinal de trânsito
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-sinal-de-transito.html
56
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a conexão
correta dos componentes.
O primeiro passo é conectar os LED-s na protoboard. Neste caso o LED vermelho foi conectado na
coluna 5 (perna menor) e na coluna 6 (perna maior), o LED amarelo foi conectado na coluna 10
(perna menor) e na coluna 11 (perna maior) e o LED verde foi conectado na coluna 15 (perna menor)
e na coluna 16 (perna maior).
Conectar a perna de cada um dos resistores de 100 ohms nas colunas 5, 10, e 15 e a outra perna
na linha azul (negativo) da sua protoboard.
57
Usando as cores dos fios jumper da imagem abaixo, conecte o fio jumper preto no pino digital GND
do Arduino. Conecte o fio amarelo no pino digital 10 do arduino, o laranjado no pino digital 9 do
Arduino e o vermelho no pino digital 8 do Arduino.
SCRIPT ARDUINO
58
Conecte o seu Arduino ao computador usando o cabo USB. Abra a IDE do Arduino, copie e cole na
IDE o código fonte do programa.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 //Projeto Arduino sinal de trânsito
2 //Por Jota
3 //www.comofazerascoisas.com.br
4
5 //Método setup, assim que o arduino é ligado ele
6 //é executado, uma vez apenas.
7 void setup() {
8 pinMode(8,OUTPUT); //define o pino 8 como saída
9 pinMode(9,OUTPUT); //define o pino 9 como saída
10 pinMode(10,OUTPUT); //define o pino 10 como saída
11 }
12 //Método loop, é executado enquanto o arduino estiver ligado.
13 void loop() {
14 //Controle do LED verde
15 digitalWrite(8,HIGH); //acende o LED
16 delay(4000); //espera 4 segundos
17 digitalWrite(8,LOW); //apaga o led
18
19 //Controle do LED amarelo
20 digitalWrite(9,HIGH); //acende o LED
21 delay(2000); //espera 2 segundos
22 digitalWrite(9,LOW); //apaga o led
23
24 //Controle do LED vermelho
25 digitalWrite(10,HIGH); //acende o LED
26 delay(4000); //espera 4 segundos
27 digitalWrite(10,LOW); //apaga o led
28 }
Agora compile o programa, pressionando o botão Verify (botão com um V) e posteriormente faça o
upload do programa para o Arduino pressionando o botão Upload (botão com uma seta apontando
para a direita).
59
RESULTADO
Após o upload do programa para o Arduino, o mesmo já começa a se comportar como um sinal de
trânsito, acendento e apagando os LED-s de acordo com a ordem e o tempo definido no programa.
COMENTÁRIOS
60
Aula 08 - Dois sinais de trânsito sincronizados
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/arduino-uno-projeto-sinais-de-transito-sincronizados.html
61
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a conexão
correta dos componentes.
Como fazer dois sinais de trânsito sincronizados. Este tipo de sinal controla o fluxo dos veículos em
duas pistas distintas que se encontram, muito comum em qualquer cidade. E também você
aprenderá alguns aspectos mais interessantes sobre a programação e o projeto físico do Arduino.
Quando duas pistas se encontram existe a necessidade de controlar o fluxo de veículos entre elas,
para evitar colisões. Neste caso existe a necessidade de dois sinais de trânsito sincronizados para
controlar este fluxo de veículos. Este sincronismo entre os sinais significa que enquanto um estiver
aberto, luz verde, ou em estado de atenção, luz amarela, o outro deve estar fechado e vice versa.
Neste projeto vamos contruir um protótipo que faz esse exatamente este controle, simulando dois
sinais de trânsito sincronizados.
62
A primeira coisa a se fazer é conectar os LED-s na protoboard. Cada grupo de três LED-s (verde,
amarelo e vermelho) vai representar um sinal de trânsito. As perninhas menores dos LED-s foram
conectadas nas colunas 5, 10, 15, 20, 25, 30. As pernas maiores nas colunas 6, 11, 16, 21, 26, 31.
Agora você deve dobrar as perninhas dos resistores de 100 ohms para conectá-los a protoboard.
Se você tiver um alicate de bico use-o para fazer as dobras.
63
Conecte os resistores na protoboard, onde uma ponta do resistor ficará ligada na mesma coluna da
perna pequena do LED e a outra ponta na linha negativa (linha horizontal azul neste caso). Logo os
resistores serão conectados nas colunas 5, 10, 15, 20, 25, 30 e na linha negativa (linha horizontal
azul neste caso).
Conecte agora os fios jumpers nas mesmas colunas das pernas maiores dos LED-s e um fio jumper
na linha negativa (linha horizontal azul neste caso). Logo os fios jumpers ficarão nas colunas 6, 11,
16, 21, 26, 31 e um fio jumper na linha negativa.
64
Conecte os fios jumpers nos pinos digitais do Arduino UNO da seguinte forma:
Fio jumper da linha negativa (azul) no pino GND.
Consideraremos o primeiro sinal o conjunto de três LED-s da direita, e o segundo sinal o conjunto
de três LED-s da esquerda.
Primeiro sinal
LED vermelho no pino 5;
LED amarelo no pino 6;
LED verde no pino 7.
Segundo sinal
LED vermelho no pino 8;
LED amarelo no pino 9;
LED verde no pino 10;
65
Para começar a programação conecte o Arduino ao seu computador pelo cabo USB, e no
computador execute a IDE do Arduino.
66
67
SCRIPT ARDUINO
Copie o código fonte abaixo e cole na IDE do Arduino. Este código fonte faz o controle dos dois
sinais de trânsito para que eles funcionem de forma sincronizada, como um sinal de trânsito real.
No método setup os pinos de 5 a 10 foram definidos como pinos de saída.
No método loop cada linha está comentada com a funcionalidade de cada comando.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino 2 sinais de trânsito sincronizados
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //O método setup é executado apenas uma vez,
10 //quando o arduino é ligado
11 void setup() {
12 //definindo os pinos digitais 5, 6, 7, 8, 9 e 10
13 //como pinos de saída.
14 pinMode(5,OUTPUT);
15 pinMode(6,OUTPUT);
16 pinMode(7,OUTPUT);
17 pinMode(8,OUTPUT);
18 pinMode(9,OUTPUT);
19 pinMode(10,OUTPUT);
20 }
21
22 //o método loop é executado repetidamente enquanto o
23 //arduino estiver ligado.
24 void loop() {
25 digitalWrite(5,LOW); //apaga o led vermelho (sinal 1)
26 digitalWrite(7,HIGH); //acende o led verde (sinal 1)
27 digitalWrite(8,HIGH); //acende o led vermelho (sinal 2)
28 delay(4000); //espera 4 segundos
29 digitalWrite(7,LOW); //apaga o led verde (sinal 1)
30
31 digitalWrite(6,HIGH); //acende o led amarelo (sinal 1)
32 delay(2000); //espera 2 segundos
33 digitalWrite(6,LOW); //apaga o led amarelo (sinal 1)
34
35 digitalWrite(5,HIGH); //acende o led vermelho (sinal 1)
36 digitalWrite(8,LOW); //apaga o led vermelho (sinal 2)
37 digitalWrite(10,HIGH); //acende o led verde (sinal 2)
38 delay(4000); //espera 4 segundos
39 digitalWrite(10,LOW); //apaga o led verde (sinal 2)
40
41 digitalWrite(9,HIGH); //acende o led amarelo (sinal 2)
42 delay(2000); //espera 2 segundos
43 digitalWrite(9,LOW); //apaga o led amarelo (sinal 2)
44 }
68
RESULTADO
Agora vá no menu Sketch e execute a opção Veriy/Compile (ou pressione as teclas
CTRL + R) para realizar a compilação do seu programa. E, posteriormente, vá ao menu
File e execute a opção Upload (ou pressione as teclas CTRL + U) para fazer o upload
do programa para o Arduino.
Aguarde alguns segundos e seu Arduino vai começar a funcionar igualzinho a dois
sinais de trânsito sincronizados.
COMENTÁRIOS
69
Aula 09 - Controlando LED RGB multicolorido
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-controlando-led-rgb-multicolorido.html
70
PASSOS DA MONTAGEM DA PROTOBOARD
Para facilitar o entendimento segue abaixo o esquema dos LED-s RGB com suas
respectivas pernas e cores.
71
Conecte apenas uma perna dos três resistores de 330 ohms nas colunas 29, 31 e 32
da protoboard, onde cada resistor ficará ligado a uma perna de cada cor do led.
72
Os fios deverão ser conectados da seguinte forma no arduino:
• fio verde no pino digital 8 do arduino;
• fio azul no pino digital 9 do arduino;
• fio vermelho no pino digital 10 do arduino;
• e fio preto no pino GND.
73
SCRIPT ARDUINO
Primeiramente conecte o Arduino ao seu computador utilizando o cabo USB, execute
a IDE do Arduino e insira o código fonte do projeto, que esta logo abaixo.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino controla led RGB.
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //Declaração das constantes
10 const int ledAzul = 10;//refere-se ao pino digital 10.
11 const int ledVerde = 9; //refere-se ao pino digital 9.
12 const int ledVermelho = 8; //refere-se ao pino digital 8.
13
14 //Método setup, executado uma vez ao ligar o Arduino.
15 void setup() {
16 //Definindo os pinos digitais (8, 9, 10) como de saída.
17 pinMode(ledAzul,OUTPUT);
18 pinMode(ledVerde,OUTPUT);
19 pinMode(ledVermelho,OUTPUT);
20 }
21
22 //Método loop, executado enquanto o Arduino estiver ligado.
23 void loop() {
24 //Acendendo cada cor individualmente.
25 digitalWrite(ledAzul,HIGH);
26 delay(500);
27 digitalWrite(ledAzul,LOW);
28
29 digitalWrite(ledVerde,HIGH);
30 delay(500);
31 digitalWrite(ledVerde,LOW);
32
33 digitalWrite(ledVermelho,HIGH);
34 delay(500);
35 digitalWrite(ledVermelho,LOW);
36
37 //Misturando as cores do led para obter cores diferentes.
38 digitalWrite(ledAzul,HIGH);
39 digitalWrite(ledVerde,HIGH);
40 digitalWrite(ledVermelho,HIGH);
41 delay(1500);
42 digitalWrite(ledAzul,HIGH);
43 digitalWrite(ledVerde,HIGH);
44 digitalWrite(ledVermelho,LOW);
45 delay(1500);
46 digitalWrite(ledAzul,LOW);
47 digitalWrite(ledVerde,HIGH);
48 digitalWrite(ledVermelho,HIGH);
49 delay(1500);
50 digitalWrite(ledAzul,HIGH);
51 digitalWrite(ledVerde,LOW);
52 digitalWrite(ledVermelho,HIGH);
53 delay(1500);
54 }
74
Após inserir o código fonte do projeto na IDE do Arduino, compile e faça o upload do
programa.
RESULTADO
COMENTÁRIOS
75
Aula 10 - Controlar as cores de um LED RGB com botões
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/arduino-como-controlar-cores-de-um-led-rgb-com-
botoes.html
76
PASSOS DA MONTAGEM DA PROTOBOARD
77
Usando os fios jumpers pequenos conecte os botões a linha horizontal vermelha
(positivo) nas colunas 50, 45 e 40. Conecte a perna terra do LED, coluna 55, a linha
horizontal azul (negativo).
78
• coluna 53 um fio azul após o resistor;
• coluna 54 um fio verde após o resistor;
• coluna 56 um fio vermelho após o resistor;
• um fio vermelho na linha vermelha (positivo)
• um fio preto na linha azul (negativo).
A ligação entre o LED, os 3 resistores e os fios jumpers vermelho, verde e azul seria
como mostrado na imagem abaixo.
A perna do resistor do led que vai ligada ao fio dos pinos digitais não é conectada na
coluna da protoboard e sim conectada direto no fio.
Após conectar todos os fios, seu projeto físico para controlar as cores de um led RGB
pelos botões está pronto. Agora o próximo passo é conectar o Arduino ao seu
computador por meio do cabo USB para iniciar a programação das funcionalidades
desejadas.
80
SCRIPT ARDUINO
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino controla LED RGB com botões.
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //Declaração das constantes
10 const int ledAzul = 8; //ledAzul refere-se ao pino digital 8.
11 const int ledVerde = 9; //ledVerde refere-se ao pino digital 9.
12 const int ledVermelho = 10; //ledVermelho refere-se ao pino digital 10.
13
14 const int botaoAzul = 2; //botaoAzul refere-se ao pino digital 2.
15 const int botaoVerde = 3; //botaoVerde refere-se ao pino digital 3.
16 const int botaoVermelho = 4; //botaoVermelho refere-se ao pino digital
17 4.
18
19 //Variáveis que conterão os estados dos botões (pressionados ou não).
20 int estadoBotaoAzul;
21 int estadoBotaoVerde;
22 int estadoBotaoVermelho;
23
24 //Método setup, executado uma vez ao ligar o Arduino.
25 void setup() {
26 //Definindo os pinos digitais (8, 9, 10) como de saída.
81
27 pinMode(ledAzul,OUTPUT);
28 pinMode(ledVerde,OUTPUT);
29 pinMode(ledVermelho,OUTPUT);
30
31 //Definindo os pinos digitais (2, 3, 4) como de entrada.
32 pinMode(botaoAzul,INPUT);
33 pinMode(botaoVerde,INPUT);
34 pinMode(botaoVermelho,INPUT);
35 }
36
37 //Método loop, executado enquanto o Arduino estiver ligado.
38 void loop() {
39
40 //Lendo o estado dos botões pelos pinos digitais.
41 estadoBotaoAzul = digitalRead(botaoAzul);
42 estadoBotaoVerde = digitalRead(botaoVerde);
43 estadoBotaoVermelho = digitalRead(botaoVermelho);
44
45 //Acendendo o led RGB conforme os botões pressionados.
46 //Tratando a cor azul
47 if (estadoBotaoAzul == HIGH) {
48 digitalWrite(ledAzul,HIGH);
49 } else {
50 digitalWrite(ledAzul,LOW);
51 }
52
53 //Tratando a cor verde
54 if (estadoBotaoVerde == HIGH) {
55 digitalWrite(ledVerde,HIGH);
56 } else {
57 digitalWrite(ledVerde,LOW);
58 }
59
60 //Tratando a cor vermelha
61 if (estadoBotaoVermelho == HIGH) {
62 digitalWrite(ledVermelho,HIGH);
63 } else {
64 digitalWrite(ledVermelho,LOW);
65 }
66 }
67
RESULTADO
82
Pronto! O projeto como controlar as cores de um LED RGB usando botões está
concluído.
Se você pressionar mais de um botão de uma vez ocorrerá uma mistura de cores que
formará uma nova cor.
COMENTÁRIOS
83
Aula 11 - Sensor de luz LDR com saída de leitura em LED-s
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-sensor-de-luz-ldr-com-leds.html
Este projeto faz a leitura da iluminação de um ambiente, pelo LDR (Light Dependent
Resistor), e exibe o resultado da leitura do sensor nos LED-s.
Funciona da seguinte forma, caso o ambiente esteja bem iluminado o LED verde
acenderá, caso a iluminação do ambiente for mediana o LED amarelo acenderá e caso
a iluminação esteja ruim o LED vermelho acenderá, e você também poderá ver os
valores lidos no LDR no serial monitor da IDE do Arduino.
Você pode alterar a leitura da iluminação aproximando ou afastando a mão do sensor
LDR.
Os intervalos de valores que representam a intensidade da iluminação são fixos e estão
definidos dentro do programa que se encontra abaixo. Lembro que estes valores podem
ser alterados conforme sua necessidade.
84
PASSOS DA MONTAGEM DA PROTOBOARD
Conecte o sensor LDR com uma de suas pernas no 5V do Arduino e a outra perna no
pino analógico A0.
Conecte o resistor de 10K ohms com uma perna entre o sensor LDR e o fio jumper do
pino digital A0 e a outra perna no pino GND.
Conecte os três LED-s na protoboard e na perna maior (positivo) de cada LED conecte
um resistor de 100 ohms e, após o resistor, conecte um fio jumper.
Ligue a perna menor (negativo) de cada um dos LED-s no GND do Arduino.
Os fios positivos dos LED-s ficarão nos seguintes pinos digitais do Arduino:
85
Veja abaixo as ligações dos fios jumpers no Arduino.
SCRIPT ARDUINO
Abra a IDE do Arduino, conecte ele ao computador pelo cabo USB, insira o código fonte
na IDE compile e faça o upload do programa.
Lembro que os valore lidos no sensor LDR poderão ser visualizados no Serial Monitor
da IDE.
Para acessar o Serial Monitor pressione as teclas Ctrl + Shift + M.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino sensor de luz com saida de LED-s.
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 int sensor = 0; //Pino analógico em que o sensor está conectado.
10 int valorSensor = 0; //Usada para ler o valor do sensor em tempo real.
11
12 const int ledVerde = 8;
13 const int ledAmarelo = 9;
14 const int ledVermelho = 10;
15
16 //Função setup, executado uma vez ao ligar o Arduino.
17 void setup(){
18 //Ativando o serial monitor que exibirá os valores lidos no sensor.
19 Serial.begin(9600);
20
21 //Definindo pinos digitais dos LED-s como de saída.
22 pinMode(ledVerde,OUTPUT);
23 pinMode(ledAmarelo,OUTPUT);
24 pinMode(ledVermelho,OUTPUT);
25 }
26
27 //Função loop, executado enquanto o Arduino estiver ligado.
28 void loop(){
29
30 //Lendo o valor do sensor.
31 int valorSensor = analogRead(sensor);
32
86
33 //Valores da luminosidade podem ser alterados conforme necessidade.
34
35 //Luminosidade baixa.
36 if (valorSensor < 300) {
37 apagaLeds();
38 digitalWrite(ledVermelho,HIGH);
39 }
40
41 //Luminosidade média.
42 if (valorSensor >= 300 && valorSensor <= 800) {
43 apagaLeds();
44 digitalWrite(ledAmarelo,HIGH);
45 }
46
47 //Luminosidade alta.
48 if (valorSensor > 800) {
49 apagaLeds();
50 digitalWrite(ledVerde,HIGH);
51 }
52
53 //Exibindo o valor do sensor no serial monitor.
54 Serial.println(valorSensor);
55
56 delay(50);
57 }
58
59 //Função criada para apagar todos os LED-s de uma vez.
60 void apagaLeds() {
61 digitalWrite(ledVerde,LOW);
62 digitalWrite(ledAmarelo,LOW);
63 digitalWrite(ledVermelho,LOW);
64 }
RESULTADO
Segue abaixo o esquema detalhado do projeto Arduino com sensor de luz LDR com
saída de leitura em LED-s.
COMENTÁRIOS
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-como-emitir-sons-com-o-buzzer.html
87
O QUE VAMOS FAZER?
Emitir sons em uma determinada frequência e intervalo de tempo usando um buzzer.
88
PASSOS DA MONTAGEM DA PROTOBOARD
No Arduino ligue o fio vermelho no pino digital 10 e o fio preto no pino GND.
89
SCRIPT ARDUINO
Segue abaixo o código fonte do projeto com buzzer que faz o mesmo emitir um som de
1500 hz mum intervalor de meio em meio segundo.
A emissão do som se dá por meio da função tone, onde o segundo parâmetro informa
a frequência do som que quer emitir, que neste caso e 1500.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino beep com buzzer.
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //Constante que representa o pino onde o positivo
10 //do buzzer será ligado.
11 const int buzzer = 10;
12
13 //Método setup, executado uma vez ao ligar o Arduino.
14 void setup() {
15 //Definindo o pino buzzer como de saída.
16 pinMode(buzzer,OUTPUT);
17 }
18
19 //Método loop, executado enquanto o Arduino estiver ligado.
20 void loop() {
21 //Ligando o buzzer com uma frequencia de 1500 hz.
22 tone(buzzer,1500);
23 delay(500);
24
25 //Desligando o buzzer.
26 noTone(buzzer);
27 delay(500);
28 }
90
RESULTADO
Após inserir o código fonte na IDE do Arduino compile o programa e faça o upload.
Pronto o buzzer vai começar a dar um beep nos intervalos de tempo e na frequência
programada.
Se você for bom em frequências sonoras poderá tocar até uma música usando o
Arduino.
E para finalizar segue abaixo o esquema do projeto Arduino com buzzer.
COMENTÁRIOS
91
Aula 13 - Controlando dois servomotores com potenciômetros
CRÉDITOS DA AULA
https://www.tinkercad.com/things/2TBggrERoFG-copy-of-68-arduino-pan-tilt-
joystick/editel?tenant=circuits
92
SCRIPT ARDUINO
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 // www.ProgettiArduino.com
2 // Pan tilt controllato do joystick
3
4 #include <Servo.h>
5
6 int ServoHorizontalPin = 3;
7 int ServoVerticalPin = 4;
8 int HorizontalPotPin = A0;
9 int VerticalPotPin = A1;
10 int ServoH_Min = 0;
11 int ServoH_Max = 180;
12 int ServoV_Min = 0;
13 int ServoV_Max = 180;
14
15 Servo HorizontalServo;
16 Servo VerticalServo;
17
18 int HorizontalPotValue;
19 int HorizontalServoPosition;
20 int VerticalPotValue;
21 int VerticalServoPosition;
22
23 void setup()
24 {
25 HorizontalServo.attach(ServoHorizontalPin);
26 VerticalServo.attach(ServoVerticalPin);
27 }
28
29 void loop()
30 {
31 HorizontalPotValue = analogRead(HorizontalPotPin);
32 VerticalPotValue = analogRead(VerticalPotPin);
33 HorizontalServoPosition = map(HorizontalPotValue, 0, 1023, ServoH_Min
34 , ServoH_Max);
35 VerticalServoPosition = map(VerticalPotValue, 0, 1023, ServoH_Min ,
36 ServoH_Max);
37 HorizontalServo.write(HorizontalServoPosition);
38 VerticalServo.write(VerticalServoPosition);
39 delay(20);
40 }
93
RESULTADO
COMENTÁRIOS
94
Aula 14 - Controlando um servomotor com potenciômetro
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/controlando-um-servomotor-com-potenciometro-no-
arduino.html
O servomotor usado neste projeto foi um TG9e da Turnigy, um microservo que possui
um ótimo custo-benefício.
Começe conectando o potenciômetro na protoboard e depois conecte os fios jumper
entre os componentes da protoboard, o servomotor e o Arduino.
Para fazer estas conexões corretamente veja o esquema do projeto.
95
SCRIPT ARDUINO
Agora vamos programar o Arduino para que ele se comporte como desejamos. Então
conecte o Arduino ao seu computador com o cabo USB, abra a IDE do Arduino e
programe o Arduino.
Segue abaixo o código fonte deste projeto todo comentado para facilitar o entendimento
de cada parte do código.
Segue abaixo o código fonte deste projeto. Copie e cole na IDE do Arduino.
1 /*
2 Projeto Arduino controlando um servomotor com potenciômetro
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //incluindo biblioteca para controle do servomotor
10 #include "Servo.h"
11
12 //Criando um objeto da classe Servo
13 Servo servoMotorObj;
14
15 //pino analógico onde o potenciômetro está conectado
16 int const potenciometroPin = 0;
17
18 //pino digital associado ao controle do servomotor
19 int const servoMotorPin = 3;
20
21 //variável usada para armazenar o valor lido no potenciômetro
22 int valPotenciometro;
23
96
24 void setup() {
25 //associando o pino digital ao objeto da classe Servo
26 servoMotorObj.attach(servoMotorPin);
27 }
28
29 void loop()
30 {
31 //lendo o valor do potenciômetro (intervalo entre 0 e 1023)
32 valPotenciometro = analogRead(potenciometroPin);
33
34 //mapeando o valor para a escala do servo (entre 0 e 180)
35 valPotenciometro = map(valPotenciometro, 0, 1023, 0, 180);
36
37 //definindo o valor/posição do servomotor
38 servoMotorObj.write(valPotenciometro);
39 delay(15);
40 }
RESULTADO
Após introduzir o código fonte na IDE do Arduino, compile-o e depois faça o upload,
aguarde alguns instantes para que a transferência do programa seja realizada.
Vire o potenciômetro para um lado e veja que o braço do servomotor vai se mover.
COMENTÁRIOS
97
Aula 15 - Controlar a velocidade de um motor CC com potenciômetro
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/controlando-a-velocidade-de-um-motor-cc-no-arduino-com-
potenciometro.html
Motor CC, ou corrente contínua, terá a sua velocidade controlada por um potenciômetro
giratório. A medida que gira potenciômetro para o lado esquerdo o motor CC vai
aumentando progressivamente a velocidade e quando você gira para a direita vai
diminuindo a velocidade até parar.
Este projeto é um excelente exemplo de manipulação de um motor CC e o primeiro
passo para quem deseja trabalhar com projetos Arduino voltados para a robótica, pois
motores CC, motores de passo e servo motores são peças-chave na construção de
robos, carrinhos robóticos, braços robóticos etc.
98
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema do projeto. A imagem do projeto será a sua referência para a
conexão correta dos componentes.
99
SCRIPT ARDUINO
Conecte-o no seu computador pelo cabo USB e abra a IDE do Arduino. O código fonte
comentado deste projeto segue abaixo.
1 /*
2 Projeto Arduino controlando um motor CC.
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //pino analógico onde o potenciômetro está conectado.
10 int const potenciometro = 0;
11
12 //pino digital onde o TIP120 está conectado.
13 int const transistor = 9;
14
15 //armazenará o valor lido no potenciômetro.
16 int valPotenciometro = 0;
17
18 //função setup é executada uma vez quando o Arduino é ligado.
19 void setup() {
20
21 //definindo o pino digital 9 como de saída.
22 pinMode(transistor, OUTPUT);
23 }
24
25 //Função loop é executada repetidamente enquanto
26 //o Arduino estiver ligado.
27 void loop() {
28
29 //lendo o valor do potenciômetro (0 até 1023) e
30 //dividindo por 4 para obter um valor entre 0 e 255
31 //que são valores adequados para a base do TIP120.
32 valPotenciometro = analogRead(potenciometro) / 4;
33
34 //atribuindo o valor lido no potenciômetro
35 //a base do TIP120.
36 analogWrite(transistor, valPotenciometro);
37 }
100
RESULTADO
Depois de inserir o código fonte na IDE, agora é só compilar e fazer o upload do mesmo
para o Arduino. Aguarde alguns instantes para a conclusão do upload e logo poderá
girar o potenciômetro para ambos os lados e ver o seu motor CC aumentar e diminuir
a velocidade de rotação.
COMENTÁRIOS
101
Aula 16 - Motor CC com controle de velocidade, LED-s medidores de
potência e buzzer para alerta de potência máxima
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/motor-cc-no-arduino-com-controle-de-velocidade-e-leds-
medidores-de-potencia.html
102
PASSOS DA MONTAGEM DA PROTOBOARD
103
SCRIPT ARDUINO
Usando o cabo USB conecte o Arduino ao seu computador execute a IDE do Arduino, copie e cole
o código fonte abaixo na IDE, compile e faça o upload.
1 /*
2 Projeto Arduino controlando a velocidade de um motor cc
3 com mostrador de leds.
4 Por Jota
5 ----------------------------------------
6 --=<| www.ComoFazerAsCoisas.com.br |>=--
7 ----------------------------------------
8 */
9
10 //pino analógico onde o potenciômetro está conectado.
11 int const potenciometro = 0;
12
13 //pino digital onde o TIP120 está conectado.
14 int const transistor = 9;
15
16 //pinos digitais
17 int const ledVerde = 2; //led verde está conectado.
18 int const ledAmarelo = 3; //led amarelo está conectado.
19 int const ledVermelho = 4; //led vermelho está conectado.
20
21 //armazenará o valor lido no potenciômetro.
22 int valPotenciometro = 0;
23
24 //pino onde o positivo do buzzer será ligado.
25 const int buzzer = 10;
26
27 //void setup é executada uma vez quando o Arduino é ligado.
28 void setup() {
29 //Ativando o serial monitor que exibirá os valores lidos no sensor.
30 Serial.begin(9600);
31
32 //definindo o pino digital 9 como de saída.
33 pinMode(transistor, OUTPUT);
34
35 //definindo pinos dos leds como de saída
36 pinMode(ledVerde, OUTPUT);
37 pinMode(ledAmarelo, OUTPUT);
38 pinMode(ledVermelho, OUTPUT);
39
40 //Definindo o pino buzzer como de saída.
41 pinMode(buzzer,OUTPUT);
42 }
43
44 //Função loop é executada repetidamente enquanto
45 //o arduino estiver ligado.
46 void loop() {
47
48 //lendo o valor do potenciômetro (0 até 1023) e
49 //dividindo por 4 para obter um valor entre 0 e 255
50 //que são valores adequados para a base do TIP120.
51 valPotenciometro = analogRead(potenciometro) / 4;
52
53 //atribuindo o valor lido no potenciômetro a
54 //base do TIP120.
55 analogWrite(transistor, valPotenciometro);
56
57 //acendendo e pagando leds conforme posição do
104
58 //potenciômetro
59 controlarLeds();
60
61 //Exibindo o valor do sensor no serial monitor.
62 Serial.println(valPotenciometro);
63
64 }
65
66 void controlarLeds() {
67 //Led verde - acendendo ou apagando conforme
68 //posição do potenciômetro.
69 if (valPotenciometro >= 40) {
70 digitalWrite(ledVerde,HIGH);
71 } else {
72 digitalWrite(ledVerde,LOW);
73 }
74
75 //Led amarelo - acendendo ou apagando conforme
76 //posição do potenciômetro.
77 if (valPotenciometro >= 125) {
78 digitalWrite(ledAmarelo,HIGH);
79 } else {
80 digitalWrite(ledAmarelo,LOW);
81 }
82
83 //Led vermelho - acendendo ou apagando conforme
84 //posição do potenciômetro.
85 if (valPotenciometro >= 210) {
86 digitalWrite(ledVermelho,HIGH);
87 //Ligando o buzzer com uma frequencia de 1500 hz.
88 tone(buzzer,1500);
89 }
90
91 else {
92
93 digitalWrite(ledVermelho,LOW);
94 //Desligando o buzzer.
95 noTone(buzzer);
96 }
97 }
105
RESULTADO
COMENTÁRIOS
106
Aula 17 - Alarme com sensor de movimentos PIR
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/como-fazer-um-alarme-com-arduino-sensor-de-
movimentos-pir.html
O sensor PIR (Passive InfraRed sensor) é um sensor eletrônico que mede a luz infravermelha
irradiada de objetos. O sensor PIR também é conhecido como sensor de presença ou sensor de
movimentos, e ao conectá-lo ao Arduino você terá como controlar este sensor e disparar diversas
ações ao detectar movimentos.
Este projeto de alarme é capaz de detectar movimentos em um ambiente disparando um sinal
sonoro e acendendo um LED. Pode ser usado por exemplo na porta de entrada da sua casa ou em
algum cômodo e quando alguém passar por lá o alarme será disparado. Então, se você necessita
ser avisado da presença de alguém em um determinado lugar este projeto é uma opção interessante
e fácil de fazer.
O sensor PIR é fácil de se encontrar, a maioria das lojas virtuais e físicas que vendem Arduinos e/ou
componentes eletrônicos normalmente possuem este sensor. Só verifique se o sensor PIR que você
pretende adquirir possui controle de sensibilidade da detecção de movimentos. Este que usei no
projeto do alarme possui três pinos, controle de sensibilidade e controle de tempo que o sensor fica
"ligado" quando detecta algum movimento.
107
PASSOS DA MONTAGEM DA PROTOBOARD
Segue abaixo o esquema detalhado do projeto do Alarme com Arduino e sensor de movimento PIR.
Por meio deste esquema fica mais fácil de se ter uma visão geral, e de como montar corretamente
o projeto.
SCRIPT ARDUINO
1 /*
2 Projeto Arduino - Alarme com Arduino e sensor de movimento PIR
3 Por Jota
4 ----------------------------------------
5 --=<| www.ComoFazerAsCoisas.com.br |>=--
6 ----------------------------------------
7 */
8
9 //Declaração das variáveis referentes aos pinos digitais.
10 int pinBuzzer = 7;
11 int pinSensorPIR = 8;
12 int pinLed = 9;
13 int valorSensorPIR = 0;
14
15 void setup() {
16 Serial.begin(9600); //Iniciando o serial monitor
17
18 //Definido pinos como de entrada ou de saída
19 pinMode(pinBuzzer,OUTPUT);
20 pinMode(pinSensorPIR,INPUT);
21 pinMode(pinLed,OUTPUT);
22 }
23
24 void loop() {
25 //Lendo o valor do sensor PIR. Este sensor pode assumir 2 valores
26 //1 quando detecta algum movimento e 0 quando não detecta.
27 valorSensorPIR = digitalRead(pinSensorPIR);
28
29 Serial.print("Valor do Sensor PIR: ");
30 Serial.println(valorSensorPIR);
31
32 //Verificando se ocorreu detecção de movimentos
33 if (valorSensorPIR == 1) {
34 ligarAlarme();
108
35 } else {
36 desligarAlarme();
37 }
38 }
39
40 void ligarAlarme() {
41 //Ligando o led
42 digitalWrite(pinLed, HIGH);
43
44 //Ligando o buzzer com uma frequencia de 1500 hz.
45 tone(pinBuzzer,1500);
46
47 delay(4000); //tempo que o LED fica acesso e o buzzer toca
48
49 desligarAlarme();
50 }
51
52 void desligarAlarme() {
53 //Desligando o LED
54 digitalWrite(pinLed, LOW);
55
56 //Desligando o buzzer
57 noTone(pinBuzzer);
58 }
RESULTADO
COMENTÁRIOS
109
Aula 18 - Display LCD - Hello World
CRÉDITOS DA AULA
http://www.arduino.cc/en/Tutorial/LiquidCrystalHelloWorld
110
SCRIPT ARDUINO
1 /*
2 LiquidCrystal Library - Hello World
3
4 Demonstrates the use a 16x2 LCD display. The LiquidCrystal
5 library works with all LCD displays that are compatible with the
6 Hitachi HD44780 driver. There are many of them out there, and you
7 can usually tell them by the 16-pin interface.
8
9 This sketch prints "Hello World!" to the LCD
10 and shows the time.
11
12 The circuit:
13 * LCD RS pin to digital pin 12
14 * LCD Enable pin to digital pin 11
15 * LCD D4 pin to digital pin 5
16 * LCD D5 pin to digital pin 4
17 * LCD D6 pin to digital pin 3
18 * LCD D7 pin to digital pin 2
19 * LCD R/W pin to ground
20 * LCD VSS pin to ground
21 * LCD VCC pin to 5V
22 * 10K resistor:
23 * ends to +5V and ground
24 * wiper to LCD VO pin (pin 3)
25
26 Library originally added 18 Apr 2008
27 by David A. Mellis
28 library modified 5 Jul 2009
29 by Limor Fried (http://www.ladyada.net)
30 example added 9 Jul 2009
31 by Tom Igoe
32 modified 22 Nov 2010
33 by Tom Igoe
34 modified 7 Nov 2016
35 by Arturo Guadalupi
36
37 This example code is in the public domain.
38
39 http://www.arduino.cc/en/Tutorial/LiquidCrystalHelloWorld
40
41 */
42
43 // include the library code:
44 #include <LiquidCrystal.h>
45
46 // initialize the library by associating any needed LCD interface pin
47 // with the Arduino pin number it is connected to
48 const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
49 LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
50
51 void setup() {
52 // set up the LCD's number of columns and rows:
53 lcd.begin(16, 2);
54 // Print a message to the LCD.
55 lcd.print("hello, world!");
56 }
57
58 void loop() {
59 // set the cursor to column 0, line 1
60 // (note: line 1 is the second row, since counting begins with 0):
61 lcd.setCursor(0, 1);
62 // print the number of seconds since reset:
63 lcd.print(millis() / 1000);
64 }
111
RESULTADO
COMENTÁRIOS
112
Aula 19 - Display LCD com dois potenciômetros
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-com-display-lcd.html
Um display LCD eleva o seu projeto a outro nível, pois possibilita uma saída mais amigável e a
possibilidade de interação por parte dos usuários.
Usar displays LCDs em projetos Arduino ao contrário do que parece é bem fácil, pois todas as
funcionalidades já estão codificadas na biblioteca LiquidCrystal.h que será incluída, é terá suas
funções chamadas a partir do nosso programa desenvolvido para este projeto.
Outro ponto importante é o uso de dois potenciômetros que servem para controlar o brilho e o
contraste da tela LCD permitindo que você defina um nível adequado de visibilidade para o display
LCD.
Nr O Material Qtde
1 Arduino UNO R3 01
2 Protoboard 01
3 Cabo jumper macho longo 10
Display LCD do tipo JHD 162A de
4 01
16 colunas e 2 linhas
5 Potenciômetro de 10K ohms 02
Segue abaixo o datasheet, detalhando a funcionalidade de cada pino, do display LCD JHD 162A
que foi usado neste projeto.
A imagem abaixo mostra o verso do display LCD JHD 162A. No canto inferior direito vemos o código
deste display.
114
Vamos iniciar a montagem do nosso projeto conectando o display LCD na protoboard. Neste caso
o pino 1 do display LCD foi conectado a coluna 0 da protoboard.
115
Agora conecte o 5V e o GND do Arduino na protoboard. Conecte os dois potenciômetros e também
os ligue ao 5V e GND. Neste caso o fio vermelho é o 5V e o preto e o GND.
Agora chegou a hora de ligar o display LCD ao Arduino. A ligação será feita da seguinte forma.
• pino 1 do LCD ligado ao GND do Arduino;
• pino 2 do LCD ligado ao 5V do Arduino;
• pino 3 do LCD ligado ao pino central do primeiro potênciômetro (controle de contraste);
• pino 4 do LCD ligado ao pino digital 9 do Arduino;
• pino 5 do LCD ligado ao GND do Arduino;
• pino 6 do LCD ligado ao pino digital 8 do Arduino;
• pino 11 do LCD ligado ao pino digital 5 do Arduino;
• pino 12 do LCD ligado ao pino digital 4 do Arduino;
• pino 13 do LCD ligado ao pino digital 3 do Arduino;
• pino 14 do LCD ligado ao pino digital 2 do Arduino;
• pino 15 do LCD ligado ao pino central do segundo potênciômetro (controle do brilho);
• pino 16 do LCD ligado ao GND do Arduino.
Lembrando que você poderá verificar o esquema de montagem do projeto no início, que mostra
com detalhes como as ligações entre os componentes foram feitas.
116
Agora chegou a hora de programar o Arduino. Segue abaixo o código fonte comentado deste
projeto, lembrando que as mensagens exibidas no display LCD, pelo comando lcd.print poderão ser
alteradas.
SCRIPT ARDUINO
RESULTADO
117
Após transferir o código fonte para a IDE do Arduino compile-o e depois faça o upload do mesmo.
Ajuste os potenciômetros para que as mensagens fiquem visíveis e pronto, seu projeto foi concluído.
COMENTÁRIOS
118
Aula 20 - Display LCD com sensor de temperatura e luminosidade
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-com-display-lcd-sensor-de-temperatura-e-
sensor-de-luz.html
119
PASSOS DA MONTAGEM DA PROTOBOARD
O esquema do projeto, logo abaixo, e que servirá de base durante todo o desenvolvimento do
mesmo, te mostra com detalhes todos os componentes e as conexões entre eles, que serão tratadas
com detalhes mais adiante.
Além do esquema precisamos saber de mais alguns detalhes técnicos sobre essas ligações. Vamos
começar pelo datasheet do display LCD JHD 162A, que mostra a finalidade de cada um dos pinos
do display LCD. Caso o seu display não seja um JHD 162A você poderá procurar na internet pelo
datasheet do mesmo e assim adaptar para esse projeto.
120
Segue abaixo a descrição de como deverão ser feitas as ligações entre o display LDC, o Arduino, e
os potenciômetros que controlam o brilho e o contrate do LCD.
• pino 1 do LCD ligado ao GND do Arduino;
• pino 2 do LCD ligado ao 5V do Arduino;
• pino 3 do LCD ligado ao pino central do primeiro potênciômetro (controle de contraste);
• pino 4 do LCD ligado ao pino digital 9 do Arduino;
• pino 5 do LCD ligado ao GND do Arduino;
• pino 6 do LCD ligado ao pino digital 8 do Arduino;
• pino 11 do LCD ligado ao pino digital 5 do Arduino;
• pino 12 do LCD ligado ao pino digital 4 do Arduino;
• pino 13 do LCD ligado ao pino digital 3 do Arduino;
• pino 14 do LCD ligado ao pino digital 2 do Arduino;
• pino 15 do LCD ligado ao pino central do segundo potênciômetro (controle do brilho);
• pino 16 do LCD ligado ao GND do Arduino.
121
Agora trataremos do sensor de temperatura LM35. Segue abaixo uma imagem que detalha a função
de cada pino do sensor.
122
o seu Arduino ao computador por meio do cabo USB, execute a IDE de programação do Arduino e
introduza o código fonte abaixo.
SCRIPT ARDUINO
RESULTADO
Agora compile o código fonte e faça o upload para o Arduino. O projeto começará a funcionar,
mostrando a temperatura do ambiente e a intensidade de luz, que vai de 0 até 1023. Regule o brilho
e o contraste do display LCD, pelos potenciômetros, para ficar bem nítido a exibição dos valores de
temperatura e luz.
COMENTÁRIOS
124
Aula 21 - Display LCD com dois potenciômetros e servomotor
controlado com um potenciômetro
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/arduino-com-servomotor-robotico-e-display-lcd.html
Montar um display LCD com dois potenciômetros e servomotor controlado com um potenciômetro.
Uma das diferenças de um robô para um aparelho eletrônico comum é que o robô se movimenta
para realizar tarefas. Para se movimentar um robô usa motores de diversos tipos, como motores de
passo, motores de corrente contínua e servomotores. E no projeto Arduino com servomotor robótico
e display LCD faremos um servomotor se movimentar e também trataremos estes movimentos
exibindo as direções do braço do servomotor no display LCD. Como um do nosso objetivo com os
projetos em Arduino, aqui do site ComoFazerAsCoisas, é chegar a construção de robôs de diversos
tipos, estamos apresentando os princípios básicos, que quando unidos permitirão a construção de
um robô completo.
O projeto Arduino com servomotor e display LCD, permite que você controle os movimentos de um
servomotor por um potenciômetro giratório. Quando você gira o potenciômetro para um lado ou para
o outro o braço do servomotor acompanha estes movimentos e ainda é mostrado no display LCD
em tempo real em que direção o braço do servomotor está, no final deste post tem o vídeo que
mostra este projeto em funcionamento.
Aplicando o princípio deste projeto, você poderia por exemplo construir um guincho robótico ou um
braço robótico.
125
PASSOS DA MONTAGEM DA PROTOBOARD
O servomotor que usamos neste projeto é um microservo TG9E da Turnigy, que é um dos bons
custo/benefício do mercado. Ele é um servo bem pequeno e leve, tem um preço camarada, quando
comparado a outros servos, e pode ser usado em muitos projetos de robótica. Este microservo
também é muito usado em aeromodelos e carrinhos controle remoto. Nos potenciômetros desse
projeto usei knobs para facilitar na hora de girá-los.
Segue abaixo o esquema do projeto, que servirá de base para a ligação entre todos os componentes
e o Arduino, e será nossa referência durante o desenvolvimento do projeto físico.
Segue abaixo o datasheet, detalhando a funcionalidade de cada pino, do display LCD JHD 162A
que foi usado neste projeto.
Bem, então depois de fazer todas as ligações entre os componentes, concluindo o projeto físico,
chegou a hora de programar o Arduino para que ele faça o controle do servomotor e também informe
a posição do mesmo no display LDC. Então conecte o seu Arduino ao computador, usando o cabo
USB, e execute a IDE do Arduino.
127
SCRIPT ARDUINO
RESULTADO
128
Depois de copiar o código fonte na IDE compile e faça o upload para o Arduino. Agora gire o
potenciômetro para um lado e para o outro e veja que o braço do servomotor "segue" estes
movimentos.
COMENTÁRIOS
129
Aula 22 - Relógio simples com display LCD
CRÉDITOS DA AULA
https://www.tinkercad.com/things/1y5mbRo5UOP-aula-24-relogio-simples-com-display-lcd/editel
Nr O Material Qtde
1 Arduino UNO R3 01
2 Protoboard 01
3 Cabo jumper macho longo 18
4 Sensor de distância ultrassônico 03
Motor de engrenagem de uso
5 02
não profissional
Display LCD do tipo JHD162A,
6 01
de 16 colunas por 2 linhas
4 baterias, AAA, sim Bateria
7 01
1,5V
8 Micro servo 01
9 Acionador de motor de ponte H 01
SCRIPT ARDUINO
130
Segue abaixo o código fonte completo e comentado deste projeto.
1 #include <LiquidCrystal.h>
2 LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
3
4 // Calibrate your Region time befor running the code
5 int sec;
6 int mint = 5;
7 int hur = 12;
8 int dy = 23;
9 int mnth = 8;
10 int yer = 2019;
11
12 void setup() {
13 Serial.begin(9600);
14 lcd.begin(16, 2);
15 }
16
17 void loop() {
18 for (sec = 0 ; sec < 60 ; sec++) {
19 lcd.setCursor(6, 0); lcd.print(":");
20 lcd.setCursor(9, 0); lcd.print(":");
21 Serial.print(mint); Serial.print(":");
22 Serial.println(sec);
23 if (hur <= 9) {
24 lcd.setCursor(4, 0); lcd.print("0");
25 lcd.setCursor(5, 0); lcd.print(hur);
26 }
27 else if (hur > 9) {
28 lcd.setCursor(4, 0); lcd.print(hur);
29 }
30
31 if (mint <= 9) {
32 lcd.setCursor(7, 0); lcd.print("0");
33 lcd.setCursor(8, 0); lcd.print(mint);
34 }
35 else if (mint > 9) {
36 lcd.setCursor(7, 0); lcd.print(mint);
37 }
38
39 if (sec <= 9) {
40 lcd.setCursor(10, 0); lcd.print("0");
41 lcd.setCursor(11, 0); lcd.print(sec);
42 }
43 else if (hur > 9) {
44 lcd.setCursor(10, 0); lcd.print(sec);
45 }
46
47 lcd.setCursor(5, 1); lcd.print("/");
48 lcd.setCursor(8, 1); lcd.print("/");
49
50 if (dy <= 9) {
51 lcd.setCursor(3, 1); lcd.print("0");
52 lcd.setCursor(4, 1); lcd.print(dy);
53 }
54 else if (dy > 9) {
55 lcd.setCursor(3, 1); lcd.print(dy);
56 }
57
58 if (mnth <= 9) {
59 lcd.setCursor(6, 1); lcd.print("0");
60 lcd.setCursor(7, 1); lcd.print(mnth);
61 }
62 else if (mnth > 9) {
63 lcd.setCursor(6, 1); lcd.print(mnth);
64 }
65
66 lcd.setCursor(9, 1); lcd.print(yer);
67
68 delay(1000);
69 // lcd.clear();
70 }
131
71 mint = mint + 1;
72 if (mint == 60) {
73 hur = hur + 1;
74 mint = 0 ;
75 }
76
77 if (hur == 24) {
78 hur = 0;
79 dy = dy + 1;
80 }
81
82 if (dy == 31) {
83 mnth = mnth + 1;
84 dy = 0;
85 }
86
87 if (mnth == 13) {
88 yer = yer + 1;
89 mnth = 0;
90 }
91 }
RESULTADO
COMENTÁRIOS
132
Aula 23 - Montagem de relógio com módulo DS1302RTC
CRÉDITOS DA AULA
https://www.arduinoecia.com.br/2014/11/arduino-modulo-rtc-ds1302.html
E abaixo a disposição do CI DS1302 no módulo, que na verdade não possui muitos componentes
adicionais, apenas o cristal de 32.768 kHz e a bateria (CR2032) para manter a alimentação do chip
em caso de falta de energia:
O CI aceita alimentação de 2 à 5.5V, logo podemos ligar o módulo utilizando os pinos 3.3V ou 5V
do Arduino.
São utilizados três pinos para conexão ao Arduino: RST (Reset ou CE - Chip Enable), DATA (I/O) e
CLK (ou SCLK / Serial Clock). Para testes vou alimentar o módulo com os 5V do Arduino:
133
Como pinos de dados usamos os pinos 6, 7 e 8 do Arduino. Você pode escolher outros pinos do
Arduino e mudar essa configuração nas linhas iniciais do programa.
Existe um artigo no site oficial do Arduino, mostrando em detalhes como ler as informações do
DS1302. Para quem gosta de entender como essa comunicação é feita, byte a byte, vale a pena
dar uma olhada nessa página: http://playground.arduino.cc/Main/DS1302.
Para a maioria das aplicações esse código é bem extenso e não muito simples de entender, por
isso o pessoal da Virtuabotix adaptou esse código e criou uma biblioteca chamada virtuabotixRTC
(clique aqui para efetuar o download da biblioteca). Com ela fica muito fácil de extrair as informações
do DS1302 e utilizá-las junto com outras funções do Arduino.
Note que no início do programa temos essa linha, que serve para determinar a data e hora atuais :
134
SCRIPT ARDUINO
136
RESULTADO
COMENTÁRIOS
137
Aula 24 - Sensor de obstáculos ultrassônico HC-SRO4
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/arduino-com-sensor-de-obstaculos-ultrasonico-HC-
SRO4.html
Nr O Material Qtde
138
1 Arduino UNO R3 01
2 Protoboard 01
3 Cabo jumper macho longo 18
4 Sensor de distância ultrassônico 01
5 Sensor HC-SRO4 01
6 220 Ω Resistor 03
7 LED Vermelho 01
8 LED Amarelelo 01
9 LED Verde 01
O funcionamento do projeto é simples, à medida que aproxima algum objeto do sensor os LED-s
acendem conforme a distância do objeto. O LED verde se estiver longe, o amarelo se estiver em
uma distância média e o vermelho se estiver próximo.
As distâncias de acendimento dos LED-s são programáveis, se você quiser alterar é só fazer isso
no código fonte do projeto.
O primeiro passo é instalar a biblioteca do sensor HC-SRO4 para que seu programa funcione. Para
isso baixe a biblioteca em seu computador, depois descompacte o arquivo. Após descompactar uma
pasta chamada HCSR04Ultrasonic será criada no seu computador. Copie esta pasta para a pasta
libraries da IDE do Arduino e pronto, agora você pode usar os recursos da biblioteca em seus
programas.
• portas digitais 2, 3 e 4 do Arduino ligadas nos resistores, que por sua vez estão ligados nas
pernas positivas dos LED-s;
• pernas negativas dos LED-s no GND (terra) do Arduino;
• pino VCC do sensor ultrasônico HC-SRO4 no 5V do Arduino;
• pino TRIG do sensor HC-SRO4 na porta digital 6 do Arduino;
• pino ECHO do sensor HC-SRO4 na porta digital 7 do Arduino;
• pino GND do sensor HC-SRO4 no GND do Arduino.
139
Agora monte seu projeto físico conforme o esquema abaixo.
SCRIPT ARDUINO
1 int distanciaLimite = 0;
2 int cm = 0;
3 int polegadas = 0;
4
5 //Declaração das constantes referentes aos pinos digitais.
6 const int ledVerde = 2;
7 const int ledAmarelo = 3;
8 const int ledVermelho = 4;
9
10 //Definindo as portas digitais do Trigger - 6 - e Echo - 7
11
12 long readUltrasonicDistance(int triggerPin, int echoPin)
13 {
14 pinMode(triggerPin, OUTPUT); // Zera o trigger
15 digitalWrite(triggerPin, LOW);
16 delayMicroseconds(2);
17
18 // Configura a porta digital do Trigger para estado HIGH por 10
19 microssegundos
20 digitalWrite(triggerPin, HIGH);
21 delayMicroseconds(10);
22 digitalWrite(triggerPin, LOW);
23 pinMode(echoPin, INPUT);
24
25 // Lê a porta digital Echo e retorna o tempo da onda de som em
26 microssegundos
140
27 return pulseIn(echoPin, HIGH);
28 }
29
30 void setup()
31 {
32 Serial.begin(9600);
33
34 pinMode(ledVerde, OUTPUT);
35 pinMode(ledAmarelo, OUTPUT);
36 pinMode(ledVermelho, OUTPUT);
37 }
38
39 void loop()
40 {
41 // Definindo a distância máxima para acender os LED-s
42 distanciaLimite = 350;
43 // Mede o tempo do sinal em cm
44 cm = 0.01723 * readUltrasonicDistance(7, 6);
45 // Converte para polegadas dividindo por 2.54
46 polegadas = (cm / 2.54);
47
48 Serial.print(cm);
49 Serial.print("cm, ");
50 Serial.print(polegadas);
51 Serial.println("in");
52 if (cm > distanciaLimite) {
53 digitalWrite(ledVerde, LOW);
54 digitalWrite(ledAmarelo, LOW);
55 digitalWrite(ledVermelho, LOW);
56 }
57 if (cm <= distanciaLimite && cm > distanciaLimite - 100) {
58 digitalWrite(ledVerde, HIGH);
59 digitalWrite(ledAmarelo, LOW);
60 digitalWrite(ledVermelho, LOW);
61 }
62 if (cm <= distanciaLimite - 100 && cm > distanciaLimite - 250) {
63 digitalWrite(ledVerde, HIGH);
64 digitalWrite(ledAmarelo, HIGH);
65 digitalWrite(ledVermelho, LOW);
66 }
67 if (cm <= distanciaLimite - 250 && cm > distanciaLimite - 350) {
68 digitalWrite(ledVerde, HIGH);
69 digitalWrite(ledAmarelo, HIGH);
70 digitalWrite(ledVermelho, HIGH);
71 }
72 if (cm <= distanciaLimite - 350) {
73 digitalWrite(ledVerde, HIGH);
74 digitalWrite(ledAmarelo, HIGH);
75 digitalWrite(ledVermelho, HIGH);
76 }
77 delay(100); // Espera 100 milissegundos
78 }
141
RESULTADO
Conecte o Arduino ao seu computador, execute a IDE do Arduino e copie o código fonte acima.
Compile e faça o upload para o Arduino e o projeto está concluído.
COMENTÁRIOS
142
Aula 25 - Carro robótico com sensor de obstáculo e servomotor
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-led-com-botao-liga-desliga.html
Nr O Material Qtde
1 Arduino UNO R3 01
2 Protoboard 01
3 Cabo jumper macho longo 18
4 Sensor de distância ultrassônico 03
Motor de engrenagem de uso não
5 02
profissional
Display LCD do tipo JHD162A, de 16
6 01
colunas por 2 linhas
7 4 baterias, AAA, sim Bateria 1,5V 01
8 Micro servo 01
9 Acionador de motor de ponte H 01
143
SCRIPT ARDUINO
1 #define mr1 6
2 #define mr2 5
3 #define ml1 9
4 #define ml2 10
5 #define servo_pulse 7
6 #define triger 8
7
8 #include <Servo.h>
9
10 int distance, select, pos=0;
11
12 Servo myservo;
13
14 void setup()
15 {
16 Serial.begin(9600);
17 myservo.attach(7);
18
19 for(int i=0 ; i<11 ; i++)
20 {
21 pinMode(i, OUTPUT);
22 }
23 }
24
25 // Returna a distância da onda de som do sensor em cm
26 int getDistance()
27 {
28 int distance;
29 unsigned long pulseduration=0;
30 // get the raw measurement data from Ping)))
31 // set pin as output so we can send a pulse
32 pinMode(triger, OUTPUT);
33
34 // set output to LOW
35 digitalWrite(triger, LOW);
36 delayMicroseconds(5);
37
38 // send the 5uS pulse out to activate Ping)))
39 digitalWrite(triger, HIGH);
40 delayMicroseconds(5);
41 digitalWrite(triger, LOW);
42
43 // change the digital pin to input to read the incoming pulse
44 pinMode(triger, INPUT);
45
46 // measure the length of the incoming pulse
47 pulseduration=pulseIn(triger, HIGH);
48
49 // divide the pulse length in half
50 pulseduration=pulseduration/2;
51
52 // convert to centimeters
53 distance = int(pulseduration/29);
54 return distance;
55 }
56
57 void goForward()
144
58 {
59 digitalWrite(mr1, HIGH);
60 digitalWrite(mr2, LOW);
61 digitalWrite(ml1, HIGH);
62 digitalWrite(ml2, LOW);
63 }
64
65 void goBack()
66 {
67 digitalWrite(mr1,LOW);
68 digitalWrite(mr2, HIGH);
69 digitalWrite(ml1, LOW);
70 digitalWrite(ml2, HIGH);
71 }
72
73 void turnLeft()
74 {
75 digitalWrite(mr1, HIGH);
76 digitalWrite(mr2, LOW);
77 digitalWrite(ml1, LOW);
78 digitalWrite(ml2, HIGH);
}
void turnRight()
{
digitalWrite(mr1,LOW);
digitalWrite(mr2,HIGH);
digitalWrite(ml1,HIGH);
digitalWrite(ml2, LOW);
}
void STOP()
{
digitalWrite(mr1,LOW);
digitalWrite(mr2,LOW);
digitalWrite(ml1, LOW);
digitalWrite(ml2, LOW);
}
void loop()
{
Serial.print(distance);
myservo.write(90);
delay(15);
distance = int (getDistance());
Serial.print(distance);
while(distance >20)
{
goForward();
distance=getDistance();
}
switch(select)
{
case 0:
turnLeft();
delay(250);
STOP();
break;
case 45:
turnLeft();
delay(500);
STOP();
break;
case 135:
turnRight();
delay(250);
STOP();
break;
case 180:
turnRight();
delay(500);
STOP();
break;
}
}
RESULTADO
COMENTÁRIOS
146
Aula 26 - Carro robótico controlado com controle remoto
infravermelho
CRÉDITOS DA AULA
http://www.comofazerascoisas.com.br/projeto-arduino-led-com-botao-liga-desliga.html
Nr O Material Qtde
1 Arduino UNO R3 01
2 Protoboard 01
3 Cabo jumper macho longo 18
4 Sensor Infravermelho 01
5 Motor CC 02
6 470 Ω Resistor 01
7 LED Vermelho 01
8 Acionador de motor de ponte H 01
SCRIPT ARDUINO
1 #include <IRremote.h>
2
3 IRrecv rc(11);
4 decode_results results;
5
6 //Init Motors
7
8 const int PWM_M1 = 5;
9 const int IN1_M1 = 2;
10 const int IN2_M1 = 3;
11
12 const int PWM_M2 = 6;
13 const int IN1_M2 = 8;
14 const int IN2_M2 = 9;
15
16 int speed = 100;
17
18 void setup(){
19 Serial.begin(9600);
147
20 rc.enableIRIn();
21
22 pinMode(PWM_M1,OUTPUT);
23 pinMode(PWM_M2,OUTPUT);
24
25 pinMode(IN1_M1,OUTPUT);
26 pinMode(IN2_M1,OUTPUT);
27
28 pinMode(IN1_M2,OUTPUT);
29 pinMode(IN2_M2,OUTPUT);
30 }
31
32 void loop(){
33 if (rc.decode(&results)){
34 switch(results.value){
35 case 0xFD00FF://power
36 break;
37 case 0xFD807F://vol+
38 forward();
39 break;
40 case 0xFD40BF://func/stop
41 break;
42 case 0xFD20DF://|<<
43 turnLeft();
44 break;
45 case 0xFDA05F://>||
46 stop();
47 break ;
48 case 0xFD609F://>>|
49 turnRight();
50 break ;
51 case 0xFD10EF://down arrow
52 speedDown();
53 break ;
54 case 0xFD906F://vol-
55 backward();
56 break ;
57 case 0xFD50AF://up arrow
58 speedUp();
59 break ;
60 }
61 rc.resume();
62 }
63 }
64
65 void forward(){
66 Serial.println("forward");
67 analogWrite(PWM_M1, speed);
68 analogWrite(PWM_M2, speed);
69
70 digitalWrite(IN1_M1, HIGH);
71 digitalWrite(IN2_M1, LOW);
72
73 digitalWrite(IN1_M2, HIGH);
74 digitalWrite(IN2_M2, LOW);
75 }
76
77 void backward(){
78 Serial.println("backward");
79 analogWrite(PWM_M1, speed);
80 analogWrite(PWM_M2, speed);
81
82 digitalWrite(IN1_M1, LOW);
83 digitalWrite(IN2_M1, HIGH);
148
84
85 digitalWrite(IN1_M2, LOW);
86 digitalWrite(IN2_M2, HIGH);
87 }
88
89 void turnLeft(){
90 Serial.println("turnLeft");
91 analogWrite(PWM_M1, 0);
92 analogWrite(PWM_M2, speed);
93
94 digitalWrite(IN1_M1, HIGH);
95 digitalWrite(IN2_M1, LOW);
96
97 digitalWrite(IN1_M2, HIGH);
98 digitalWrite(IN2_M2, LOW);
99 }
100
101 void turnRight(){
102 Serial.println("turnRight");
103 analogWrite(PWM_M1, speed);
104 analogWrite(PWM_M2, 0);
105
106 digitalWrite(IN1_M1, HIGH);
107 digitalWrite(IN2_M1, LOW);
108
109 digitalWrite(IN1_M2, HIGH);
110 digitalWrite(IN2_M2, LOW);
111 }
112
113 void stop(){
114 Serial.println("stop");
115 digitalWrite(IN1_M1, LOW);
116 digitalWrite(IN2_M1, LOW);
117
118 digitalWrite(IN1_M2, LOW);
119 digitalWrite(IN2_M2, LOW);
120 }
121
122 void speedUp(){
123 Serial.println("speedUp");
124 speed+=10;
125 if(speed>255) speed =255;
126 analogWrite(PWM_M1, speed);
127 analogWrite(PWM_M2, speed);
128 }
129
130 void speedDown(){
131 Serial.println("speedDown");
132 speed-=10;
133 if(speed<0) speed =0;
134 analogWrite(PWM_M1, speed);
135 analogWrite(PWM_M2, speed);
136 }
149
RESULTADO
COMENTÁRIOS
150
Aula 27 - Braço robótico com 4 servomotores controlados com
potenciômetros
CRÉDITOS DA AULA
https://www.sinoning.com/collections/robot-arm/products/acrylic-mechanics-handle-robot-4-dof-
arm-arduino-created-learning-kit-sg90
This is a classic 4-degree-of-freedom machine is inspired by industrial robots. The kit is suitable for
guest space, college students, high school students use. You can use Arduino, 51 single-chip, model
remote control, etc. to control the robot.
Weight: 200g
Shipping list:
A pack of screws
4 sg90 sevos
Nr O Material Qtde
1 Arduino UNO R3 01
2 Protoboard 01
3 Cabo jumper macho longo 18
4 Micro servo SG90 04
5 Acionador de motor de ponte H 01
6 15 kΩ Potenciômetro 04
7 Fonte de energia 5volts 01
8 Kit de montagem da estrutura 01
151
PASSOS DA MONTAGEM DA PROTOBOARD
152
153
154
155
SCRIPT ARDUINO
1 #include <Servo.h>
2
3 Servo Servobase,Servoderecha,Servoizquierda, Servopinza; //Declaramos que
4 queremos controlar un Servo, al cual le vamos a poner un nombre
5 cualquiera
6
7 int potenciometro1 = 0; //El pin análogo donde va conectado el
8 Potenciómetro 1
9 int potenciometro2 = 1; //El pin análogo donde va conectado el
10 Potenciómetro 2
11 int potenciometro3 = 2; //El pin análogo donde va conectado el
12 Potenciómetro 3
13 int potenciometro4 = 3; //El pin análogo donde va conectado el
14 Potenciómetro 4
15
16 int val1; //El valor a leer por el puerto análogo
17 int val2; //El valor a leer por el puerto análogo
18 int val3; //El valor a leer por el puerto análogo
19 int val4; //El valor a leer por el puerto análogo
20
21 void setup()
22 {
23 Servopinza.attach(13); //El pin al cual conectaremos nuestro Servo PINZA
24 Servoderecha.attach(12); //El pin al cual conectaremos nuestro Servo
25 DERECHA
26 Servoizquierda.attach(11); //El pin al cual conectaremos nuestro Servo
27 IZQUIERDA
28 Servobase.attach(10); //El pin al cual conectaremos nuestro Servo BASE
29 }
156
30
31 void loop()
32 {
33 val1= analogRead(potenciometro1); //Aquí le decimos que lea el valor del
34 potenciómetro, valor el cual oscila entre 0 y 1023
35 val1= map(val1, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a
36 grados (0°, 180°)
37 Servopinza.write(val1); //Mueve el Servo según la lectura análoga
38 delay(15);
39
40 ////////////////////////////
41 val2= analogRead(potenciometro2); //Aquí le decimos que lea el valor del
42 potenciómetro, valor el cual oscila entre 0 y 1023
43 val2= map(val2, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a
44 grados (0°, 180°)
45 Servoderecha.write(val2); //Mueve el Servo según la lectura análoga
46 delay(15);
47
48 /////////////////////
49 val3= analogRead(potenciometro3); //Aquí le decimos que lea el valor del
50 potenciómetro, valor el cual oscila entre 0 y 1023
51 val3= map(val3, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a
52 grados (0°, 180°)
53 Servoizquierda.write(val3);//Mueve el Servo según la lectura análoga
54 delay(15);
55
56 /////////////////////////
57 val4 = analogRead(potenciometro4); //Aquí le decimos que lea el valor del
58 potenciómetro, valor el cual oscila entre 0 y 1023
59 val4 = map(val4, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023)
60 a grados (0°, 180°)
61 Servobase.write(val4); //Mueve el Servo según la lectura análoga
62 delay(15);
63 }
64
RESULTADO
COMENTÁRIOS
157
Aula 28 - Calculadora
CRÉDITOS DA AULA
https://www.tinkercad.com/things/cVI4WnPWonc-aula-28-calculadora-com-display-lcd-e-teclado-4-
x-4/editel
158
SCRIPT ARDUINO
1 #include <LiquidCrystal.h>
2 #include <Keypad.h>
3
4 const byte filas = 4; //quatro filas.
5 const byte columnas = 4; //quatro colunas.
6
7 char tecla[filas][columnas] = {
8 {'1','2','3','A'},
9 {'4','5','6','+'},
10 {'7','8','9','-'},
11 {'*','0','=','/'}
12 };
13
14 byte pinFilas[filas] = {7, 6, 5, 4}; //conectarse à saída de fila do
15 teclado.
16 byte pinColumnas[columnas] = {3, 2, A5, A4}; //conectarse à saída de
17 colunas do teclado.
18
19 Keypad keypad = Keypad(makeKeymap(tecla), pinFilas, pinColumnas, filas,
20 columnas);
21 LiquidCrystal lcd(8,9,10,11,12,13); //RS,E,D4,D5,D6,D7
22 String leeCadena1,leeCadena2;
23 byte cuenta=0;
24
25 char a;
26 long dato1,dato2,rpt1;
27 double dato3,dato4,rpt2;
28
29 void setup(){
30 lcd.begin(16,2); //LCD (16 colunas e 2 filas)
31 }
32
33 void loop(){
34 char key = keypad.getKey();
35 if
36 (key=='0'||key=='1'||key=='2'||key=='3'||key=='4'||key=='5'||key=='6'||k
37 ey=='7'||key=='8'||key=='9'){
38
39 if(cuenta==0){
40 lcd.print(key);
41 leeCadena1+=key;
42 dato1=leeCadena1.toInt();
43 }
44
45 else if(cuenta==1){
46 lcd.print(key);
47 leeCadena2+=key;
48 dato2=leeCadena2.toInt();
49 }
50 }
51
52 if(key=='A'){
53 leeCadena2="";
54 leeCadena1="";
55 dato1=0;
56 dato2=0;
57 dato3=0;
58 dato4=0;
59 cuenta=0;
60 rpt1=0;
159
61 rpt2=0;
62 lcd.clear();
63 }
64
65 else if(key=='='&&a=='+'){
66 cuenta++;
67 lcd.setCursor(0,2);
68 rpt1=dato1+dato2;
69 lcd.print("RPT=");
70 lcd.print(rpt1);
71 }
72
73 else if(key=='='&&a=='-'){
74 cuenta++;
75 lcd.setCursor(0,2);
76 rpt1=dato1-dato2;
77 lcd.print("RPT=");
78 lcd.print(rpt1);
79 }
80
81 else if(key=='='&&a=='*'){
82 cuenta++;
83 lcd.setCursor(0,2);
84 rpt1=dato1*dato2;
85 lcd.print("RPT=");
86 lcd.print(rpt1);
87 }
88
89 else if(key=='='&&a=='/'){
90 cuenta++;
91 lcd.setCursor(0,2);
92 dato3=dato1;
93 dato4=dato2;
94 lcd.print("RPT=");
95 rpt2=(dato3/dato4);
96 lcd.print(rpt2);
97 }
98
99 else if((key=='+'||key=='-'||key=='*'||key=='/')&&(cuenta==0)){
100 cuenta++;
101 a=key;
102 lcd.print(a);
103 }
104 }
160
RESULTADO
COMENTÁRIO
161