#6Intermediário

Efeito Knight Rider com LEDs

4.8(106)
202 concluído
Efeito Knight Rider com LEDs
O clássico efeito Knight Rider: um ponto de luz percorre seis LEDs de uma ponta à outra e depois volta. O Arduino acende cada LED por um décimo de segundo antes de passar para o próximo, muda de direção em cada ponta e continua indo e voltando sem parar. Um bom começo para luzes decorativas e de sinalização.

Vídeo

Esquema do circuito

Efeito Knight Rider com LEDs - Circuit

Código-fonte

C++ (Arduino IDE)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   Efeito Knight Rider com LEDs
4// ─────────────────────────────────────────
5// Os 6 LEDs acendem um a um para frente e depois para trás (efeito Knight
6// Rider). Mostra a lógica de um laço for nos dois sentidos.
7//
8// Pinos:
9//   D2, D3, D4, D5, D6, D7 -> 6 LEDs (em ordem)
10//   Cada LED com um resistor de 330 ohm
11
12int ledPins[] = {2, 3, 4, 5, 6, 7};   // Pinos dos LEDs na ordem de acendimento
13
14void setup() {
15  // Define todos os pinos dos LEDs como saída
16  for(int i = 0; i < 6; i++) {
17    pinMode(ledPins[i], OUTPUT);
18  }
19}
20
21void loop() {
22  // Para frente: D2 a D7, 100 ms por LED
23  for(int i = 0; i < 6; i++) {
24    digitalWrite(ledPins[i], HIGH);
25    delay(100);
26    digitalWrite(ledPins[i], LOW);
27  }
28
29  // Para trás: D6 a D3. Os LEDs das pontas são pulados para o retorno parecer contínuo
30  for(int i = 4; i > 0; i--) {
31    digitalWrite(ledPins[i], HIGH);
32    delay(100);
33    digitalWrite(ledPins[i], LOW);
34  }
35}
36

Perguntas frequentes

Como é criado o efeito Knight Rider?

Os LEDs acendem em sequência, primeiro da esquerda para a direita e depois da direita para a esquerda. Dois laços "for" são executados um após o outro; como o segundo conta na direção oposta, a luz vai e volta.

Os LEDs das pontas parecem piscar duas vezes. Como corrijo isso?

Se o laço de volta acender novamente o LED da ponta, ele ficará aceso por dois passos. Você pode evitar a repetição nas pontas ajustando o índice inicial do laço de volta em uma posição (por exemplo, de 4 a 1).

Como ajusto a velocidade?

Altere o valor de delay() entre cada passo. Um valor entre 30 e 80 ms produz um efeito fluido. Se quiser ajustar a velocidade durante a execução, você pode adicionar um potenciômetro, como no próximo projeto, "Efeito Knight Rider com velocidade ajustável".

Posso adicionar mais LEDs?

Sim, basta adicionar novos pinos ao array e atualizar os limites dos laços. O Uno tem 12 pinos digitais livres; para usar mais, você pode acionar 8 ou mais LEDs com apenas 3 pinos usando um registrador de deslocamento 74HC595.