8 Projetos Incríveis
com
8 PROJETOS INCRÍVEIS COM ARDUINO
O Arduino é uma plataforma incrível para desenvolver projetos, tanto
profissionais quanto apenas de hobby. Para ficar cada vez melhor e
desenvolver grandes projetos, o segredo é começar com projetos mais simples
e ir implementando-os.
Neste eBook você irá aprender os 8 projetos mais incríveis para começar a
dominar o Arduino.
1
PROJETO #1 – LCD
Este projeto consiste em como imprimir uma mensagem na tela do LCD
através da função lcd.print() contida na biblioteca LiquidCrystal.h. Além disso,
você verá como conectar corretamente o LCD ao Arduino.
Material:
1x Arduino (Uno, Mega...)
1x LCD 16x2
1x Potenciômetro 10kΩ
Ligação:
Pino LCD Pino Arduino
VSS (1) GND
VDD (2) 5V
RS (4) 12
RW (5) GND
Enable (6) 11
D4 (11) 5
D5 (12) 4
D6 (13) 3
D7 (14) 2
Após fazer estas ligação, também se deve ligar o potenciômetro de 10kΩ aos
pinos 5V, GND e V0(3) do LCD. Veja como ficará a ligação na Imagem 1.
2
Imagem 1 – Ligação LCD ao Arduino
Programação:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16, 2);
lcd.print("Hello World!");//mensagem que irá imprimir
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
lcd.print("s");
}
3
PROJETO #2 – Pisca-Pisca Ajustável
Este projeto consiste em ajustar a frequência com que um LED pisca. Esta
frequência dependerá diretamente do ajuste de um potenciômetro.
Material:
1x Arduino
1x Potenciômetro de 10kΩ
1x LED
1x Resistor de 220Ω
Ligação:
Conecte o potenciômetro de 10kΩ aos pinos 5V, GND e na porta 0 do Arduino.
Conecte o LED à porta 11, com o resistor de 220Ω, conforme a Imagem 2:
Imagem 2 – Ligação Potenciômetro e LED ao Arduino
4
Programação:
int potPin = 0;
int ledPin = 11;
int val = 0;
void setup(){
pinMode(ledPin, OUTPUT);
}
void loop(){
val = analogRead(potPin);
digitalWrite(ledPin, HIGH);
delay(val);
digitalWrite(ledPin, LOW);
delay(val);
}
5
PROJETO #3 – Semáforo de Carros e Pedestres
Neste projeto consiste em implementar dois semáforos: um para os carros e
outro para os pedestres.
O semáforo irá seguir a seguinte lógica:
Quando o sinal do semáforo do carro estiver verde ou amarelo, o sinal
vermelho dos pedestres estará aceso;
Quando o sinal vermelho do semáforo do carro estiver aceso, somente o
sinal verde do pedestre deve estar aceso;
Caso o botão seja pressionado, a preferência de passagem pela rua é
do pedestre.
Material:
1x Arduino
2x LED vermelho
2x LED verde
1x LED amarelo
1x Pushbutton
6x Resistor 220Ω
6
Ligação:
Imagem 3
Programação:
int scVerde = 10;
const int scAmarelo = 11;
const int scVermelho = 12;
const int spVerde = 8;
const int spVermelho = 9;
int ledState = LOW;
long previousMillis = 0;
long interval = 5000;
int ctrlLuz = 0;
void setup() {
Serial.begin(9600);
pinMode(scVerde,OUTPUT);
7
pinMode(scAmarelo,OUTPUT);
pinMode(scVermelho,OUTPUT);
pinMode(spVerde,OUTPUT);
pinMode(spVermelho,OUTPUT);
pinMode(2, INPUT); // Botao
}
void loop() {
unsigned long currentMillis = millis();
int sensorValue = digitalRead(2);
if(currentMillis - previousMillis >
interval) {
previousMillis = currentMillis;
switch(ctrlLuz) {
case 0 : // Verde
digitalWrite(scVermelho,LOW);
digitalWrite(scVerde,HIGH);
digitalWrite(spVerde,LOW);
digitalWrite(spVermelho,HIGH);
ctrlLuz++;
interval = 15000;
break;
case 1 : // amarelo
digitalWrite(scVerde,LOW);
digitalWrite(scAmarelo,HIGH);
digitalWrite(spVerde,LOW);
digitalWrite(spVermelho,HIGH);
ctrlLuz++;
interval = 1000;
break;
case 2 : // Vermelho
digitalWrite(scAmarelo,LOW);
digitalWrite(scVermelho,HIGH);
digitalWrite(spVermelho,LOW);
8
digitalWrite(spVerde,HIGH);
interval = 7000;
ctrlLuz = 0;
break;
}
}
if((sensorValue == 1) && (ctrlLuz == 1)) {
interval = 2000;
Serial.print("Sensor ");
Serial.println(sensorValue, DEC);
}
}
9
PROJETO #4 – Termômetro
Neste projeto vamos simular um termômetro com o Arduino, utilizando LEDs e
um sensor de temperatura. Quando o termômetro indicar uma situação crítica,
um Buzzer será acionado para indicar a alta temperatura.
Se o sensor de temperatura ler um valor maior que:
30 – Ligar o 1º LED verde;
35 – Ligar o 2º LED verde;
40 – Ligar o 1º LED amarelo;
45 – Ligar o 2º LED amarelo;
50 – Ligar o 1º LED vermelho;
55 – Ligar o 2º LED vermelho e ligar o Buzzer;
Material:
1x Arduino
1x Buzzer
1x Sensor de Temperatura NTC
1x Resistor de 1kΩ
6x Resistor de 220Ω
2x LED Verde
2x LED Amarelo
2x LED Vermelho
Ligação:
Conecte um LED verde na porta 8 e o outro na porta 9;
Conecte um LED amarelo na porta 10 e o outro na porta 11;
Conecte um LED vermelho na porta 12 e o outro na porta 13;
Conecte o Buzzer na porta 6 e o Sensor de Temperatura na porta A0
(conforme indica a Imagem 4).
10
Imagem 4
Programação:
int PinoSensor = 0;
int Buzzer = 6;
int led1 = 8;
int led2 = 9;
int led3 = 10;
int led4 = 11;
int led5 = 12;
int led6 = 13;
int ValorSensor = 0;
11
void setup() {
pinMode(Buzzer, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
Serial.begin(9600);
void loop(){
ValorSensor = analogRead(PinoSensor);
Serial.print("Valor do Sensor = ");
Serial.println(ValorSensor);
if (ValorSensor > 30)
digitalWrite(led1, HIGH);
else
digitalWrite(led1, LOW);
if (ValorSensor > 35)
digitalWrite(led2, HIGH);
else
digitalWrite(led2, LOW);
if (ValorSensor > 40)
digitalWrite(led3, HIGH);
else
digitalWrite(led3, LOW);
if (ValorSensor > 45)
digitalWrite(led4, HIGH);
else
digitalWrite(led4, LOW);
if (ValorSensor > 50)
digitalWrite(led5, HIGH);
else
12
digitalWrite(led5, LOW);
if (ValorSensor > 55 ){
digitalWrite(led6, HIGH);
digitalWrite(Buzzer, HIGH);
}
else{
digitalWrite(led6, LOW);
digitalWrite(Buzzer, LOW);
}
delay(1000);
}
13
PROJETO #5 – Piano
Este projeto produzirá toques musicais e acenderá um LED à medida que um
botão é pressionado.
Material:
1x Arduino
1x Buzzer
6x Resistores de 220Ω
3x Pushbutton
1x LED Verde
1x LED Amarelo
1x LED Vermelho
Ligação:
Conecte cada botão às portas 2, 3 e 4;
Conecte o Buzzer à porta 10;
Conecte cada LED às portas 11, 12 e 13.
Imagem 5
14
Programação:
const int ledPin1 = 13;
const int ledPin2 = 12;
const int ledPin3 = 11;
const int Botao1 = 2;
const int Botao2 = 3;
const int Botao3 = 4;
const int Buzzer = 10;
int EstadoBotao1 = 0;
int EstadoBotao2 = 0;
int EstadoBotao3 = 0;
int Tom = 0;
void setup() {
pinMode(Buzzer, OUTPUT);
pinMode(ledPin1, OUTPUT);
pinMode(Botao1, INPUT);
pinMode(ledPin2, OUTPUT);
pinMode(Botao2, INPUT);
pinMode(ledPin3, OUTPUT);
pinMode(Botao3, INPUT);
void loop(){
EstadoBotao1 = digitalRead(Botao1);
EstadoBotao2 = digitalRead(Botao2);
EstadoBotao3 = digitalRead(Botao3);
if(EstadoBotao1 && !EstadoBotao2 &&
!EstadoBotao3) {
Tom = 50;
digitalWrite(ledPin1, HIGH);
}
15
if(EstadoBotao2 && !EstadoBotao1 &&
!EstadoBotao3) {
Tom = 400;
digitalWrite(ledPin3, HIGH);
}
if(EstadoBotao3 && !EstadoBotao2 &&
!EstadoBotao1) {
Tom = 1000;
digitalWrite(ledPin2, HIGH);
}
while(Tom > 0){
digitalWrite(Buzzer, HIGH);
delayMicroseconds(Tom);
digitalWrite(Buzzer, LOW);
delayMicroseconds(Tom);
Tom = 0;
digitalWrite(ledPin1, LOW);
digitalWrite(ledPin2, LOW);
digitalWrite(ledPin3, LOW);
}
16
PROJETO #6 – Alarme
Este projeto consiste em criar um alarme que irá emitir um som e acender o
LED quando algum objeto estiver a menos de 30cm do raio de alcance do
Sensor Infravermelho.
Material:
1x Arduino
1x LED Vermelho
1x Resistor de 220Ω
1x Sensor infravermelho
1x Buzzer
Ligação:
Conecte o LED ao pino 13 (utilize o Resistor).
Conecte o Sensor ao pino A0.
Conecte o Buzzer ao pino 10.
Imagem 6
17
Ligação:
int LED = 13; int buzzer = 10; int sharp =
0;
void setup() {
pinMode(sharp,INPUT);
pinMode(buzzer,OUTPUT);
pinMode(LED,OUTPUT);
void loop() {
int ir = analogRead(sharp);
if(ir>150) {
digitalWrite(LED, HIGH);
digitalWrite(buzzer, HIGH);
}else {
digitalWrite(LED, LOW);
digitalWrite(buzzer, LOW);
}
18
PROJETO #7 – Alarme Multipropósito
Este projeto consiste em criar um alarme mais complexo. 3 LEDs de cores
diferentes irão indicar a temperatura e outros 3 irão indicar a luminosidade. O
funcionamento do projeto tem a seguinte lógica:
Conforme a temperatura for aumentando, os LEDs correspondentes vão
acendendo um por um. Quando todos os 3 LEDs estiverem acesos, um
alarme deve soar.
Se a luminosidade do local estiver alta, todos os outros 3 LEDs devem
estar acesos e a medida que esta luminosidade for reduzida, os LEDs
vão apagando-se um por um. Quando todos os LEDs estiverem
apagados, o que indicará falta de luminosidade total, outro LED
específico deve acender.
Se os 3 LEDs de temperatura estiverem acesos e os 3 de luminosidade
estiverem apagados, então o alarme deve soar e o LED específico deve
acender.
Material:
1x Arduino
7x Resistor de 220Ω
2x Resistor de 1kΩ
2x LED verde
2x LED amarelo
2x LED vermelho
1x LED branco de alto brilho
1x Sensor de Temperatura NTC
1x Sensor de Luminosidade LDR
1x Buzzer
19
Ligação:
Conecte os LEDs nos pinos de 5 ao 11 (conforme Imagem 7).
Conecte o Buzzer ao pino 2.
Conecte o Sensor de Tempertura ao pino A1.
Conecte o Sensor de Luminosidade ao pino A0.
Imagem 7
20
Programação:
const int LDR = 0;
const int NTC = 1;
const int Buzzer = 2;
const int led1 = 5;
const int led2 = 6;
const int led3 = 7;
const int led4 = 8;
const int led5 = 9;
const int led6 = 10;
const int ledAB = 11;
int ValorLDR = 0;
int ValorNTC = 0;
void setup(){
pinMode(Buzzer, OUTPUT);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led5, OUTPUT);
pinMode(led6, OUTPUT);
pinMode(ledAB, OUTPUT);
Serial.begin(9600);
void loop(){
ValorLDR = analogRead(LDR);
ValorNTC = analogRead(NTC);
Serial.print("Valor da Temperatura = ");
Serial.println(ValorNTC);
if (ValorNTC > 10)
digitalWrite(led1, HIGH);
else
21
digitalWrite(led1, LOW);
if (ValorNTC > 20)
digitalWrite(led2, HIGH);
else
digitalWrite(led2, LOW);
if (ValorNTC > 30){
digitalWrite(led3, HIGH);
digitalWrite(Buzzer, HIGH);
}
else{
digitalWrite(led3, LOW);
digitalWrite(Buzzer, LOW);
}
if (ValorLDR > 600)
digitalWrite(led6, HIGH);
else
digitalWrite(led6, LOW);
if (ValorLDR > 500)
digitalWrite(led5, HIGH);
else
digitalWrite(led5, LOW);
if (ValorLDR > 450){
digitalWrite(led4, HIGH);
digitalWrite(ledAB, LOW);
}
else{
digitalWrite(led4, LOW);
digitalWrite(ledAB, HIGH);
}
22
PROJETO #8 – Portão Eletrônico
Este projeto consiste em utilizar um servo motor para realizar a elevação de
uma barra, simulando o funcionamento de um portão eletrônico. Também irá
utilizar um sensor de distância para acionar o servo motor caso a distância seja
menor que a determinada.
O funcionamento do projeto tem a seguinte lógica:
O sensor de distância irá medir, e caso esta distância seja igual ou
menor que a pré-determinada, o servo motor deve ser acionado para
girar 90º para a esquerda.
Uma vez que a distância seja maior que a pré-determinada, o motor
volta a sua posição inicial.
Material:
1x Arduino
1x Sensor de infravermelho
1x Micro Servo motor
23
Ligação:
Conecte o servo motor ao pino 9.
Conecte o sensor ao pino A0.
Imagem 8
24
Programação:
#include <Servo.h>
const int sensor = 0;
Servo myservo;
void setup() {
myservo.attach(9);
pinMode(sensor, INPUT);
Serial.begin(9600);
}
void loop(){
int ir = analogRead(sensor);
Serial.print(ir);
Serial.print(" ir");
Serial.println();
if(ir > 450){
myservo.write(90);
delay (6000);
myservo.write(-90);
}
25
Este eBook foi desenvolvido pela EngEasier
26