Olá, vamos ao quinto tutorial de arduino, desta vez trago o código de um efeito sequencial com LED, a ideia em si é simples, acender sequencialmente dez LED's, mas no entanto o código apresenta uma maneira simples e eficiente de acender os dez LED's sem muito quebra-cabeça.
Então chega de blá blá, e vamos ao código.
Irei analisar de forma bem rápida este código, pois já temos capacidade de entender o que se passa nas estruturas que já foram mencionadas anteriormente. Observe então a maneira como as saídas digitais estão sendo declaradas, definimos o tamanho delas como byte, fazendo com que menos memória seja ocupada. Em seguida temos colchetes vazios, em igualdade a isso uma chave com as saídas que utilizaremos. Esta é uma maneira rápida de declararmos uma grande quantidade de variáveis com mesma característica. Em seguida utilizamos o comando direction, ele assume somente dois valores (+1 ou -1), esses valores indicam a direção em que o laço percorrerá, sentido positivo ou negativo (imagine a reta dos números reais). Observe que direction foi iniciado em +1, isso fará com que o código inicie do menor para o maior, ou seja, as saídas assumem um valor de 0 a 9, como temos dez LED's, logo o código se inicia em 0 e vai até 9, retornando ao 0 pelo if que está no final, onde se o LED 9 for o último a ser aceso, direction recebe -1, caso contrário direction recebe +1, concluindo assim o loop.
O comando direction é um comando um pouco vago de teoria no livro, mas acho que podemos pensar nele como um comando para que, dado um conjunto de saídas, podemos acioná-las sequencialmente, para uma dada direção que desejamos. O código tem uma função chamada changeLED(), está função, é responsável por apagar o LED após ele ser acionado.
Destaquei alguns pontos interessantes neste código, a descrição foi bem rápida, porém não dá pra ficar escrevendo um mundo de teoria.Então chega de blá blá, e vamos ao código.
// 05 Programa - Efeito Sequencial
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13}; // laço para declarar os pinos
int ledDelay(65); // intervalo entre as alterações
int direction = 1;
int currentLED = 0;
unsigned long changeTime;
void setup(){
// define os pinos com saída
for(int x=0; x<10; x++){
pinMode(ledPin[x], OUTPUT);}
changeTime = millis();
}
void loop(){
if((millis() - changeTime)>ledDelay){ // verifica se ja passou ledDelay ms desda a ultima alteração
changeLED();
changeTime = millis();
}
}
void changeLED(){
for(int x=0; x<10; x++){ // apaga todos os led
digitalWrite(ledPin[x], LOW);
digitalWrite(ledPin[currentLED], HIGH); //acende o led atual
currentLED += direction; // incrementa de acordo com o valor direction
// altera a direção se tivermos atingido o fim
if(currentLED == 9) {direction = -1;}
if(currentLED == 0) {direction = 1;}
}
Irei analisar de forma bem rápida este código, pois já temos capacidade de entender o que se passa nas estruturas que já foram mencionadas anteriormente. Observe então a maneira como as saídas digitais estão sendo declaradas, definimos o tamanho delas como byte, fazendo com que menos memória seja ocupada. Em seguida temos colchetes vazios, em igualdade a isso uma chave com as saídas que utilizaremos. Esta é uma maneira rápida de declararmos uma grande quantidade de variáveis com mesma característica. Em seguida utilizamos o comando direction, ele assume somente dois valores (+1 ou -1), esses valores indicam a direção em que o laço percorrerá, sentido positivo ou negativo (imagine a reta dos números reais). Observe que direction foi iniciado em +1, isso fará com que o código inicie do menor para o maior, ou seja, as saídas assumem um valor de 0 a 9, como temos dez LED's, logo o código se inicia em 0 e vai até 9, retornando ao 0 pelo if que está no final, onde se o LED 9 for o último a ser aceso, direction recebe -1, caso contrário direction recebe +1, concluindo assim o loop.
O comando direction é um comando um pouco vago de teoria no livro, mas acho que podemos pensar nele como um comando para que, dado um conjunto de saídas, podemos acioná-las sequencialmente, para uma dada direção que desejamos. O código tem uma função chamada changeLED(), está função, é responsável por apagar o LED após ele ser acionado.
Agora vamos ao melhor, vamos ver como o código funciona na prática, para isso precisaremos dos seguintes materiais:
- 1 arduino;
- 10 resistores de 300 Ohm;
- 10 LED's de 5mm (qualquer cor);
- Fios ou jumpers;
- 1 protoboard;
Figura 1 - Esquema de conexão dos componentes do hardware. |
Figura 2 - Minha montagem. |
Figura 3 - Minha montagem. |
Continuando, um vídeo demonstrando o funcionamento do programa.
Espero que tenham gostado deste tutorial, os próximos provavelmente vão demorar mais um tempinho devido ao termino das férias escolares, mas não pensem que eu esqueci do blog. Qualquer dúvida, sugestão, opinião, deixe o comentário. Até o próximo !
EmoticonEmoticon