- Descrição: O Sensor de Pressão e Temperatura BMP280 que também é…
Arduino – Sequencial de LEDs com Potenciômetro
Nesta prática você vai aprender a montar um sequencial de LEDs com Arduino e fazer o controle da velocidade de transição dos LEDs através de um potenciômetro.
Sequencial de LEDs é um dos projetos mais executados por quem está começando com Arduino. É um tipo de projeto simples, mas bem interessante e pode ser feito de diversas formas.
Este nosso sequencial será incrementado com um potenciômetro, que será responsável por variar a velocidade da iluminação dos LEDs.
Para esta prática vamos precisar dos seguinte itens:
– Arduino
– Cabo Jumper Macho-macho
– LEDs
– Resistor de 150Ω
– Potenciômetro Linear de 10Ω
– Protoboard
Monte as ligações conforme o esquema abaixo:
A seguir, você deverá carregar o código na IDE do Arduino. Se você ainda não instalou a IDE do Arduino, acesse o link abaixo e em seguida retorne para continuar:
Arduino – Instalação e Configuração da IDE no Windows
Conecte o Arduino ao computador, abra a IDE, confira a placa e a porta selecionada e carregue o código na placa:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
byte pinosLed[]={7,8,9,10,11}; //CRIA UM ARRAY PARA ALOCAR OS PINOS DOS LEDS int ledDelay; //VARIAVEL DE INTERVALO DA ALTERAÇÃO ENTRE LEDs int dir = 1; //VARIÁVEL QUE CONTROLA A DIREÇÃO DO MOVIMENTO int ledAtual = 0; //VARIÁVEL QUE ARMAZENA A POSIÇÃO DO LED QUE VAI RECEBER O COMANDO (LIGA / DESLIGA) unsigned long changeTime; //VARIÁVEL QUE ARMAZENA O INTERVALO DE TRANSIÇÃO ENTRE OS LEDS int pinoPot = A2; //DEFINE O PINO ANALÓGICO EM QUE O POTENCIÔMETRO ESTÁ CONECTADO void setup(){ for (int x=0; x<5; x++) // PARA X=0, ENQUANTO X FOR MENOR QUE 5, X É INCREMENTADO { pinMode(pinosLed[x],OUTPUT);//DECLARA O PINO COMO SAÍDA } changeTime = millis();//VARIÁVEL RECEBE O VALOR ATUAL DE 'millis' } void loop(){ ledDelay = analogRead(pinoPot); //VARIÁVEL RECEBE O VALOR GERADO PELO POTENCIÔMETRO E ESTE VALOR VAI DEFINIR A VELOCIDADE DE ILUMINAÇÃO DO SEQUENCIAL if ((millis() - changeTime) > ledDelay){// SE 'millis' MENOS 'changeTime' FOR MAIOR QUE 'ledDelay', FAZ changeLED(); //EXECUTA A FUNÇÃO 'changeLED' changeTime = millis(); //VARIÁVEL RECEBE O VALOR ATUAL DE 'millis' } } void changeLED(){ for (int x=0; x<5; x++){ // PARA X=0, ENQUANTO X FOR MENOR QUE 5, X É INCREMENTADO digitalWrite(pinosLed[x], LOW); //APAGA TODOS OS LEDs EM SEQUÊNCIA } digitalWrite(pinosLed[ledAtual], HIGH); // ACENDE O LED CORRESPONDENTE AO PINO QUE ESTÁ EM EVIDÊNCIA ledAtual += dir; //INCREMENTA / DECREMENTA A VARIÁVEL if (ledAtual == 5) {dir = -1;} //SE 'ledAtual' FOR IGUAL A 5, 'dir' PASSA A VALER -1 if (ledAtual == 0) {dir = 1;} //SE 'ledAtual' FOR IGUAL A 0, 'dir' PASSA A VALER 1 } |
Agora gire o potenciômetro para o sentido horário ou anti-horário e veja que a velocidade de transição do sequencial vai aumentar ou diminuir proporcionalmente ao giro.
O potenciômetro pode variar a leitura de 0 a 1023 bits na porta analógica. No código temos um trecho que faz a leitura do valor fornecido pelo potenciômetro e com base neste valor definimos o intervalo de transição do sequencial.
Você pode aumentar o número de LEDs no sequencial, fazer os ajustes necessários no código e deixar seu projeto bem mais interessante.
Gostou deste tutorial? Então deixa seu comentário, dúvida ou sugestão aí embaixo!
Loja online: https://www.masterwalkershop.com.br
Fan page no Facebook: https://www.facebook.com/masterwalkershop
Nos ajude a espalhar conhecimento clicando no botão de compartilhar (f Like) que está mais abaixo.
Obrigada e até a próxima!
Seu feedback é muito importante! Que tal dar uma nota para esta postagem?! Faça sua avaliação aqui embaixo.
Postagem anterior: Ethernet Shield W5100 – Só o LED Vermelho (PWR) acendendo
Próxima postagem: Arduino – Medindo o nível de gás com o Sensor MQ-2 e Buzzer
Obrigado por compartilhar esse projeto, como estou aprendendo foi muito útil, funcionou 100%.
Olá Wagner.
Agradeço pelo comentário!
Show de bola!
Vlw!!!
BOA NOITE, PROJETO MUITO BEM EXPLICADO , MAS E GOSTARIA DE UMA SEQUENCIA SÓ EM UM SENTIDO POR UM TEMPO DEPOIS NO OUTRO SENTIDO ONDE OS TEMPOS EU POSSA DETERMINAR .OBRIGADO POIS NÃO CONSIGO APRENDER MILLIS.