Projetos
8 Novos Projetos com o Arduino
Eletrogate 7 de abril de 2022
Atualizado em: 19 nov 2024
Introdução
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.
Projeto 1 - Display LCD 16x2
Neste tutorial, iremos utilizar o Display LCD
16×2 para imprimir uma mensagem na tela
do LCD, partindo da função [Link]()
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.
Materiais necessários para o projeto
com Display 16×2
Para isso, será necessário que você tenha:
Um Arduino Uno + Cabo de dados
Uma Protoboard 830 Pontos
Um Display LCD 16×2
Um Potenciômetro de 10 kΩ
Jumpers Machos 20 cm (20x)
Diagrama esquemático
TxM
UNO
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.
Programação
Como dito antes, neste post, iremos utilizar a
função [Link]() presente na biblioteca
LiquidCrystal.h. Como está na programação
abaixo, além de incluirmos a biblioteca,
definimos as portas do LCD.
1. #include <LiquidCrystal.h> //Inclui a bib
2. LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //
3. void setup() {
4. [Link](16, 2); //Inicia a escrita no
5. [Link]("BLOG ELETROGATE");//Exibe a
6. }
7. void loop() {
8. [Link](0, 1); //Define o cursor
9. [Link](millis()/1000); //Faz a conta
10. [Link]("s"); //Escreve a letra s par
11. }
Acima podemos ver que na função descrita
logo aparece a mensagem que desejamos
escrever, neste caso “BLOG ELETROGATE” é a
nossa mensagem.
Demonstração
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.
00:00 00:10
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.
Projeto 2 - Pisca Pisca Ajustável
Este projeto consiste em ajustar a frequência
de acionamento de um LED por meio de um
potenciômetro.
Materiais necessários para o projeto
Pisca Pisca Ajustável
Um Arduino Nano com cabo;
Uma Protoboard 830 Pontos;
Um Potenciômetro de 10 kΩ;
Jumpers Machos 20 cm (20x);
Um Resistor de 220 Ω;
Um LED difuso vermelho.
Diagrama esquemático
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:
Programação
1. int potPin = 0; //Declara porta A0 do pot
2. int ledPin = 11; //Declara a porta D11 pa
3. int val = 0; //Declara o valor inicial co
4. void setup(){
5. pinMode(ledPin, OUTPUT); //Declara port
6. }
7. void loop(){
8. val = analogRead(potPin); //Le o valor
9. digitalWrite(ledPin, HIGH); //Liga o Le
10. delay(val); //Lê o valor do potênciomet
11. digitalWrite(ledPin, LOW); //Desliga o
12. delay(val); //Lê o valor do potênciomet
13. }
Demonstração
No vídeo abaixo, podemos perceber que,
conforme oscilamos o potenciômetro, a
frequência do LED aumenta e diminui.
00:00 00:15
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.
Projeto 3 - Semáforo de Carros e
Pedestres
Este tutorial consiste em colocar dois
semáforos: um para os carros e outro para os
pedestres do trânsito.
Materiais necessários para o projeto
Semáforo de Carros e Pedestres
Um Arduino Uno + Cabo de dados;
Uma Protoboard 830 Pontos;
Jumpers Macho 20 cm (40x);
Um push button;
6 Resistores de 220 Ω;
2 LED difuso vermelho;
2 LED difuso verde;
1 LED difuso amarelo.
Diagrama esquemático
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.
Programação
1. int scVerde = 10; //Define a pota D10 do
2. const int scAmarelo = 11; //Define a pota
3. const int scVermelho = 12; //Define a pot
4. const int spVerde = 8; //Define a pota D8
5. const int spVermelho = 9; //Define a pota
6. int ledState = LOW; //Define o estado do
7. long previousMillis = 0; //Começa a conta
8. long interval = 5000; //Tempo de interval
9. int ctrlLuz = 0; //define o valor de muda
10. void setup() {
11. [Link](9600);
12. pinMode(scVerde,OUTPUT); //Define a por
13. pinMode(scAmarelo,OUTPUT); //Define a p
14. pinMode(scVermelho,OUTPUT);//Define a p
15. pinMode(spVerde,OUTPUT); //Define a por
16. pinMode(spVermelho,OUTPUT); //Define a
17. pinMode(2, INPUT); // Botao //Define a
18. }
19. void loop() {
20. unsigned long currentMillis = millis();
21. int sensorValue = digitalRead(2); //O v
22. if(currentMillis - previousMillis > //A
23. interval) {
24. previousMillis = currentMillis; //Os
25. switch(ctrlLuz) { //O botão é precion
26. case 0 : // O valor faz com que ele
27. digitalWrite(scVermelho,LOW); //O
28. digitalWrite(scVerde,HIGH); //O L
29. digitalWrite(spVerde,LOW); //O LE
30. digitalWrite(spVermelho,HIGH); //
31. ctrlLuz++;
32. interval = 15000; //Há um interva
33. break; //Mudança de estados dos LED
34. case 1 : // O caso 1 é acionado (Am
35. digitalWrite(scVerde,LOW); //O LE
36. digitalWrite(scAmarelo,HIGH);//O
37. digitalWrite(spVerde,LOW); //O LE
38. digitalWrite(spVermelho,HIGH);//O
39. ctrlLuz++;
40. interval = 1000; //Há o intervalo
41. break;//Mudança de estados dos LEDS
42. case 2 : // O caso 2 é acionado (Ve
43. digitalWrite(scAmarelo,LOW); //O
44. digitalWrite(scVermelho,HIGH);//O
45. digitalWrite(spVermelho,LOW);//O
46. digitalWrite(spVerde,HIGH);//O LE
47. interval = 7000; //Intervalo de 7
48. ctrlLuz = 0;
49. break;//Mudança de estado
50. }
51. }
52. //Abaixo o valor do botão (Sensor) é li
53. if((sensorValue == 1) && (ctrlLuz == 1)
54. interval = 2000;
55. [Link]("Sensor ");
56. [Link](sensorValue, DEC);
57. }
58. }
Funcionamento
O sinal irá funcionar da seguinte maneira:
Quando o sinal do sc estiver verde ou amarelo, o sinal
vermelho dos pedestres estará aceso;
Já quando o sinal vermelho do sc estiver aceso, o sinal
verde dos pedestre deverá estar aceso;
Caso o botão seja pressionado, a preferência de
passagem pela rua será dos pedestres.
Demonstração
00:00 00:16
Projeto 4 - Termômetro
Neste novo tutorial, iremos simular um
termômetro com o Arduino, utilizando LEDs
e um sensor de temperatura.
Materiais necessários para o projeto
Termômetro
Para este projeto, será necessário:
Um Arduino Uno + Cabo de dados;
Uma Protoboard 830 Pontos;
Jumpers Macho 20 cm (40x);
Um push button 6x6x6 mm;
6 Resistores de 220 Ω;
2 LED difuso vermelho;
2 LED difuso verde;
2 LED difuso amarelo;
Um Buzzer ativo 5 V;
Um Resistor de 1 kΩ;
Um Sensor de Temperatura NTC 5mm 10 k.
Diagrama esquemático
Ligação
Conecte o LED verde à porta digital 8 do Arduino Uno
e faça a mesma conexão com o outro LED verde na
porta digital 9 do Arduino Uno;
Conecte o LED amarelo à porta digital 10 do Arduino
Uno e faça a mesma conexão com o outro LED
amarelo na porta digital 11 do Arduino Uno;
Conecte o LED vermelho à porta digital 12 do Arduino
Uno e faça a mesma conexão com o outro LED
vermelho na porta digital 13 do Arduino Uno;
Conecte o Buzzer à porta digital 6 do Arduino Uno e,
por fim, conecte o Sensor de Temperatura à porta
analógica 0 (A0) do Arduino Uno.
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.
Programação
1. int PinoSensor = 0;//Declara o pino A0 co
2. int Buzzer = 6;//Define o pino D6 como Bu
3. int led1 = 8;//Define o LED 1 como porta
4. int led2 = 9;//Define o LED 2 como porta
5. int led3 = 10;//Define o LED 3 como porta
6. int led4 = 11;//Define o LED 4 como porta
7. int led5 = 12;//Define o LED 5 como porta
8. int led6 = 13;//Define o LED 6 como porta
9. int ValorSensor = 0;//Declara o valor ini
10. void setup() {
11. pinMode(Buzzer, OUTPUT); //Porta do Buz
12. pinMode(led1, OUTPUT); //Porta do LED 1
13. pinMode(led2, OUTPUT); //Porta do LED 2
14. pinMode(led3, OUTPUT); //Porta do LED 3
15. pinMode(led4, OUTPUT); //Porta do LED 4
16. pinMode(led5, OUTPUT); //Porta do LED 5
17. pinMode(led6, OUTPUT); //Porta do LED 6
18. [Link](9600);
19. }
20. void loop(){
21. ValorSensor = analogRead(PinoSensor);//
22. [Link]("Valor do Sensor = "); //D
23. [Link](ValorSensor); //Escreve
24. if (ValorSensor > 30) //A função vai de
25. digitalWrite(led1, HIGH); //LED 1 lig
26. else
27. digitalWrite(led1, LOW); //LED 1 desli
28. if (ValorSensor > 35) //A função vai de
29. digitalWrite(led2, HIGH); //LED 2 liga
30. else
31. digitalWrite(led2, LOW); //LED 2 desli
32. if (ValorSensor > 40) //A função vai de
33. digitalWrite(led3, HIGH); //LED 3 lig
34. else
35. digitalWrite(led3, LOW); //LED 3 desl
36. if (ValorSensor > 45) //A função vai de
37. digitalWrite(led4, HIGH); //LED 4 liga
38. else
39. digitalWrite(led4, LOW); //LED 4 desli
40. if (ValorSensor > 50) //A função vai de
41. digitalWrite(led5, HIGH); //LED 5 liga
42. else
43. digitalWrite(led5, LOW); //LED 5 desl
44. if (ValorSensor > 55 ){ //A função vai
45. digitalWrite(led6, HIGH); //LED 6 lig
46. digitalWrite(Buzzer, HIGH); //Buzzer
47. }
48. else{
49. digitalWrite(led6, LOW); //Led 6 desl
50. digitalWrite(Buzzer, LOW); //Buzzer d
51. }
52. delay(1000); //espera de 1000 milissegu
53. }
Funcionamento
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:
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 simultaneamente ligar
o Buzzer.
Projeto 5 - Piano
Neste novo projeto iremos produzir toques
musicais aos quais LED’s correspondentes
acenderão.
Materiais necessários para o projeto
Piano
Para este projeto, será necessário:
Um Arduino Uno + Cabo de dados;
Uma Protoboard 830 Pontos;
Jumpers Macho 20 cm (40x);
3 push buttons 6x6x6 mm;
6 Resistores de 220 Ω;
LED difuso Vermelho;
LED difuso Verde;
LED difuso Amarelo;
Um Buzzer ativo 5 V;
Diagrama esquemático
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.
Programação
1. const int ledPin1 = 13; //Define a porta
2. const int ledPin2 = 12; //Define a porta
3. const int ledPin3 = 11; //Define a porta
4. const int Botao1 = 2; //Define a porta D2
5. const int Botao2 = 3; //Define a porta D3
6. const int Botao3 = 4; //Define a porta D4
7. const int Buzzer = 10; //Define a porta D
8. int EstadoBotao1 = 0; //Estado inicial do
9. int EstadoBotao2 = 0; //Estado inicial do
10. int EstadoBotao3 = 0; //Estado inicial do
11. int Tom = 0; //Tom inicial é = 0
12. void setup() {
13. pinMode(Buzzer, OUTPUT); //Define a por
14. pinMode(ledPin1, OUTPUT); //Define a po
15. pinMode(Botao1, INPUT); //Define a port
16. pinMode(ledPin2, OUTPUT); //Define a po
17. pinMode(Botao2, INPUT); //Define a port
18. pinMode(ledPin3, OUTPUT); //Define a po
19. pinMode(Botao3, INPUT); //Define a port
20. }
21. void loop(){
22. EstadoBotao1 = digitalRead(Botao1); //É
23. EstadoBotao2 = digitalRead(Botao2); //É
24. EstadoBotao3 = digitalRead(Botao3); //É
25.
26. //A variável abaixo irá acionar um tom
27. if(EstadoBotao1 && !EstadoBotao2 &&
28. !EstadoBotao3) {
29. Tom = 50;
30. digitalWrite(ledPin1, HIGH); //LED 1
31. }
32. //A variável abaixo irá acionar um tom
33. if(EstadoBotao2 && !EstadoBotao1 &&
34. !EstadoBotao3) {
35. Tom = 400;
36. digitalWrite(ledPin3, HIGH); //LED 3
37. }
38. //A variável abaixo irá acionar um tom
39. if(EstadoBotao3 && !EstadoBotao2 &&
40. !EstadoBotao1) {
41. Tom = 1000;
42. digitalWrite(ledPin2, HIGH); //LED 2
43. }
44. while(Tom > 0){
45. digitalWrite(Buzzer, HIGH); //Buzzer
46. delayMicroseconds(Tom); //Tempo de es
47. digitalWrite(Buzzer, LOW); //Buzzer d
48. delayMicroseconds(Tom); //Tempo de es
49. Tom = 0;
50. digitalWrite(ledPin1, LOW); //LED 1 d
51. digitalWrite(ledPin2, LOW); //LED 2 d
52. digitalWrite(ledPin3, LOW); //LED 3 d
53. }
54. }