#7Intermediário

Sequencial de LEDs com velocidade ajustável

4.6(72)
144 concluído
Sequencial de LEDs com velocidade ajustável
Seis LEDs acendem um após o outro, fazendo a luz parecer correr de uma ponta à outra. Ao girar o botão do potenciômetro, a velocidade muda na hora: para um lado, a luz corre rapidamente; para o outro, cada LED fica aceso por quase um segundo. Você vê com os próprios olhos como um botão pode ajustar a velocidade de algo.

Vídeo

Esquema do circuito

Sequencial de LEDs com velocidade ajustável - Circuit

Código-fonte

Arduino (C++)
1// ─────────────────────────────────────────
2//   BlueGrays · bluegrays.com
3//   LED Chaser with Adjustable Speed
4// ─────────────────────────────────────────
5// A potentiometer sets the speed of the walking LED effect. A0 is read at
6// every step and its 0-1023 value becomes the delay time (ms).
7//
8// Pins:
9//   D2, D3, D4, D5, D6, D7 -> 6 LEDs (in order)
10//   Each LED with a 330 ohm resistor
11//   A0 -> Potentiometer wiper
12//   (outer legs to 5V and GND)
13
14int ledPins[] = {2, 3, 4, 5, 6, 7};   // LED pins in lighting order
15int potValue;                         // Pot value = delay (ms)
16
17void setup() {
18  // Set all LED pins as outputs
19  for(int i = 0; i < 6; i++) {
20    pinMode(ledPins[i], OUTPUT);
21  }
22}
23
24void loop() {
25  for(int i = 0; i < 6; i++) {
26    potValue = analogRead(A0);        // Read the speed (0-1023)
27    digitalWrite(ledPins[i], HIGH);
28    delay(potValue);                  // Wait as many ms as the pot value
29    digitalWrite(ledPins[i], LOW);
30  }
31}
32

Perguntas frequentes

Quais valores `analogRead` retorna?▾

As entradas analógicas do Uno leem de 0–5 V com resolução de 10 bits e retornam um valor entre 0 e 1023. Ao girar o potenciômetro de uma ponta à outra, o valor varia de 0 a 1023.

Como convertemos a leitura do potenciômetro em velocidade?▾

Com a função `map()`, você pode converter a faixa de 0–1023 para o intervalo de atraso que quiser (por exemplo, 20–500 ms): `map(value, 0, 1023, 20, 500)`. Quando esse valor é usado dentro de `delay()`, a velocidade muda na hora.

Como ligar os terminais de um potenciômetro?▾

Os dois terminais externos são ligados a 5 V e GND, e o terminal central (cursor) é ligado a uma entrada analógica (por exemplo, A0). Se você inverter os terminais externos, apenas o sentido de ajuste será invertido; o circuito não será danificado.

Por que as mudanças de velocidade são detectadas com atraso?▾

Se o potenciômetro for lido apenas no início do laço, o novo valor só será aplicado depois que todos os LEDs tiverem acendido. Se você fizer a leitura no passo de cada LED, a velocidade mudará na hora.