Arduino – Piscando LEDs em sequência
Neste artigo vamos continuar a explorar o Arduino criando um novo projeto e utilizando componentes eletrônicos que não usamos ainda.
Nosso sketch de hoje é um projeto bem simples, no qual teremos quatro LEDs que acenderão e apagarão de forma sequencial. Neste projeto vamos precisar de alguns componentes eletrônicos, conforme mostra a listagem a seguir:
- Uma placa de testes (breadboard) onde os componentes serão conectados.
- Quatro LEDs, que podem ser de mesma cor ou de cores variadas (vermelho, verde, amarelo ou laranja) – a seu gosto.
- Quatro resistores de 150Ω (usarei resistores de 1KΩ, pois são os que eu tinha disponíveis na hora de executar o projeto; os LEDs brilharão um pouco menos mas ainda assim acenderão).
- Fios diversos para conexão (jumpers)
- Arduíno UNO
O diagrama do circuito que iremos montar pode ser visto na figura a seguir, criada com o software livre Fritzing:
Esquema de ligação dos componentes
Você pode ver pelo diagrama que cada LED é conectado a um dos pinos digitais do Arduino, os quais serão configurados como saída via código, e há um resistor limitador de corrente conectado entre cada LED e seu respectivo pino. Esse resistor visa a proteger os LEDs contra excesso de corrente que pode danificá-los (e eventualmente ao Arduíno também). Veja no quadro abaixo como calcular o valor da resistência para esses resistores:
Vamos calcular os valores dos resistores com a fórmula: R = (Vop – Vled) / I Onde Vop é a tensão de operação do circuito, que no caso é de 5V; Vled é a tensão direta no LED, a qual pode variar dependendo da cor; usaremos o valor de 2,0 V, que é a tensão para LEDs verdes geralmente (outras cores possuem tensões menores, à exceção dos LEDs azuis); e I é a corrente máxima que um LED suporta, em Ampères. No caso, é de 20 mA, que equivale a 0,02A.R é o valor da resistência a calcular.Então, temos o seguinte cálculo:R = (5 – 2) / 0,02R = 150 Ω |
IMPORTANTE: AO CONECTAR OS COMPONENTES ELETRÔNICOS, CERTIFIQUE-SE DE QUE O ARDUINO NÃO ESTEJA ENERGIZADO PARA EVITAR QUE A PLACA SEJA DANIFICADA ACIDENTALMENTE. |
Veja uma ilustração de nosso circuito montado na breadboard:
Após montado na matriz de contatos, ele ficará conforme mostra a foto abaixo:
Detalhe da mini breadboard com os quatro LEDs:
Vamos ao código-fonte do programa usado para fazer os LEDs piscarem em sequência. Digite-o no Arduino IDE:
int leds[] = {8, 9, 10, 11}; int contador = 0; int timer = 150; void setup() { for (contador = 0; contador < 4; contador++) { pinMode(leds[contador], OUTPUT); } } void loop() { for (contador = 0; contador < 4; contador++) { digitalWrite(leds[contador], HIGH); delay(timer); digitalWrite(leds[contador], LOW); delay(timer); } }
No código apresentado começamos por declarar um array de LEDs. Poderíamos ter declarado uma variável para cada LED, mas é mais fácil criar um array, onde cada posição irá representar um dos pinos no qual cada LED será conectado. Ao criarmos o array já atribuímos um conjunto de dados com os números dos pinos digitais que serão usados. O array terá quatro posições (para 4 LEDs), numeradas de 0 a 3.
Criamos também uma variável contadora chamada contador que será usada na estrutura de controle que define qual LED acenderá ou apagará em sequência.
Usamos também uma variável chamada timer, a qual define o tempo de intervalo no qual cada LED acenderá e apagará, em milissegundos. A função delay(timer) realiza essa tarefa. Para que um LED acenda usaremos a função digitalWrite(), sendo chamada na forma digitalWrite(leds[contador], HIGH) para que o LED acenda, e para que o LED apague, a função executada será digitalWrite(leds[contador], LOW).
O laço for utilizado faz a contagem entre 0 e 3 com o uso da variável contador, para determinar qual LED será ativado e desativado. A posição 0 equivale ao primeiro valor armazenado no array (pino 8), a posição 1 equivale ao pino 9, e assim por diante.
Após digitar o código no IDE, carregue-o no Arduino, aguarde alguns segundos e verifique se os LEDs piscam sequencialmente. Se piscarem, o trabalho estará concluído. Caso contrário, verifique as conexões na breadboard e também o código utilizado.
É isso aí, no próximo artigo iremos construir mais um projeto bem interessante!