sábado, 5 de setembro de 2015

06 Programa Arduino: 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.
Compartilhar:
←  Anterior Proxima  → Página inicial

0 comentários:

Postar um comentário

Marcadores

Total de visualizações