Já teve aquela vontade de criar um projeto diferente, mas estava sem criatividade e acabou não fazendo nada? Se sim, este post é para você! Neste tutorial, vamos ver 8 projetos incríveis com o Arduino, que você pode fazer na sua casa! Para aqueles que são novos por aqui, o Arduino é uma plataforma de prototipagem eletrônica de hardware livre, ou seja, podemos usá-lo para criar o que quisermos, a imaginação é o limite. Se você já segue o nosso blog, deve estar familiarizado com outros tutoriais por aqui. Hoje, veremos diversos projetos sendo trabalhados com display, LED’s, sensores e muito mais. Os projetos, juntos dos conhecimentos adquiridos neste post, são ótimas fontes de inspiração para seus futuros projetos, sejam eles profissionais ou apenas um hobby.
Neste tutorial, iremos utilizar o Display LCD 16×2 para imprimir uma mensagem na tela do LCD, partindo da função lcd.print() presente na biblioteca LiquidCrystal.h. Além de descobrir como é feito a ligação correta do LCD ao Arduino, no final você também verá dicas de melhorias e adaptações que você mesmo pode fazer.
Para isso, será necessário que você tenha:

Conforme o diagrama esquemático acima, faremos as ligações do LCD ao Arduino da seguinte maneira, segue a tabela:

Como no diagrama acima, você pode fazer as ligações do GND e do 5V na protoboard. Após as ligações da tabela terem sido feitas, você também deve ligar o potenciômetro ao GND, VE (3° terceiro pino do display) e o 5V.
Como dito antes, neste post, iremos utilizar a função lcd.print() presente na biblioteca LiquidCrystal.h. Como está na programação abaixo, além de incluirmos a biblioteca, definimos as portas do LCD.
#include <LiquidCrystal.h> //Inclui a biblioteca do LiquidCrytal
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Declara as portas de saída para o LCD
void setup() {
lcd.begin(16, 2); //Inicia a escrita no LCD
lcd.print("BLOG ELETROGATE");//Exibe a mensagem que irá imprimir
}
void loop() {
lcd.setCursor(0, 1); //Define o cursor em (0,1)
lcd.print(millis()/1000); //Faz a contagem do tempo e o mostra na tela do LCD
lcd.print("s"); //Escreve a letra s para representar os segundos
}
Acima podemos ver que na função descrita logo aparece a mensagem que desejamos escrever, neste caso “BLOG ELETROGATE” é a nossa mensagem.
Na demonstração abaixo veremos que o potenciômetro tem a função de regular a luminosidade do visor, além de vermos a mensagem “BLOG ELETROGATE” aparecer no mesmo, junto com os segundos de exibição.
Você pode incrementar essa função em algum projeto que haja interação. Por exemplo, você pode usar essa função para dizer a temperatura de um ambiente junto com um sensor, na rega automática e muito mais. São muitas as possibilidades.
Este projeto consiste em ajustar a frequência de acionamento de um LED por meio de um potenciômetro.
Encaixe o Arduino Nano na protoboard, conecte o LED ao GND por meio de um resistor de 220 Ω no catodo e diretamente à porta digital 11 do Arduino no anodo. Por fim, faça as conexões de GND e 5V do Potenciômetro de 10 kΩ e o conecte na porta analogica do Arduino, conforme a imagem abaixo:

int potPin = 0; //Declara porta A0 do potênciometro
int ledPin = 11; //Declara a porta D11 para o LED
int val = 0; //Declara o valor inicial como zero
void setup(){
pinMode(ledPin, OUTPUT); //Declara porta do LED como saída
}
void loop(){
val = analogRead(potPin); //Le o valor do potênciometro
digitalWrite(ledPin, HIGH); //Liga o Led
delay(val); //Lê o valor do potênciometro e dá o tempo
digitalWrite(ledPin, LOW); //Desliga o LED
delay(val); //Lê o valor do potênciometro e dá o tempo
}
No vídeo abaixo, podemos perceber que, conforme oscilamos o potenciômetro, a frequência do LED aumenta e diminui.
Com algumas adaptações e substituições de componentes, você pode criar uma lanterna fixa ou com variação de frequência e luminosidade, ou seja, uma lanterna pisca pisca.
Este tutorial consiste em colocar dois semáforos: um para os carros e outro para os pedestres do trânsito.
Conforme o diagrama abaixo, iremos distribuir os LEDs pela Protoboard e ligar os resistores nos catodos de cada LED do circuito, além de fazer as devidas conexões no GND. Devemos fazer a ligação do push botton ao 5V e à porta digital 2 do Arduino.

Agora, devemos ligar cada LED do semáforo de carros (sc) ao Arduino: vermelho, amarelo e verde às portas digitais 12, 11 e 10 respectivamente. Para os LEDs do semáforo de pedestres (sp), os LEDs vermelho e verde devem ser conectados às portas 9 e 8 digitais do Arduino, respectivamente.
Lembre-se de fazer as conexões de GND e 5V na Protoboard além de conectar os mesmo ao Arduino Uno.
int scVerde = 10; //Define a pota D10 do LED verde do sc
const int scAmarelo = 11; //Define a pota D11 do LED amarelo do sc
const int scVermelho = 12; //Define a pota D12 do LED vermelho do sc
const int spVerde = 8; //Define a pota D8 do LED verde do sp
const int spVermelho = 9; //Define a pota D9 do LED vermelho do sp
int ledState = LOW; //Define o estado do LED como desligado
long previousMillis = 0; //Começa a contar o tempo do zero
long interval = 5000; //Tempo de intervalo de 5000 milissegundos
int ctrlLuz = 0; //define o valor de mudança das luzes igual a 0
void setup() {
Serial.begin(9600);
pinMode(scVerde,OUTPUT); //Define a porta do LED como saída
pinMode(scAmarelo,OUTPUT); //Define a porta do LED como saída
pinMode(scVermelho,OUTPUT);//Define a porta do LED como saída
pinMode(spVerde,OUTPUT); //Define a porta do LED como saída
pinMode(spVermelho,OUTPUT); //Define a porta do LED como saída
pinMode(2, INPUT); // Botao //Define a porta do botão como entrada
}
void loop() {
unsigned long currentMillis = millis(); //O tempo dos milissegundos começa a correr
int sensorValue = digitalRead(2); //O valor da porta D2 é lido
if(currentMillis - previousMillis > //A variavel entra em ação após a leitura da porta 2
interval) {
previousMillis = currentMillis; //Os milessegundos previstos são iguais a corrente por milessegundo
switch(ctrlLuz) { //O botão é precionado
case 0 : // O valor faz com que ele fassa o semafaro de pedreste fique verde
digitalWrite(scVermelho,LOW); //O LED do sc é desligado
digitalWrite(scVerde,HIGH); //O LED do sc é ligado
digitalWrite(spVerde,LOW); //O LED do sc é desligado
digitalWrite(spVermelho,HIGH); //O LED do sc é ligado
ctrlLuz++;
interval = 15000; //Há um intervalo de 15 segundos
break; //Mudança de estados dos LEDS
case 1 : // O caso 1 é acionado (Amarelo)
digitalWrite(scVerde,LOW); //O LED do sc é desligado
digitalWrite(scAmarelo,HIGH);//O LED do sc é ligado
digitalWrite(spVerde,LOW); //O LED do sp é desligado
digitalWrite(spVermelho,HIGH);//O LED do sp é ligado
ctrlLuz++;
interval = 1000; //Há o intervalo de 1 segundo
break;//Mudança de estados dos LEDS
case 2 : // O caso 2 é acionado (Vermelho)
digitalWrite(scAmarelo,LOW); //O LED do sc é desligado
digitalWrite(scVermelho,HIGH);//O LED do sc é ligado
digitalWrite(spVermelho,LOW);//O LED do sp é desligado
digitalWrite(spVerde,HIGH);//O LED do sp é ligado
interval = 7000; //Intervalo de 7 segundos
ctrlLuz = 0;
break;//Mudança de estado
}
}
//Abaixo o valor do botão (Sensor) é lido novamente e o valor é redefino para diferente de 0, caso não haja mudança no estado o ciclo recomeça
if((sensorValue == 1) && (ctrlLuz == 1)) {
interval = 2000;
Serial.print("Sensor ");
Serial.println(sensorValue, DEC);
}
}
O sinal irá funcionar da seguinte maneira:
Neste novo tutorial, iremos simular um termômetro com o Arduino, utilizando LEDs e um sensor de temperatura.
Para este projeto, será necessário:

Não se esqueça de conectar o GND e o 5V do Arduino na Protoboard, além de fazer as devidas conexões com os resistores, como mostra o diagrama acima.
int PinoSensor = 0;//Declara o pino A0 como entrada do sensor
int Buzzer = 6;//Define o pino D6 como Buzzer
int led1 = 8;//Define o LED 1 como porta D8
int led2 = 9;//Define o LED 2 como porta D9
int led3 = 10;//Define o LED 3 como porta D10
int led4 = 11;//Define o LED 4 como porta D11
int led5 = 12;//Define o LED 5 como porta D12
int led6 = 13;//Define o LED 6 como porta D13
int ValorSensor = 0;//Declara o valor inicial do sensor = 0
void setup() {
pinMode(Buzzer, OUTPUT); //Porta do Buzzer é definida como saída
pinMode(led1, OUTPUT); //Porta do LED 1 é definida como saída
pinMode(led2, OUTPUT); //Porta do LED 2 é definida como saída
pinMode(led3, OUTPUT); //Porta do LED 3 é definida como saída
pinMode(led4, OUTPUT); //Porta do LED 4 é definida como saída
pinMode(led5, OUTPUT); //Porta do LED 5 é definida como saída
pinMode(led6, OUTPUT); //Porta do LED 6 é definida como saída
Serial.begin(9600);
}
void loop(){
ValorSensor = analogRead(PinoSensor);//É feito a leitura do pino do sensor
Serial.print("Valor do Sensor = "); //Define o valor do sensor
Serial.println(ValorSensor); //Escreve o valor do sensor
if (ValorSensor > 30) //A função vai definir como cada LED será ligado dependendo do valor que o sensor mandar
digitalWrite(led1, HIGH); //LED 1 liga
else
digitalWrite(led1, LOW); //LED 1 desliga
if (ValorSensor > 35) //A função vai definir como cada LED será ligado dependendo do valor que o sensor mandar
digitalWrite(led2, HIGH); //LED 2 liga
else
digitalWrite(led2, LOW); //LED 2 desliga
if (ValorSensor > 40) //A função vai definir como cada LED será ligado dependendo do valor que o sensor mandar
digitalWrite(led3, HIGH); //LED 3 liga
else
digitalWrite(led3, LOW); //LED 3 desliga
if (ValorSensor > 45) //A função vai definir como cada LED será ligado dependendo do valor que o sensor mandar
digitalWrite(led4, HIGH); //LED 4 liga
else
digitalWrite(led4, LOW); //LED 4 desliga
if (ValorSensor > 50) //A função vai definir como cada LED será ligado dependendo do valor que o sensor mandar
digitalWrite(led5, HIGH); //LED 5 liga
else
digitalWrite(led5, LOW); //LED 5 desliga
if (ValorSensor > 55 ){ //A função vai definir como cada LED será ligado dependendo do valor que o sensor mandar
digitalWrite(led6, HIGH); //LED 6 liga
digitalWrite(Buzzer, HIGH); //Buzzer liga
}
else{
digitalWrite(led6, LOW); //Led 6 desliga
digitalWrite(Buzzer, LOW); //Buzzer desliga
}
delay(1000); //espera de 1000 milissegundos
}
Quando o termômetro indicar uma situação crítica, o Buzzer será acionado para indicar a alta temperatura do local. Vejamos:
Se o Sensor de Temperatura NTC ler um valor maior que:
Neste novo projeto iremos produzir toques musicais aos quais LED’s correspondentes acenderão.
Para este projeto, será necessário:
Conecte cada Push Button às portas digitais 4, 3 e 2. Em seguida, conecte o Buzzer à porta digital 10 do Arduino Uno. Conecte o LED verde à porta digital 12 do Arduino, o LED amarelo deve ser conectado à porta digital 11 e por fim o LED vermelho deve ser conectado a porta digital 10 do Arduino Uno.

Não se esqueça de ligar os resistores aos LEDs e aos Push Buttons como mostra o diagrama acima, além de fazer as devidas conexões de 5V e GND do Arduino Uno à Protoboard.
const int ledPin1 = 13; //Define a porta D13 como LED 1
const int ledPin2 = 12; //Define a porta D12 como LED 2
const int ledPin3 = 11; //Define a porta D11 como LED 2
const int Botao1 = 2; //Define a porta D2 como botão 1
const int Botao2 = 3; //Define a porta D3 como botão 2
const int Botao3 = 4; //Define a porta D4 como botão 3
const int Buzzer = 10; //Define a porta D10 como Buzzer
int EstadoBotao1 = 0; //Estado inicial do botão1 é = 0
int EstadoBotao2 = 0; //Estado inicial do botão2 é = 0
int EstadoBotao3 = 0; //Estado inicial do botão3 é = 0
int Tom = 0; //Tom inicial é = 0
void setup() {
pinMode(Buzzer, OUTPUT); //Define a porta do Buzzer como saída
pinMode(ledPin1, OUTPUT); //Define a porta do LED 1 como saída
pinMode(Botao1, INPUT); //Define a porta do botão 1 como entrada
pinMode(ledPin2, OUTPUT); //Define a porta do LED 2 como saída
pinMode(Botao2, INPUT); //Define a porta do botão 2 como entrada
pinMode(ledPin3, OUTPUT); //Define a porta do LED 3 como saída
pinMode(Botao3, INPUT); //Define a porta do botão 3 como entrada
}
void loop(){
EstadoBotao1 = digitalRead(Botao1); //É feito a leitura do estado do botão 1
EstadoBotao2 = digitalRead(Botao2); //É feito a leitura do estado do botão 2
EstadoBotao3 = digitalRead(Botao3); //É feito a leitura do estado do botão 3
//A variável abaixo irá acionar um tom do Buzzer e um Led de acordo com os estados dos botões
if(EstadoBotao1 && !EstadoBotao2 &&
!EstadoBotao3) {
Tom = 50;
digitalWrite(ledPin1, HIGH); //LED 1 liga
}
//A variável abaixo irá acionar um tom do Buzzer e um Led de acordo com os estados dos botões
if(EstadoBotao2 && !EstadoBotao1 &&
!EstadoBotao3) {
Tom = 400;
digitalWrite(ledPin3, HIGH); //LED 3 liga
}
//A variável abaixo irá acionar um tom do Buzzer e um Led de acordo com os estados dos botões
if(EstadoBotao3 && !EstadoBotao2 &&
!EstadoBotao1) {
Tom = 1000;
digitalWrite(ledPin2, HIGH); //LED 2 liga
}
while(Tom > 0){
digitalWrite(Buzzer, HIGH); //Buzzer liga
delayMicroseconds(Tom); //Tempo de espera do Tom
digitalWrite(Buzzer, LOW); //Buzzer desliga
delayMicroseconds(Tom); //Tempo de espera do Tom
Tom = 0;
digitalWrite(ledPin1, LOW); //LED 1 desliga
digitalWrite(ledPin2, LOW); //LED 2 desliga
digitalWrite(ledPin3, LOW); //LED 3 desliga
}
}
Neste projeto iremos construir um alarme que irá emitir um sinal sonoro a partir do Buzzer e acender o LED quando algum objeto estiver a menos de 30 cm do raio de alcance do sensor infravermelho
Neste projeto, será necessário que você tenha os seguinte materiais:
Conecte o LED vermelho à porta digital 12 do Arduino Uno e use o resistor de 220 Ω nesta ligação. Conecte o sensor infravermelho à porta analógica 0 (A0), o GND e o 5V. Por fim, faça a ligação do Buzzer ao GND e à porta digital 10.

Lembre-se, não se esqueça de fazer as ligações da Protoboard no GND e no 5V, além de conectá-los a estas saídas do Arduino Uno.
int LED = 13; //Porta D13 é definido como LED
int buzzer = 10; //Porta D10 é definido como Buzzer
int sharp = 0; //Porta A0 é definida como sensor
void setup() {
pinMode(sharp,INPUT); //Porta do sensor é definida como entrada
pinMode(buzzer,OUTPUT); //Porta do Buzzer é definida como saída
pinMode(LED,OUTPUT); //Porta do LED é definida como saída
}
void loop() {
int ir = analogRead(sharp); //Leitura da porta analogica do sensor é feita
if(ir>150) { //Se o valor for menor que 150 o LED e o Buzzer são acionados
digitalWrite(LED, HIGH); //LED liga
digitalWrite(buzzer, HIGH); //Buzzer liga
}else { //Depois
digitalWrite(LED, LOW); //Led desliga
digitalWrite(buzzer, LOW); //Buzzer desliga
}
}
Como dito acima, este alarme irá disparar quando algo estiver no seu raio de alcance de 30 cm, não há segredo para este projeto. Você pode utilizá-lo em diferentes ocasiões, seja um alarme de segurança, um sensor de estacionamento na sua garagem e muito mais, a sua imaginação é o limite.
Partindo do projeto anterior, neste tutorial iremos criar um alarme mais complexo.
Você precisará dos seguintes materiais:
Conforme o diagrama abaixo, as ligações dos LEDs devem ser da seguinte maneira: do primeiro ao último LED deverão ser conectados às portas digitais do 5 ao 11, respectivamente nesta ordem. Lembrando de que em cada uma destas conexões os circuitos devem passar por um resistor de 220 Ω, além de conectar o outro terminal dos LEDs ao GND.

O Buzzer deve ser conectado ao GND e depois à porta digital 2 do Arduino Uno. Em seguida, o Sensor de Temperatura NTC deve ser conectado à porta analógica 1 (A1) e o Sensor de Luminosidade à porta analógica 0 (A0). Faltando ainda o resistor de 1KΩ, a ser ligado a cada sensor, como mostra o diagrama acima.
Não se esqueça de fazer as devidas ligações da Protoboard no GND e no 5V, além de conectá-las às saídas do Arduino Uno.
const int LDR = 0; //Porta A0 é definida como porta do LDR
const int NTC = 1; //Porta A1 é definida como porta do NTC
const int Buzzer = 2; //Porta D2 é definida como Buzzer
const int led1 = 5; //Porta D5 é definida como LED1
const int led2 = 6; //Porta D6 é definida como LED2
const int led3 = 7; //Porta D7 é definida como LED3
const int led4 = 8; //Porta D8 é definida como LED4
const int led5 = 9; //Porta D9 é definida como LED5
const int led6 = 10; //Porta D10 é definida como LED6
const int ledAB = 11; //Porta D11 é definida como LEDAB
int ValorLDR = 0; //O valor inicial so LDR é = 0
int ValorNTC = 0; //O valor inicial so NTC é = 0
void setup(){
pinMode(Buzzer, OUTPUT); //A porta Buzzer é definida como saída
pinMode(led1, OUTPUT); //A porta LED1 é definida como saída
pinMode(led2, OUTPUT); //A porta LED2 é definida como saída
pinMode(led3, OUTPUT); //A porta LED3 é definida como saída
pinMode(led4, OUTPUT); //A porta LED4 é definida como saída
pinMode(led5, OUTPUT); //A porta LED5 é definida como saída
pinMode(led6, OUTPUT); //A porta LED6 é definida como saída
pinMode(ledAB, OUTPUT); //A porta LEDAB é definida como saída
Serial.begin(9600);
}
void loop(){
ValorLDR = analogRead(LDR); //É feito a leitura do LDR
ValorNTC = analogRead(NTC); //É feito a leitura do NTC
Serial.print("Valor da Temperatura = "); //Mostra o valor da temperatura
Serial.println(ValorNTC); //Escreve o valor do NTC
if (ValorNTC > 10) //Se o valor for menor que 10
digitalWrite(led1, HIGH); //LED1 liga
else //Depois
digitalWrite(led1, LOW); //LED1 desliga
if (ValorNTC > 20) //Se o valor for menor que 20
digitalWrite(led2, HIGH); //LED2 liga
else //Depois
digitalWrite(led2, LOW); //LED2 desliga
if (ValorNTC > 30){ //Se o valor for menor que 30
digitalWrite(led3, HIGH); //LED3 liga
digitalWrite(Buzzer, HIGH); //Buzzer liga
}
else{ //Depois
digitalWrite(led3, LOW); //LED3 desliga
digitalWrite(Buzzer, LOW); //Buzzer desliga
}
if (ValorLDR > 600) //Se o valor do LDR for menor que 600
digitalWrite(led6, HIGH); //LED6 liga
else //Depois
digitalWrite(led6, LOW); //LED6 desliga
if (ValorLDR > 500) //Se o valor do LDR for menor que 500
digitalWrite(led5, HIGH); //LED5 liga
else //Depois
digitalWrite(led5, LOW); //LED5 desliga
if (ValorLDR > 450){ //Se o valor do LDR for menor que 450
digitalWrite(led4, HIGH); //LED4 liga
digitalWrite(ledAB, LOW); //LEDAB desliga
}
else{ //depois
digitalWrite(led4, LOW); //LED4 desliga
digitalWrite(ledAB, HIGH); //LEDAB liga
}
}
Os 3 LEDs de cores diferentes irão indicar qual é a temperatura e os outros 3 indicarão a luminosidade do ambiente. O funcionamento do projeto funcionará da seguinte maneira.
Neste último projeto, iremos utilizar um servo motor para simular um portão eletrônico, como aqueles que vemos em shoppings.
Para isso será necessário que você tenha:
Primeiro, você deve conectar o Arduino Nano à Protoboard. Em seguida, o Sensor Inframervelho, no qual iremos fazer as devidas conexões no GND e no 5V. Por fim, conectá-lo à porta analógica 0 (A0) do Arduino Nano.

O Servo Motor, você deve conectar ao GND e ao 5 V, como mostra o diagrama acima, e, no final, conectar o seu terceiro fio à porta digital 9 do Arduino Nano.
Não se esqueça de conectar o GND e o 5V do Arduino Nano a Protoboard.
#include <Servo.h> //Inclui a biblioteca do servo.h
const int sensor = 0; //Define a porta A0 como sensor
Servo myservo; //Declara a variável do servo como myservo
void setup() {
myservo.attach(9); //Myservo é definido como porta digital 9
pinMode(sensor, INPUT); //Define a porta do sensor como entrada
Serial.begin(9600);
}
void loop(){
int ir = analogRead(sensor); //Faz a leitura da porta analógica do sensor
Serial.print(ir); //Escreve ir
Serial.print(" ir"); //Define como ir
Serial.println();
if(ir > 450){ //Se o valor da leitura for menor que 450
myservo.write(90); //O servo se move 90 graus
delay (6000); //Espera de 6 segundos
myservo.write(-90); //O servo volta 90 graus
}
}
Como dito acima, usaremos o Servo Motor para fazer a elevação de uma barra, simulando o funcionamento de um portão eletrônico. Também usaremos um Sensor Infravermelho para acionar o servo motor, como mostrado no diagrama esquemático.
Este projeto irá funcionar da seguinte maneira:
Acabados de desenvolver 8 projetos com simples aplicações e inúmeras possibilidades de uso e melhorias. Com estes 8 tutoriais, tenho certeza que você será capaz de criar novos projetos e até mesmo incrementá-los. O Arduino é um equipamento de prototipagem de fácil acesso. Com ele, temos inúmeras possibilidades e testes a serem feitos no mundo Maker. Esperamos que você tenha entendido e conseguido montar os seus projetos, qualquer dúvida mande nos comentários aqui em baixo. Gostou destes projetos e também construiu o seu? Avalie o nosso post. Fez adaptações e conseguiu resultados melhores ainda? Tire uma foto e nos marque no Instagram @Eletrogate. E, lembre-se, se ainda não tem seu Kit Arduino ou os componentes necessários para o seu projeto, entre em nossa loja e explore este mundo Maker.
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!