Arduino - Programa 06: Efeito Sequencial Variável com LED
Eletrônica

Arduino - Programa 06: Efeito Sequencial Variável com LED


Olá pessoal, vamos dar continuidade aos tutoriais de arduino, desta vez trago o código do efeito sequencial com LED, porém há uma característica muito interessante nesse código.
Este código é o mesmo do programa anterior, só que agora podemos controlar o tempo em que os LEDs serão acesos. Isso é feito com um simples potenciômetro, e dessa forma iremos aprender como fazer a leitura de uma entrada analógica.
Isso não só nos permite montar este efeito interessante, mas como também nos ajudará a criar outros códigos mais elaborados. Então, chega de blá blá e vamos ao código.

// 06 Programa - Efeito Sequencial
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // laço para declarar os pinos
int ledDelay;
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
int potPin = 2; // pino do potenciometro
void setup(){
for (int x=0; x<10; x++){
pinMode(ledPin[x], OUTPUT); }
changeTime = millis();
}
void loop(){
ledDelay = analogRead(potPin);
if((millis() - changeTime) > ledDelay){
changeLED();
changeTime = millis();
}
}
void changeLED(){
for (int x=0; x<10; x++){  // apaga todos os leds
digitalWrite(ledPin[x], LOW);
}
digitalWrite(ledPin[currentLED], HIGH);
currentLED += direction;   // incrementa de acordo com o valor de direction
// altera a direção se tivermos atingido o fim
if(currentLED == 9) {direction = -1;}
if(currentLED == 0) {direction = 1;}
}




Os códigos agora também estão disponível para download, clique aqui e escolha o programa que você queira baixar.

Como podemos ver o código é praticamente o mesmo do tutorial anterior, por isso vou focar em outras partes que são novas e não as conhecemos ainda. Para quem não leu o tutorial anterior clique aqui !

Primeiramente declaramos o potenciômetro no código, uma observação que vocês podem ver, é que não é necessário configurar uma porta analógica como saída ou entrada no void setup, pois as portas analógicas são somente entradas. E para ler o potenciômetro utilizamos o comando analogRead() que faz a leitura de uma porta analógica, mas como é feito a leitura ? Simples, o arduino possui em sua placa um conversor Analógico/Digital (ou simplesmente A/D) de 10 bits, este conversor é responsável por converter um sinal analógico variável ao longo do tempo, em um sinal digital, o que significa que criamos o mesmo sinal, só que agora divido em níveis digitais, que representarão a quantidade analógica, como na imagem abaixo.

Figura 1 - Sinal analógico X sinal digital

O número de bits vai depender da necessidade de representar o sinal lido, ou seja, se pequenas variações no sinal analógico for importante ser detectado, vai ser preciso utilizar um conversor de maior capacidade, ou melhor, de mais bits. O uso do A/D do arduino proporciona fazer a leitura de um sinal de 0 a 5 V, e como a capacidade de um A/D de 10 bits é de 1024, e vai de 0 a 1023, logo temos uma resolução de 4,9 mV de leitura. Esse valor é convertido em tempo para o arduino, o que proporciona um tempo máximo de 1023 ms de delay (um pouco mais de 1 segundo). Assim temos controle do tempo em que o LED permanece aceso. Esse valor é armazenado em ledDelay. A partir de agora o código se tornou o mesmo discutido anteriormente.

O tópico discutido acima pode parecer um pouco complexo para leigos em eletrônica digital porém as dificuldades podem ser superadas, basta um pouco de pesquisa e leitura a respeito do assunto. Sem sobra de dúvidas que a persistência e dedicação são chaves para o sucesso.
Os componentes utilizados na montagem estão listados a seguir.
  1. Placa arduino;
  2. Cabo A/B para arduino;
  3. 10 LED's de 5mm (qualquer cor);
  4. 10 resistores de 300 Ohm;
  5. Fios e jumpers;
  6. Protoboard;
  7. Potenciômetro de 5K Ohm linear (o livro recomenda um de 4,7K Ohm).
Abaixo apresento o esquema de como deve ser conectado os componentes acima.
Figura 2 - Esquema de conexão do hardware
Prosseguindo, a seguir trago algumas imagens da minha montagem.
Figura 3 - Minha montagem
Figura 4 - Minha montagem
Não devemos nos esquecer que os programas apresentados aqui no blog, servem como base para elaborarmos programas mais complexos, ou seja, devemos extrair ao máximo do que estamos aprendendo. 

Feito as montagens, um vídeo demonstrando o funcionamento.



Este tutorial termina aqui, espero que tenham gostado. Qualquer dúvida deixe seu comentário. Até o próximo tutorial.



loading...

- Multi Sequencial De Leds Com Arduino
Então eu resolvi brincar com Arduino (versão Uno R3) de novo. A outra vez foi só pra conhecer o ambiente. Desta vez queria descobrir um pouco mais sobre a plataforma e ver uns recursos mais avançados. A ideia aqui foi fazer o manjado circuito de sequencial...

- Arduino - Programa 08: Led Pulsante
Neste tutorial será apresentado um efeito pulsante com LED. Para isso faremos uso de uma saída PWM (Pulse Width Modulation).  Figura 1 - LED PulsanteEste programa traz uma aplicação com iluminação, ou seja, se antes o LED era aceso e apagado,...

- Arduino - Programa 04: Semáforo Interativo Com Led
Continuando os tutoriais de arduino, dessa vez trago o código aprimorado do semáforo anterior. A peculiaridade deste código está no fato do usuário poder interagir com o arduino. Mas, o que estamos a aprender de verdade, é como fazer a leitura de...

- Arduino - Programa 03: Semáforo Com Led
Olá pessoal, continuando os tutoriais, desta vez trago o código do semáforo. Praticamente todo mundo já se deparou com um semáforo de trânsito na vida, e hoje ele nos auxiliará a entender mais alguns comandos da linguagem. Este código é mais...

- Arduino - Programa 02: Sinal De S.o.s
Bom pessoal dando continuidade aos tutoriais de arduino trago dessa vez um programa de sinal de código morse. Para quem não sabe o código morse é um sistema de representação de letras, números e sinais de pontuação através de um sinal codificado...



Eletrônica








.