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.
Conheça a Metodologia Eletrogate e Lecione um Curso de Robótica nas Escolas da sua Região!