
Vídeo
Esquema do circuito

Código-fonte
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Sequencial de LEDs
4// ─────────────────────────────────────────
5// Os 6 LEDs acendem um após o outro por 150 ms cada, e a luz percorre a
6// fila. Mostra o controle de vários pinos com um array e um laço for.
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 // Acende cada LED por vez durante 150 ms
23 for(int i = 0; i < 6; i++) {
24 digitalWrite(ledPins[i], HIGH);
25 delay(150);
26 digitalWrite(ledPins[i], LOW);
27 }
28}
29
Perguntas frequentes
Por que é melhor usar um array?
Ao guardar os números dos pinos em um array, você pode percorrer todos os LEDs com um laço for em uma única linha de código. Para mudar o número de LEDs neste código, atualize tanto o array ledPins quanto os limites i < 6 dos laços em setup() e loop(); não é preciso escrever uma linha separada para cada LED.
Se 6 LEDs acenderem ao mesmo tempo, o Arduino será danificado?
Considerando cerca de 10 mA por LED, seis LEDs consomem aproximadamente 60 mA. O limite superior recomendado por pino é 20 mA; é preciso respeitar tanto os limites de corrente de cada pino quanto os dos grupos de pinos. O valor máximo absoluto de 200 mA especificado para os pinos VCC/GND do ATmega328P não é uma meta de operação normal nem uma corrente disponível exclusivamente para I/O.
Como inverto a direção do movimento?
Configure o laço `for` em ordem inversa: `for (int i = 5; i >= 0; i--)`. Assim, a luz se move na direção oposta. Se você colocar os dois laços um após o outro, terá o efeito Knight Rider.
Um dos LEDs não acende. Qual pode ser o motivo?
O LED pode estar invertido, com um terminal mal encaixado na protoboard ou com o resistor em outra linha. Você pode descobrir se o LED está com defeito ou se há um problema na conexão colocando-o no lugar de um LED que funciona.
