PROJETOS
PRÁTICOS
O GUIA ÉPICO PARA VOCÊ
APRENDER ARDUINO SEM
ENROLAÇÃO
FLÁVIO BABOS
SUMÁRIO
1. PRIMEIROS COMPONENTES 23
2. ACENDENDO 3 LED'S 41
3. MEDIDOR DE TEMPERATURA 57
FLÁVIO BABOS
PERFIL PROFISSIONAL
FLAVIOBABOS.COM.BR
BEM VINDO (A) AO ARDUINO!
FLAVIOBABOS.COM.BR
SOBRE ESTA APOSTILA
Projeto final do
carro desenvolvido
com objetivo de
5 ANIGÁP
evitar os obstáculos
com uso do sensor
ultrassônico, servo
motor, 2 motores
DC, LED's e LCD
para informarem a
proximidade.
FLAVIOBABOS.COM.BR
SOBRE ESTA APOSTILA
FLAVIOBABOS.COM.BR
SOBRE ESTA APOSTILA
Veja só:
FLAVIOBABOS.COM.BR
SOBRE ESTA APOSTILA
Sei que isso pode parecer bom demais para ser verdade.
Mas, se eu tivesse esse conteúdo que estou te passando lá
em 2014, com certeza teria sido muito mais fácil.
FLAVIOBABOS.COM.BR
SOBRE ESTA APOSTILA
FLAVIOBABOS.COM.BR
VAMOS AO QUE INTERESSA
pinos combinam em
encaixes fêmeas, como
aqueles na protoboard.
Eles auxiliam em uma
conexão direta e fácil.
Arduino. brasileiro.
7) Piezo ou buzzer – um
componente elétrico que
pode ser usado para
5) Capacitores – esses detectar vibrações e gerar
componentes armazenam e ruídos.
liberam a energia elétrica.
São usados principalmente
para evitar flutuações nos
circuitos.
9) Potenciômetro –
também é um resistor vari-
FLAVIOBABOS.COM.BR
VAMOS AO QUE INTERESSA
13) Sensor de
11) Resistores – resistem à temperatura – muda a
corrente de energia elétrica tensão de saída
em um circuito, alterando a dependendo da
tensão e corrente como temperatura do componen-
FLAVIOBABOS.COM.BR
VAMOS AO QUE INTERESSA
caracteres cada.
51 ANIGÁP
FLAVIOBABOS.COM.BR
PLACA ARDUINO UNO
IA
dar upload nos
códigos e fazer seu computador. Eles
comunicação serial ascendem quando há
R
(via Serial.println() upload de código e
durante a
A
etc).
comunicação serial.
H
EN
LED pino 13 é a
G
analoWrite(). Esse
último se aplica
apenas às portas
@
de símbolo PWM.
Microcontrolador
Pinos GND, 5V e 3.3V ATMEGA.
61 ANIGÁP
FLAVIOBABOS.COM.BR
INSTALAÇÃO DA IDE
arduino.cc/download
71 ANIGÁP
FLAVIOBABOS.COM.BR
INSTALAÇÃO NO WINDOWS
Parabéns!
91 ANIGÁP
FLAVIOBABOS.COM.BR
INSTALAÇÃO NO MAC OS 10.5 OU SUPERIOR
Parabéns!
FLAVIOBABOS.COM.BR
INSTALAÇÃO NO LINUX
arduino.cc/linux
arduino.cc/ide
APROVEITE!
22 ANIGÁP
FLAVIOBABOS.COM.BR
SUMÁRIO
PROJETO 1
RESISTOR DE 220 OHM
SWITCH
32 ANIGÁP
LED
COMPONENTES UTILIZADOS
FLAVIOBABOS.COM.BR
PROJETO 1
TEMPO: 30 minutos
NÍVEL:
de atuadores.
abaixo em um penhasco,
como mostrado ao lado.
Quanto mais alto o
penhasco, mais energia
as rochas terão quando
atingirem o fundo.
FLAVIOBABOS.COM.BR
PROJETO 1
82 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 1
Esquema do circuito
92 ANIGÁP
Montagem do projeto
FLAVIOBABOS.COM.BR
PROJETO 1
03 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 1
Conexões do botão
Já
esses
dois
não
estão.
Montando o circuito
23 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 1
FLAVIOBABOS.COM.BR
PROJETO 1
DIVIRTA-SE!
Circuitos em série!
acendê-lo.
FLAVIOBABOS.COM.BR
PROJETO 1
53 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 1
V=R*I R=V/I
I=V/R
FLAVIOBABOS.COM.BR
PROJETO 1
Recaptulando...
A saber
MULTÍMETRO
04 ANIGÁP
FLAVIOBABOS.COM.BR
SWITCH
LED
COMPONENTES UTILIZADOS
SUMÁRIO
FLAVIOBABOS.COM.BR
RESISTOR DE 220 OHM
PROJETO 2
RESISTOR DE 10 KILOHM
14 ANIGÁP
PROJETO 2
TEMPO: 45 minutos
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 2
Montando o circuito
FLAVIOBABOS.COM.BR
PROJETO 2
Montagem do projeto
44 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 2
3) Insira o interruptor na
protoboard, como fez no exemplo
do projeto anterior. Conecte um
lado ao power e o outro lado ao
pino digital 2 do Arduino. Você
54 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 2
O CÓDIGO
Antes de começar...
64 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 2
74 ANIGÁP
void setup() {
void loop() {
estadobotao = digitalRead(2); //a variável 'estadobotao' recebe o estado da porta
digital 2
FLAVIOBABOS.COM.BR
PROJETO 2
int estadobotao = 0;
FLAVIOBABOS.COM.BR
PROJETO 2
void setup() {
pinMode(3,OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(2, INPUT);
}
void loop() {
estadobotao = digitalRead(2);
FLAVIOBABOS.COM.BR
PROJETO 2
if (estadobotao == LOW){
FLAVIOBABOS.COM.BR
PROJETO 2
digitalWrite(3, HIGH);
digitalWrite(4, LOW);
digitalWrite(5, LOW);
}
else{
digitalWrite(3, LOW);
digitalWrite(4, LOW);
digitalWrite(5, HIGH);
delay(250);
digitalWrite(4, HIGH);
digitalWrite(5, LOW);
delay(250);
}
}
25 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 2
FLAVIOBABOS.COM.BR
PROJETO 2
Observe!
Desafio
FLAVIOBABOS.COM.BR
PROJETO 2
Recaptulando...
FLAVIOBABOS.COM.BR
PROJETO 2
@BABOSENGENHARIA
4 bandas
5 bandas
220 Ω 560Ω 4.7kΩ
4 bandas
65 ANIGÁP
5 bandas
1kΩ 10kΩ 1MΩ 10MΩ
FLAVIOBABOS.COM.BR
SUMÁRIO
PROJETO 3
SENSOR DE TEMPERATURA
RESISTOR DE 220 OHM
75 ANIGÁP
LED
COMPONENTES UTILIZADOS
FLAVIOBABOS.COM.BR
PROJETO 3
TEMPO: 45 minutos
Montado nos
projetos 1 e 2.
NÍVEL:
Montando o circuito
95 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 3
BORA PROGRAMAR?
void setup() {
for (int leds = 2; leds<5; leds++){ //este for lê as portas em que todos os leds
//estão conectados
void loop() {
int valorSensor = analogRead(sensorTMP); //variável que faz a leitura do sensor
FLAVIOBABOS.COM.BR
PROJETO 3
delay(1);
}
FLAVIOBABOS.COM.BR
PROJETO 3
AS CONSTANTES DO CÓDIGO: as
variáveis const int são diferentes de int. Se
você deseja que a variável seja apenas de
leitura, use const. Se precisar gravar outros
números ao longo do código, use a variável do
tipo int. Por exemplo, os números dos pinos
raramente devem ser alterados. Portanto, eles
geralmente devem ser const.
void setup() {
Serial.begin (9600);
FLAVIOBABOS.COM.BR
PROJETO 3
void loop() {
int valorSensor = analogRead(sensorTMP);
FLAVIOBABOS.COM.BR
PROJETO 3
FLAVIOBABOS.COM.BR
PROJETO 3
digitalWrite(3, LOW);
digitalWrite(4, LOW);
FLAVIOBABOS.COM.BR
PROJETO 3
delay(1);
}
86 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 3
DICA
um.
FLAVIOBABOS.COM.BR
LED
COMPONENTES UTILIZADOS
SUMÁRIO
FLAVIOBABOS.COM.BR
PROJETO 4
FOTO-RESISTOR
07 ANIGÁP
PROJETO 4
TEMPO: 45 minutos
Montado nos
projetos 1, 2 e 3.
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 4
Montando o circuito
27 ANIGÁP
BORA PROGRAMAR?
void setup() {
Serial.begin (9600); //inicia o monitor serial
void loop() {
ValorSensorVermelho = analogRead (SENSORvermelho); //faz a leitura do sensor
que irá emitir a cor vermelha do LED
57 ANIGÁP
delay(5);
FLAVIOBABOS.COM.BR
PROJETO 4
Serial.print("\t");
int ValorVerde = 0;
int ValorVermelho = 0;
int ValorAzul = 0;
int ValorSensorVermelho = 0;
int ValorSensorVerde = 0;
int ValorSensorAzul = 0;
void setup() {
Serial.begin (9600);
pinMode(LEDverde, OUTPUT);
pinMode(LEDvermelho, OUTPUT);
pinMode(LEDazul, OUTPUT);
}
void loop() {
FLAVIOBABOS.COM.BR
PROJETO 4
ValorVermelho = ValorSensorVermelho/4;
ValorVerde = ValorSensorVerde/4;
ValorAzul = ValorSensorAzul/4;
CONVERTENDO AS LEITURAS DO
SENSOR: A função para alterar o brilho do
LED via PWM é chamada analogWrite (). Ele
precisa de dois argumentos: o pino para
gravar e um valor entre 0 e 255. Este segundo
número representa o duty cicle ou ciclo de
trabalho que o Arduino irá fornecer ao pino
especificado. Um valor de 255 definirá o pino
HIGH o tempo todo, tornando o LED conectado
o mais brilhante possível. Um valor de 127
ajustará o pino com o HIGH na metade do
tempo do período, tornando o LED mais escuro.
0 ajustaria o pino como LOW o tempo todo,
desligando o LED. Dessa forma, para
converter a leitura do sensor de um valor
entre 0-1023 para um valor entre 0-255
usando analogWrite (), é necessário dividir a
a leitura do sensor por 4.
Serial.print("\t");
Serial.print("Valores PWM Vermelho: "); //printa na tela os valores analógicos
convertidos para PWM
Serial.print(ValorVermelho);
Serial.print(" Verde: ");
Serial.print(ValorVerde);
97 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 4
DICA
COMPONENTES UTILIZADOS
SUMÁRIO
FLAVIOBABOS.COM.BR
SERVO MOTOR
PROJETO 5
ENGRENAGEM ARDUINO
CAPACITOR DE 100µF
18 ANIGÁP
PROJETO 5
TEMPO: 1 hora
Montado nos
projetos 1, 2, 3 e 4.
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 5
Montagem do circuito
FLAVIOBABOS.COM.BR
PROJETO 5
2) Coloque um potenciômetro na
protoboard e conecte um lado a 5V
e o outro ao GND. Um potenciômetro
é um tipo de divisor de tensão. Ao
girar o botão, você altera a
proporção da tensão entre o pino do
meio e a potência. Você pode ler
essa alteração em uma entrada
analógica. Conecte o pino do meio
ao pino analógico 0. Isso controlará
a posição do seu servo motor.
FLAVIOBABOS.COM.BR
PROJETO 5
FLAVIOBABOS.COM.BR
PROJETO 5
NOTE
FLAVIOBABOS.COM.BR
PROJETO 5
ADOTE
FLAVIOBABOS.COM.BR
SUMÁRIO
FOTO-RESISTOR
BUZZER
98 ANIGÁP
COMPONENTES UTILIZADOS
FLAVIOBABOS.COM.BR
PROJETO 6
TEMPO: 45 minutos
Montado nos
projetos 1, 2, 3 e 4.
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 6
Período
PWM 50: analogWrite(50)
Período
PWM 200: analogWrite(200)
Período
TONE 440: tone
TEMPO: 45 (9, 440)
minutos
NÍVEL:
Período
TONE 880: tone (9, 880)
10 milisegundos
Um buzzer é um pequeno
elemento que vibra quando
recebe eletricidade. A
vibração desloca o ar ao
redor, criando ondas sonoras.
FLAVIOBABOS.COM.BR
PROJETO 6
Montando o circuito
39 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 6
FLAVIOBABOS.COM.BR
PROJETO 6
O código
const int led = 13; //variável que identifica o LED da placa e sua porta
59 ANIGÁP
void setup() {
FLAVIOBABOS.COM.BR
PROJETO 6
void loop() {
tone(8, bipe, 20); //tocando o buzzer que está na porta 8, com frequência obtida
pela variável bipe e tocando a cada 20 ms
int ValorSensor;
int sensorBAIXO = 1023;
int sensorALTO = 0;
69 ANIGÁP
void setup() {
pinMode(led, OUTPUT);
digitalWrite(led, HIGH);
ValorSensor = analogRead(A0);
if (ValorSensor > sensorALTO){
sensorALTO = ValorSensor;
}
if (ValorSensor < sensorBAIXO){
sensorBAIXO = ValorSensor;
}
}
FLAVIOBABOS.COM.BR
PROJETO 6
void loop() {
ValorSensor = analogRead (A0);
delay(10);
NOTE
001 ANIGÁP
FLAVIOBABOS.COM.BR
BUZZER
BOTÃO
COMPONENTES UTILIZADOS
SUMÁRIO
FLAVIOBABOS.COM.BR
RESISTOR DE 10 KILOHM
PROJETO 7
RESISTOR DE 1 MEGAOHM
TEMPO: 45 minutos
Montado nos
projetos 1, 2, 3, 4 e 6
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 7
301 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 7
BORA PROGRAMAR?
FLAVIOBABOS.COM.BR
PROJETO 7
Serial.println(valorTeclado);
//printa valor lido
if (valorTeclado == 1023){
//se o valor analógico for igual a 1023
tone(8, notas[0]);
//toca o primeiro elemento da matriz - frequencia 262
}
FLAVIOBABOS.COM.BR
PROJETO 7
else{
//se nenhum botão for pressionado
noTone(8);
//não toca nada
}
}
INICIALIZANDO A COMUNICAÇÃO
SERIAL: No seu setup (), inicie a comunicação
serial com o computador.
Serial.println(valorTeclado);
if (valorTeclado == 1023){
tone(8, notas[0]);
}
else{
noTone(8);
}
}
FLAVIOBABOS.COM.BR
PROJETO 7
Note e Adote
arduino.cc/frequencies
FLAVIOBABOS.COM.BR
RESISTOR DE 10KΩ
MOSFET
DIODO 1N4007
MOTOR DC BOTÃO
COMPONENTES UTILIZADOS
SUMÁRIO
FLAVIOBABOS.COM.BR
PROJETO 8
BATERIA DE 9V
111 ANIGÁP
PROJETO 8
TEMPO: 45 minutos
Montado nos
projetos 1, 2, 3 e 4.
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 8
FLAVIOBABOS.COM.BR
PROJETO 8
FLAVIOBABOS.COM.BR
PROJETO 8
511 ANIGÁP
4) Insira o transistor na
611 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 8
FLAVIOBABOS.COM.BR
PROJETO 8
Bora programar?
//Variáveis do projeto
const int botao = 4;
const int motor = 9;
int estadobotao;
void setup() {
void loop() {
estadobotao = analogRead(botao); //leitura do estado do botão
void setup() {
pinMode(motor, OUTPUT);
pinMode(botao, INPUT);
}
void setup() {
pinMode(motor, OUTPUT);
pinMode(botao, INPUT);
}
FLAVIOBABOS.COM.BR
PROJETO 8
Note
FLAVIOBABOS.COM.BR
POTÊNCIOMETRO
BOTÃO
RESISTOR DE 10KOHMS
COMPONENTES UTILIZADOS
SUMÁRIO
FLAVIOBABOS.COM.BR
RESISTOR DE 220OHMS
PROJETO 9
DISPLAY LCD
1211 ANIGÁP
PROJETO 9
TEMPO: 1 hora
Montado nos
projetos 1, 2 e 3.
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 9
FLAVIOBABOS.COM.BR
PROJETO 9
FLAVIOBABOS.COM.BR
PROJETO 9
521 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 9
Bora programar?
void setup() {
// determina o número de colunas e linhas do LCD
lcd.begin(16, 2);
void loop() {
// checa o estado do tilt
estadoatual = digitalRead(tilt);
FLAVIOBABOS.COM.BR
PROJETO 9
case 1:
lcd.print("Provavel");
break;
case 2:
lcd.print("Certamente");
break;
case 3:
lcd.print("Acho que sim");
break;
821 ANIGÁP
case 4:
lcd.print("Incerto");
break;
case 5:
lcd.print("Pergunte denovo");
break;
FLAVIOBABOS.COM.BR
PROJETO 9
case 6:
lcd.print("Em duvida");
break;
case 7:
lcd.print("Nao");
break;
}
}
}
// salva o estado atual do tilt como o último estado
estadoanterior = estadoatual;
}
#include <LiquidCrystal.h>
int estadoanterior = 0;
int resposta;
void setup() {
lcd.begin(16, 2);
pinMode(tilt, INPUT);
void loop() {
estadoatual = digitalRead(tilt);
if (estadoatual != estadoanterior) {
if (estadoatual == LOW) {
resposta = random(8);
lcd.clear();
131 ANIGÁP
lcd.setCursor(0, 0);
lcd.print("O LCD diz:");
lcd.setCursor(0, 1);
FLAVIOBABOS.COM.BR
PROJETO 9
estadoanterior = estadoatual;
}
FLAVIOBABOS.COM.BR
PROJETO 9
Sobre os LCD's
BOTÃO
DIODO 1N4007
CAPACITOR 100uF
COMPONENTES UTILIZADOS
SUMÁRIO
FLAVIOBABOS.COM.BR
RESISTOR DE 10KOHMS
PROJETO 10
RESISTOR DE 220OHMS
PIEZZO ELÉTRICO
RESISTOR DE 1 MOHM
531 ANIGÁP
PROJETO 10
TEMPO: 1 hora
Montado nos
projetos 1, 2, 3, 4 e 5.
NÍVEL:
FLAVIOBABOS.COM.BR
PROJETO 10
FLAVIOBABOS.COM.BR
PROJETO 10
831 ANIGÁP
// variáveis para usar como limites HIGH e LOW do valor das batidas
const int batidabaixa = 10;
const int batidaalta = 100;
void setup() {
// insira o servo no pino 9
servo.attach(9);
pinMode(lverde, OUTPUT);
pinMode(lvermelho, OUTPUT);
FLAVIOBABOS.COM.BR
PROJETO 10
void loop() {
FLAVIOBABOS.COM.BR
PROJETO 10
// se há apenas 3 batidas
if (numerobatidas >= 3) {
// destrave a caixa
trancado = false;
numerobatidas = 0;
}
}
}
241 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 10
#include <Servo.h>
Servo servo;
FLAVIOBABOS.COM.BR
PROJETO 10
int valorbatida;
int valorbotao;
FLAVIOBABOS.COM.BR
PROJETO 10
void setup() {
servo.attach(9);
pinMode(lamarelo, OUTPUT);
pinMode(lverde, OUTPUT);
pinMode(lvermelho, OUTPUT);
pinMode(botao, INPUT);
Serial.begin(9600);
digitalWrite(lverde, HIGH);
servo.write(0);
Serial.println("A caixa está aberta!");
}
void loop() {
if (trancado == false) {
541 ANIGÁP
valorbotao = digitalRead(botao);
if (valorbotao == HIGH) {
trancado = true;
digitalWrite(lverde, LOW);
digitalWrite(lvermelho, HIGH);
servo.write(90);
Serial.println("A caixa está trancada: ");
delay(1000);
}
}
if (trancado == true) {
FLAVIOBABOS.COM.BR
PROJETO 10
if (numerobatidas >= 3) {
trancado = false;
servo.write(0);
delay(20);
digitalWrite(lverde, HIGH);
digitalWrite(lvermelho, LOW);
741 ANIGÁP
FLAVIOBABOS.COM.BR
PROJETO 10
digitalWrite(lamarelo, HIGH);
delay(50);
digitalWrite(lamarelo, LOW);
Serial.print("Valor de batida válida ");
Serial.println(valor);
return true;
}
FLAVIOBABOS.COM.BR
PROJETO 10
else {
Serial.print("Valor incorreto da batida ");
Serial.println(valor);
return false;
}
}
Note
FLAVIOBABOS.COM.BR
PROJETO 10
Adote
arduino.cc/analogtoserial
arduino.cc/soldering
FLAVIOBABOS.COM.BR
PROJETO 10
Saiba disso
FLAVIOBABOS.COM.BR
PARABÉNS SE VOCÊ CHEGOU ATÉ AQUI!
FLAVIOBABOS.COM.BR
Não precisa, pois, na verdade, você irá acessar
tudo isso por 12xR$67,00.
GARANTA AQUI O
TREINAMENTO COMPLETO
651 ANIGÁP
FLAVIOBABOS.COM.BR