Você está na página 1de 9

MINISTÉRIO DA EDUCAÇÃO

SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA


INSTITUTO FEDERAL DE EDUCAÇÃO
Departamento de Áreas Acadêmicas IV
Coordenação de Eletrotécnica

Arduino – Sequencial de LEDs com


Potenciômetro

Goiânia,Junho
2023
MINISTÉRIO DA EDUCAÇÃO
SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA
INSTITUTO FEDERAL DE EDUCAÇÃO
Departamento de Áreas Acadêmicas IV
Coordenação de Eletrotécnica

Arduino – Sequencial de LEDs com


Potenciômetro

Professora: Lorrane Pereira Ribeiro


Aluno: Adriano Oliveira Santos
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 seguintes itens:
– Arduino
– Cabo Jumper Macho-macho
– LEDs
– Resistor de 150Ω
– Potenciômetro Linear de 10Ω
– Protoboard
1. byte pinosLed[]={7,8,9,10,11}; //CRIA UM ARRAY PARA ALOCAR OS PINOS
2. DOS LEDS
3. int ledDelay; //VARIAVEL DE INTERVALO DA ALTERAÇÃO ENTRE LEDs
4. int dir = 1; //VARIÁVEL QUE CONTROLA A DIREÇÃO DO MOVIMENTO
5. int ledAtual = 0; //VARIÁVEL QUE ARMAZENA A POSIÇÃO DO LED QUE
6. VAI RECEBER O COMANDO (LIGA / DESLIGA)
7.
8. unsigned long changeTime; //VARIÁVEL QUE ARMAZENA O INTERVALO
9. DE TRANSIÇÃO ENTRE OS LEDS
10. int pinoPot = A2; //DEFINE O PINO ANALÓGICO EM QUE O
11. POTENCIÔMETRO ESTÁ CONECTADO
12.
12. void setup(){
13. for (int x=0; x<5; x++) // PARA X=0, ENQUANTO X FOR MENOR QUE 5, X É
14. INCREMENTADO
15. {
16. pinMode(pinosLed[x],OUTPUT);//DECLARA O PINO COMO SAÍDA
17. }
18. changeTime = millis();//VARIÁVEL RECEBE O VALOR ATUAL DE 'millis'
19. }
20.
21. void loop(){
22.
23. ledDelay = analogRead(pinoPot); //VARIÁVEL RECEBE O VALOR GERADO
24. PELO POTENCIÔMETRO E ESTE VALOR VAI DEFINIR A VELOCIDADE
25. DE ILUMINAÇÃO DO SEQUENCIAL
26. if ((millis() - changeTime) > ledDelay){// SE 'millis' MENOS 'changeTime' FOR
27. MAIOR QUE 'ledDelay', FAZ
28. changeLED(); //EXECUTA A FUNÇÃO 'changeLED'
29. changeTime = millis(); //VARIÁVEL RECEBE O VALOR ATUAL DE 'millis'
30. }
31. }
32.
33. void changeLED(){
34.
35. for (int x=0; x<5; x++){ // PARA X=0, ENQUANTO X FOR MENOR QUE 5, X
36. É INCREMENTADO
37. digitalWrite(pinosLed[x], LOW); //APAGA TODOS OS LEDs EM SEQUÊNCIA
38. }
39. digitalWrite(pinosLed[ledAtual], HIGH); // ACENDE O LED
40. CORRESPONDENTE AO PINO QUE ESTÁ EM EVIDÊNCIA
41. ledAtual += dir; //INCREMENTA / DECREMENTA A VARIÁVEL
42. if (ledAtual == 5) {dir = -1;} //SE 'ledAtual' FOR IGUAL A 5, 'dir' PASSA A
43. VALER -1
44.
45. if (ledAtual == 0) {dir = 1;} //SE 'ledAtual' FOR IGUAL A 0, 'dir' PASSA A
46. VALER 1
47. }

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.

Você também pode gostar