Apostila Arduino
Apostila Arduino
Fazer uma luz piscar é um projeto tão importante, que existe até uma competição internacional
para ver quem faz uma luz piscar de maneira mais impressionante, mostrando domínio de eletrônica
e programação. É o primeiro passo que se dá quando se começa a trabalhar com uma placa, porque
ele mostra que você é capaz de programá-la. Esse primeiro projeto será um pequeno grande passo
para que você aprenda eletrônica e programação e possa fazer projetos mais complexos.
Sabemos que o guia para este primeiro projeto está bastante longo, mas depois que você
entende como funciona, não irá precisar de tantas instruções para conseguir reproduzir um projeto.
Material necessário
1x LED Vermelho 5 mm
1x Resistor 220 ohm
1x Protoboard
2x Jumper macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
No caso do nosso projeto, a fonte de energia vem da porta 11 do Arduino. Com a programação
correta, é possível ligar e desligar a energia do pino 11, fazendo o LED acender e apagar.
No esquema da montagem do circuito, as linhas coloridas são a representação gráfica dos
jumpers. Utilize-os para ligar os componentes entre si conforme a ilustração abaixo. Note que o pino
11 está conectado ao lado positivo do LED, enquanto o GND vai no pino negativo, passando antes
pelo resistor.
Código de programação
Abaixo você encontra o programa completo que pode ser copiado e colado direto na IDE
Arduino:
// Programa : Pisca Pisca pisca
// Autor : FILIPEFLOP
void setup()
{
//Define a porta do led como saida
pinMode(11, OUTPUT);
}
void loop()
{
//Acende o led
digitalWrite(11, HIGH);
//Apaga o led
digitalWrite(11, LOW);
Possíveis erros
Desafios
Este projeto mostra que, através da programação, podemos piscar o LED de diferentes
maneiras e intervalos de tempo.
Material necessário
1x LED Vermelho 5mm
1x Resistor 220 ohm
1x Protoboard
2x Jumper macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
void setup() {
pinMode(pinoLed, OUTPUT);
}
void loop() {
delay(200);
digitalWrite(pinoLed,LOW);
delay(150);
}
delay(200);
delay(5000);
}
Possíveis erros
Caso o projeto não funcione verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo
assim a conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o LED não está conectado invertido, ou seja, terminal negativo no pino 11 e
positivo no pino GND;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Material necessário
1x LED Vermelho 5mm
1x Resistor 220 ohm
1x Protoboard
2x Jumper macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
Neste projeto continuaremos com o mesmo circuito dos projetos anteriores
void setup() {
// configura pino do LED como saída
pinMode(pinoLed,OUTPUT);
}
void loop(){
acendeBrilho(5);
apagaBrilho(5);
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo
assim a conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o LED não está conectado invertido, ou seja, terminal negativo no pino 11 e
positivo no pino GND;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Troque o LED por outro de cor diferente;
• Monte o circuito de uma maneira alternativa usando outros furos e posições na protoboard;
• Mude o intervalo de tempo que o LED pisca mudando o valor na programação na
linha delay(30); por exemplo: delay(350);
Projeto 4 – Semáforo
Já está sabendo tudo de LEDs e como ligá-los? Então vamos montar esse projeto maior para juntar várias
coisas que aprendemos até agora.
Este projeto irá simular um semáforo de carros e pedestres. Serão três LEDs para os carros e dois para os
pedestres. A sequência inicia com o LED verde dos carros aceso e vermelho para pedestres. O semáforo dos carros
então passa para cor amarela indo para cor vermelha, juntamente com o LED verde de pedestres. O LED vermelho
dos pedestres então pisca e a sequência volta ao início.
Material necessário
2x LED Vermelho 5mm
2x LED Verde 5mm
1x LED Amarelo 5mm
5x Resistor 220 ohm
1x Protoboard
11x Jumper macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
O grande desafio deste projeto está em montar os LEDs corretamente, pois o circuito consiste de mais LEDs, mais
resistores e mais jumpers. Agora faremos uso de uma das linhas inferiores da protoboard, conectando o pino GND
(negativo) do Arduino na linha azul da protoboard.
A maioria das pessoas, mesmo makers experientes, tem que voltar para esta parte do projeto e refazer, não se
preocupe. Se você conseguir fazer a montagem funcionar na primeira tentativa, parabéns!
void loop()
{
digitalWrite(carroVerde, HIGH); // Acende o verde dos carros e o vermelho dos pedestres
digitalWrite(pedVermelho, HIGH);
delay(5000); // Aguarda 5 segundos
digitalWrite(carroVerde, LOW);
digitalWrite(carroAmarelo, HIGH); // apaga o verde dos carros e acende o amarelo
delay(3000); // aguarda mais 3 segundos
digitalWrite(carroAmarelo, LOW); // apaga o amarelo dos carros e acende o vermelho
digitalWrite(carroVermelho, HIGH);
digitalWrite(pedVermelho, LOW); // apaga o vermelho dos pedestres e acende o verde
digitalWrite(pedVerde, HIGH);
delay(5000); // aguarda mais 5 segundos
digitalWrite(pedVerde, LOW);
for(int x = 0; x<5; x++) // Pisca o vermelho dos pedestres
{
digitalWrite(pedVermelho, HIGH);
delay(250);
digitalWrite(pedVermelho, LOW);
Possíveis erros
}
delay(250);
digitalWrite(carroVermelho, LOW);
Caso
} o projeto não funcione verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o LED não está conectado invertido;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Monte o circuito de uma maneira alternativa usando outros furos e posições na protoboard;
• Mude o tempo que o LED amarelo dos veículos permanece aceso mudando o valor na programação na
linha delay(3000); por exemplo: delay(6000);
Projeto 5 – Interruptor de luz
Neste projeto, veremos que também é possível acionar dispositivos através de interação humana. Agora
alguns pinos serão porta de entrada, e não só saída como eram os projetos até aqui.
Material necessário
1x LED Vermelho 5mm
1x Resistor 220 ohm
1x Chave Táctil Push-button
1x Protoboard 400 pontos
5x Jumper Macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
A chave táctil push button deve ser montada com dois terminais acima da cavidade central da protoboard e os
outros dois abaixo. Um terminal da chave vai no pino 7 e outro no GND. No caso deste projeto o pino do LED é
uma saída digital e o pino da chave é uma entrada digital.
int botao = 7;
int led = 13;
bool estadoLed = 0;
void setup()
{
pinMode(botao, INPUT_PULLUP); // define o pino do botao como entrada "INPUT"
pinMode(led, OUTPUT);
}
void loop()
{
if(digitalRead(botao) == LOW) // Se o botão for pressionado
{
estadoLed = !estadoLed; // troca o estado do LED
digitalWrite(led, estadoLed);
while(digitalRead(botao) == LOW);
delay(100);
}
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o LED não está conectado invertido;
• Verifique se os pinos do botão estão bem inseridos na protoboard;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Monte o circuito de uma maneira alternativa usando outros furos e posições na protoboard;
• Adicione mais uma chave táctil push button e modifique o código para ligar o LED com uma chave e
desligar com a outra.
Projeto 6 – Luzes Coloridas
Alguns LEDs são capazes de mudar a sua cor, chamamos eles de LED RGB. Ele tem o mesmo funcionamento
básico de um LED comum porém possui três cores no mesmo componente, como se fossem três LEDs juntos:
Red(R), Green(G) e Blue(B). Assim podemos trocar as cores via programação e até mesmo fazer misturas.
Como mostrado na figura abaixo, o LED RGB possui quatro pernas, sendo a perna maior o pino positivo comum
para todos os LEDs internos.
Material necessário
Montagem do circuito
A montagem deste circuito é feita como se fossem três LEDs colocados no mesmo projeto. Adicione um
resistor para cada perna de cor do LED RGB e conecte o pino 5 V do Arduino à perna positiva do LED RGB. Cada
pino de cor do LED é conectado a uma porta digital do Arduino.
Importante! Note que o fio vermelho 5 V deve ser conectado à perna mais comprida do LED.
void setup()
{
pinMode(led_R, OUTPUT); // Definimos os pinos como saida
pinMode(led_G, OUTPUT);
pinMode(led_B, OUTPUT);
apagaLed();
}
void loop()
{
acendeVermelho(); // aqui fizemos uma pequena funcao que acende uma cor e apaga as outras
delay(1000);
acendeVerde();
delay(1000);
acendeAzul();
delay(1000);
apagaLed();
delay(1000);
void acendeVermelho()
{
digitalWrite(led_R, LOW);
digitalWrite(led_G, HIGH);
digitalWrite(led_B, HIGH);
}
void acendeVerde()
{
digitalWrite(led_R, HIGH);
digitalWrite(led_G, LOW);
digitalWrite(led_B, HIGH);
}
void acendeAzul()
{
digitalWrite(led_R, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_B, LOW);
}
void apagaLed()
{
digitalWrite(led_R, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_B, HIGH);
}
Possíveis erros
Caso o projeto não funcione verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o terminal positivo do LED RGB está na posição correta ligado ao 5 V do Arduino;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Faça uma mistura de cores acionando duas cores ao mesmo tempo;
• Utilize os conceitos que aprendemos no projeto anterior para trocar as cores do LED ao apertar um botão;
• Faça o controle do brilho de cada uma das cores utilizando os conceitos aprendidos no Projeto 3 e a
função analogWrite() no lugar de digitalWrite().
Projeto 7 – Troque a cor das luzes
No projeto anterior, fizemos um LED RGB piscar sem parar com cores diferentes. Neste projeto você que irá
comandar como o LED irá variar a sua cor. Para dar os comandos para a placa Arduino, iremos utilizar um
potenciômetro. O projeto 7 consiste em controlar as cores do LED RGB ao rotacionar o potenciômetro.
Material necessário
A montagem do LED RGB é a mesma do projeto anterior. Adicione o potenciômetro ligando um pino em 5
V, outro em GND e seu pino central em uma porta analógica do Arduino. Não se preocupe com o lado, assim como
um resistor comum, o potenciômetro não tem lado positivo ou negativo, ou seja, tanto faz o lado que é conectado
ao circuito. O único cuidado que se deve ter ao colocar o potenciômetro na protoboard é o encaixe, que tem que
apertar um pouco.
int valorPot;
void setup()
{
pinMode(led_R, OUTPUT);
pinMode(led_G, OUTPUT);
pinMode(led_B, OUTPUT);
apagaLed();
}
void loop()
{
valorPot = analogRead(pot); // lê o valor do potenciômetro (de 0 a 1023)
if(valorPot >= 0 && valorPot <= 256) // menor que 256 apaga o LED
{
apagaLed();
}
if(valorPot > 256 && valorPot <= 512) // entre 256 e 512, acende vermelho
{
acendeVermelho();
}
if(valorPot > 512 && valorPot <= 768) // entre 512 e 768, acende verde
{
acendeVerde();
}
if(valorPot > 768 && valorPot <= 1023) // entre 768 e 1023, acende azul
{
acendeAzul();
}
}
void acendeVermelho()
{
digitalWrite(led_R, LOW);
digitalWrite(led_G, HIGH);
digitalWrite(led_B, HIGH);
}
void acendeVerde()
{
digitalWrite(led_R, HIGH);
digitalWrite(led_G, LOW);
digitalWrite(led_B, HIGH);
}
void acendeAzul()
{
digitalWrite(led_R, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_B, LOW);
}
void apagaLed()
{
digitalWrite(led_R, HIGH);
digitalWrite(led_G, HIGH);
digitalWrite(led_B, HIGH);
}
Possíveis erros
Caso o projeto não funcione verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o terminal positivo do LED RGB está na posição correta, ligado ao 5 V do Arduino;
• Verifique se os pinos do potenciômetro estão totalmente inseridos nos furos da protoboard;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Faça uma mistura de cores rotacionando o potenciômetro;
• Utilize os conceitos do projeto 3 sobre o controle do brilho do LED fazendo o controle da intensidade das
cores através da rotação do potenciômetro.
Projeto 8 – Acionando um Motor
Existem diversos tipos de motor que podem ser utilizados facilmente com o Arduino. Entre os mais fáceis
de se utilizar está o servo motor, sendo bastante utilizado em aeromodelismo e outros projetos que precisam de
pouco movimento.
Material necessário
1x Servo 9g
1x Chave push-button
7x Jumper Macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
O servo possui três fios para sua utilização e na extremidade desses fios um conector de 3 pinos fêmea. O fio
marrom do servo deve ser conectado ao GND, o fio vermelho ao 5 V e o fio laranja ao pino 9 do Arduino. Na
ilustração abaixo o fio preto corresponde ao marrom, o fio vermelho ao vermelho e o fio amarelo ao fio
laranja.
Para conectar o servo basta utilizar 3 jumpers macho-macho e ligar o conector do servo com a protoboard.
Também acompanha algumas hastes e parafusos. Não é necessário parafusar as hastes ao servo, apenas um
encaixe já basta. Você pode escolher uma das hastes para visualizar melhor o movimento do servo.
Programa Projeto 8 – Acionando um Motor
// Projeto 8 - Acionando um Motor
#include <Servo.h>
Servo meuServo;
int botao = 7;
void setup()
{
pinMode(botao, INPUT_PULLUP); // define o botão como saidas
}
void loop()
{
meuServo.attach(9);
if(digitalRead(botao) == LOW)
{
for(int angulo=0; angulo<=180; angulo++) // Aumenta o angulo do servo ate chegar em 180 graus
{
meuServo.write(angulo);
delay(10);
}
for(int angulo=180; angulo>=0; angulo--)// Diminui o angulo do servo
{
meuServo.write(angulo);
delay(10);
}
}
meuServo.detach();
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se as conexões do servo estão corretas, fio marrom no GND, fio vermelho no 5 V e laranja no
pino 9;
• Verifique se os pinos do botão estão bem inseridos na protoboard;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Modifique o limite de rotação do servo trocando os valores de ângulo nas linhas for(int angulo=0;
angulo<=180; angulo++); por exemplo for(int angulo=50; angulo<=110; angulo++);
Projeto 9 – Controlando o motor
Já vimos no projeto 7 como funciona um potenciômetro e no projeto 8 como funciona um servo motor. No
projeto 9, veremos como utilizar esses dois componentes em conjunto controlando o servo através da rotação do
potenciômetro.
É interessante observar como os dois componentes utilizam portas analógicas. Com isso podemos ler
diversos valores no potenciômetro e mandar esses valores diversos para o motor. Não é apenas um comando de
ligado e desligado, como no Projeto 5 Interruptor de luz.
Material necessário
1x Servo 9g
1x Potenciômetro 10K ohm
8x Jumper macho-macho
1x Cabo USB
1x Placa Arduino Uno
Montagem do circuito
Como já visto no projeto 8, o servo possui três fios para sua utilização e na extremidade desses fios um
conector de 3 pinos fêmea. O fio marrom do servo deve ser conectado ao GND, o fio vermelho ao 5 V e o fio laranja
ao pino 9 do Arduino. Para conectar o servo basta utilizar 3 jumpers macho-macho. Também acompanha algumas
hastes e parafusos. Não é necessário parafusar as hastes ao servo, apenas um encaixe já basta.
Adicione também na montagem o potenciômetro, como visto no Projeto 7.
#include <Servo.h>
Servo meuServo;
void setup()
{
meuServo.attach(9);
}
void loop()
{
valorPot = analogRead(pinoPot);
valorPot = map(valorPot, 0, 1023, 0, 180); // mapeia os valores do potenciometro (entre 0 e
1023) para os valores do servo (entre 0 e 180)
meuServo.write(valorPot); // manda o valor para o servo
delay(15);
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se as conexões do servo estão corretas, fio marrom no GND, fio vermelho no 5V e laranja no pino
9;
• Verifique se os pinos do potenciômetro estão bem inseridos na protoboard;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Modifique o limite de rotação do servo trocando os valores de ângulo na linha valorPot = map(valorPot,
0, 1023, 0, 180); por exemplo valorPot = map(valorPot, 0, 1023, 50, 110);
Projeto 10 – Sensor de luz ambiente
Neste projeto iremos mostrar que é possível identificar a quantidade de luz presente em um ambiente
utilizando o Arduino e o sensor de luminosidade LDR (Light Dependent Resistor). O LDR é bastante usado nos
postes de luz na cidade, fazendo que quando anoiteça as luzes da cidade acendam. Ele também é usado em
lâmpadas de jardim que acendem ao anoitecer. Veja neste projeto como utilizar o sensor de luz LDR com Arduino.
Assim como um potenciômetro varia sua resistência conforme a rotação, o LDR é um resistor que varia sua
resistência conforme a intensidade de luz no ambiente. Com isso conseguimos medir a quantidade de luz presente
em um ambiente.
Da mesma forma que o potenciômetro é ligado em uma entrada analógica do Arduino, também é possível
utilizar uma porta analógica para ler o valor de um LDR. Para o LED, iremos trabalhar apenas com uma porta digital.
O projeto 10 consiste em ligar ou desligar o LED de acordo com a intensidade de luz presente no ambiente. Pouca
luz acende o LED, bastante luz apaga o LED. Você pode variar a luz do ambiente acendendo ou apagando as luzes
ou colocando a mão em cima do sensor LDR como mostrado abaixo.
Material necessário
1x LED Vermelho 5 mm
1x Resistor 220 ohm
1x Resistor 10K ohm
1x Sensor de luminosidade LDR
7x Jumper Macho-macho
1x Cabo USB
1x Placa Uno
Montagem do circuito
Na montagem deste projeto, atente-se a montagem do LED, pois, como já mostramos no projeto 1, ele tem
lado positivo e negativo. Já o sensor de luminosidade LDR não tem lado, ou seja apenas insira os seus pinos na
protoboard e faça a ligação conforme indicado abaixo. Note que o LDR usa um resistor de 10K ohm e o LED um
resistor de 100 ohm.
void setup()
{
pinMode(pinoLed,OUTPUT);
}
void loop()
{
valorLuz = analogRead(pinoSensorLuz);
if(valorLuz<750)
{
digitalWrite(pinoLed,HIGH);
}
else
{
digitalWrite(pinoLed,LOW);
}
delay(10);
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o valor de resistores está correto como indicado na montagem do projeto;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Mude a sensibilidade do sensor LDR modificando o valor na linha if(valorLuz<750). Experimente valores
como 600 ou 900. Lembrando que esse valor pode ser entre 0 e 1023;
• Modifique a programação para realizar o inverso do objetivo proposto. Pouca luz apaga o LED, bastante luz
acende o LED.
Projeto 11 – Dó Ré Mi
Bora fazer música com o Arduino?
Na música, cada nota musical possui uma frequência específica dada em hertz (Hz). Olhando as teclas de
um piano é possível ver a frequência de cada uma das notas de uma escala de Dó por exemplo. No projeto 11
iremos mostrar como é possível reproduzir notas musicais utilizando um buzzer com Arduino.
O buzzer é um pequeno alto falante capaz de gerar tons em frequências determinadas, sendo possível,
então, tocar pequenas músicas ou alarmes. Ele é bastante encontrado em brinquedos ou relógios digitais com
alarme. No Arduino podemos utilizar a função chamada tone(); que leva dois parâmetros: o pino em que o buzzer
está conectado e a frequência do tom. O projeto 11 consiste em tocar a escala de dó com Arduino e buzzer.
Material necessário
1x Buzzer
2x Jumper Macho-macho
1x Protoboard
1x Cabo USB
1x Placa Uno
Montagem do circuito
Programa Projeto 11 – Dó Ré Mi
// Projeto 11 - Dó Ré Mi
#define DO 262
#define RE 294
#define MI 330
#define FA 349
#define SOL 392
#define LA 440
#define SI 494
#define DO_2 523
int pinoBuzzer = 6;
int melodia[] = {
DO, RE, MI, FA, SOL, LA, SI, DO_2
};
void setup() {
// configura pino do buzzer como saída
pinMode(pinoBuzzer,OUTPUT);
}
void loop() {
for(int i=0; i<8; i++)
{
tone(pinoBuzzer, melodia[i]);
delay(500);
}
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Modifique os valores de frequência das notas, dobre todos os valores e veja o que acontece;
• Modifique o tempo entre cada nota;
• Toque uma sequência de notas diferentes para fazer uma música que você conheça.
Projeto 12 – Alarme com Sensor a Laser
Para este projeto, vamos combinar o Projeto 10 e o Projeto 11 para criar um detector de presença a laser,
igual àqueles que vemos em filmes de espionagem, mas com um laser somente. Claro que aprendendo o
funcionamento deste projeto você pode juntar mais lasers e fazer um sensor mais parecido com os encontrados em
filmes.
O diodo laser é um LED que possui uma lente especial que gera um feixe de luz de longo alcance e,
normalmente, em formato de ponto. Nesse projeto também iremos utilizar o sensor de luz LDR para detectar o laser
e o buzzer para realizar sinais sonoros. No projeto 12 iremos fazer um protótipo de alarme por laser. O laser deve
ser apontado para o LDR, para que o sensor detecte bastante luz, e quando algo cortar o feixe de luz, o buzzer irá
soar como um alarme. Veja como o projeto irá funcionar.
Material necessário
1x Diodo Laser
1x Resistor 10K ohm
1x LDR
1x Buzzer
9x Jumper Macho-macho
1x Cabo USB
1x Placa Uno
Montagem do projeto
Na montagem abaixo note que o laser está com os fios conectados diretamente na protoboard e apontando
para o LDR. Caso o laser não acenda, verifique se fios foram colocados até o fundo dos furos da
protoboard. Atenção! Não aponte o laser diretamente no seu olho ou de outra pessoa.
Veja como deve ser feita a montagem do laser.
void setup()
{
// configura pino do buzzer como saída
pinMode(pinoBuzzer,OUTPUT);
}
void loop()
{
valorLuz = analogRead(pinoSensorLuz);
if(valorLuz<950)
{
tone(pinoBuzzer, 440);
}
else
{
noTone(pinoBuzzer);
}
delay(10);
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se os valores de resistores estão corretos como indicado na montagem;
• Verifique se o laser está com os fios bem inseridos nos furos da protoboard;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Modifique a programação para realizar o inverso do objetivo proposto. Laser apontado para o LDR aciona
o buzzer.
Projeto 13 – Alarme de movimento
No Projeto 13, faremos um alarme que apita quando detecta movimento. Para o apito utilizaremos o já
conhecido buzzer, e para detectar o movimento iremos utilizar o sensor de vibração e movimento tilt, que funciona
como um botão que é acionado ao ser inclinado ou agitado. Ao ser agitado, ele envia a informação de inclinação
que pode ser lida pelo Arduino e, uma ação pode ser tomada.
O sensor de vibração tilt tem um formato de módulo que contém a cápsula azul e também um pequeno
potenciômetro para ajuste da sensibilidade.
Material necessário
1x Sensor de vibração tilt
1x Chave de ajuste para sensor de vibração
1x Buzzer
7x Jumper Macho-macho
1x Cabo USB
1x Placa Uno
Montagem do projeto
Monte o projeto como abaixo encaixando os pinos do módulo de vibração tilt na protoboard. Para que o
projeto funcione adequadamente é necessário ajustar o sensor de vibração tilt através do pequeno potenciômetro
azul, girando-o totalmente para direita como indicado pela seta vermelha.
int pinoTilt = 7;
int pinoBuzzer = 6;
void setup()
{
pinMode(pinoTilt, INPUT);
}
void loop()
{
if(digitalRead(pinoTilt) == HIGH)
{
tone(pinoBuzzer, 440);
delay(1000);
}
else
{
noTone(pinoBuzzer);
}
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o potenciômetro do sensor de vibração foi ajustado conforme instrução da montagem;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Modifique a programação para acionar um alarme intermitente.
Projeto 14 – Contador Digital
O contador digital é um display de um dígito que vai aumentando conforme o tempo. Como ele é um contador
de um dígito apenas, começa em 0 e vai até 9. O projeto 9 parece um projeto um pouco simples, mas que ensina o
funcionamento de um display bastante usado em projetos de eletrônica.
Material necessário
1x Display 7 segmentos
1x Resistor 220 ohm
10x Jumper Macho-macho
1x Cabo USB
1x Placa Uno
Montagem do projeto
Como se fossem vários LEDs, precisamos colocar um pino do Arduino para cada pino do display. Como o
lado positivo dos LEDs é comum a todos, precisamos de apenas 1 resistor.
int segE = 7;
int segD = 8;
int segC = 9;
int segB = 13;
int segA = 12;
int segF = 11;
int segG = 10;
void setup()
{
pinMode(segE, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segA, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
}
void loop()
{
acende0();
delay(1000);
acende1();
delay(1000);
acende2();
delay(1000);
acende3();
delay(1000);
acende4();
delay(1000);
acende5();
delay(1000);
acende6();
delay(1000);
acende7();
delay(1000);
acende8();
delay(1000);
acende9();
delay(1000);
}
void acende0()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
}
void acende1()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void acende2()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
}
void acende3()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
}
void acende4()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende5()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende6()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende7()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void acende8()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende9()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
Possíveis erros
Caso o projeto não funcione, verifique alguns dos possíveis erros:
• Caso o display não acenda nenhum LED, verifique a ligação do pino comum;
• Caso o display não acenda algum segmento, verifique a ligação desse segmento;
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Modifique o tempo de exibição entre um número e outro mudando os valores em delay(1000); por
exemplo delay(350);
• Modifique a sequência de exibição dos números fazendo uma contagem regressiva;
Desenhe letras no display criando novas funções para elas. Por exemplo a letra A:
1
void acendeA()
2
{
3 digitalWrite(segE, LOW);
4 digitalWrite(segD, HIGH);
5 digitalWrite(segC, LOW);
6 digitalWrite(segB, LOW);
7 digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
8
digitalWrite(segG, LOW);
9
}
10
Projeto 15 – Dado Eletrônico
Vamos construir um dado que rola ao sentir movimento. Para este projeto iremos juntar dois componentes
que já vimos anteriormente, um display de 7 segmentos e um sensor de vibração tilt. Ao agitar o sensor de vibração
tilt, o display deverá mostrar números aleatórios até parar, simulando o funcionamento de um dado de 10 lados.
Material necessário
1x Display 7 segmentos
1x Resistor 220 ohm
1x Sensor tilt
13x Jumper Macho-macho
1x Cabo USB
1x Placa Uno
Montagem do projeto
Para que o projeto funcione adequadamente é necessário ajustar o sensor de vibração tilt através do
pequeno potenciômetro azul, girando-o totalmente para direita como indicado pela seta vermelha. Se precisar, use
a chave que veio junto do kit.
Programa Projeto 15 – Dado eletrônico
Este programa é diferente do projeto que utiliza o Buzzer porque dessa vez, em vez de tocar um Buzzer ao
se movimentar, gera um número aleatório. O funcionamento e a programação do display de 7 segmentos são os
mesmos vistos no Projeto 14.
// Projeto 15 - Dado eletrônico
int segE = 7;
int segD = 8;
int segC = 9;
int segB = 13;
int segA = 12;
int segF = 11;
int segG = 10;
int pinoTilt = 5;
void setup()
{
pinMode(segE, OUTPUT);
pinMode(segD, OUTPUT);
pinMode(segC, OUTPUT);
pinMode(segB, OUTPUT);
pinMode(segA, OUTPUT);
pinMode(segF, OUTPUT);
pinMode(segG, OUTPUT);
pinMode(pinoTilt, INPUT);
}
void loop()
{
if(digitalRead(pinoTilt) == HIGH)
{
jogaDado();
}
}
void jogaDado()
{
for(int i=0; i<25; i++) // Mostra 24 numeros
{
switch(random(0, 9)) // Escolhe um numero aleatorio entre 0 e 9
{
case 0 :
acende0();
break;
case 1 :
acende1();
break;
case 2 :
acende2();
break;
case 3 :
acende3();
break;
case 4 :
acende4();
break;
case 5 :
acende5();
break;
case 6 :
acende6();
break;
case 7 :
acende7();
break;
case 8 :
acende8();
break;
case 9 :
acende9();
break;
}
delay(4*i); // O delay aumenta conforme passam mais numeros
}
}
void acende0()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, HIGH);
}
void acende1()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, HIGH);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void acende2()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, HIGH);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
}
void acende3()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, LOW);
}
void acende4()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, HIGH);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende5()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende6()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, HIGH);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende7()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, HIGH);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, HIGH);
digitalWrite(segG, HIGH);
}
void acende8()
{
digitalWrite(segE, LOW);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
void acende9()
{
digitalWrite(segE, HIGH);
digitalWrite(segD, LOW);
digitalWrite(segC, LOW);
digitalWrite(segB, LOW);
digitalWrite(segA, LOW);
digitalWrite(segF, LOW);
digitalWrite(segG, LOW);
}
Possíveis erros
Caso o projeto não funcione verifique alguns dos possíveis erros:
• Verifique se os jumpers estão na mesma coluna dos terminais dos componentes, fazendo assim a
conexão;
• Verifique se os jumpers estão ligados nos pinos corretos no Arduino;
• Certifique-se de ter girado o potenciômetro do sensor todo para direita como indicado na montagem;
• Verifique se o código carregou na placa através da IDE Arduino.
Desafios
Veja abaixo alguns desafios que você pode tentar!
• Tente fazer um dado eletrônico que exiba letras de A até F ao invés de números;
• Altere a programação para que se comporte como um dado de 6 lados.
Fonte: https://www.filipeflop.com/universidade/kit-maker-arduino