
Video
Diagrama del circuito

Código fuente
1// ─────────────────────────────────────────
2// BlueGrays · bluegrays.com
3// Efecto coche fantástico con velocidad regulable
4// ─────────────────────────────────────────
5// Un potenciómetro ajusta la velocidad del efecto LED Knight Rider (ida y
6// vuelta). A0 se lee en cada paso y su valor de 0-1023 se convierte en el
7// tiempo de retardo (ms).
8//
9// Pines:
10// D2, D3, D4, D5, D6, D7 -> 6 LED (en orden)
11// Cada LED con una resistencia de 330 ohmios
12// A0 -> Cursor del potenciómetro
13// (patillas exteriores a 5V y GND)
14
15int ledPins[] = {2, 3, 4, 5, 6, 7}; // Pines de los LED en orden de encendido
16int potValue; // Valor del potenciómetro = retardo (ms)
17
18void setup() {
19 // Configurar todos los pines de LED como salidas
20 for(int i = 0; i < 6; i++) {
21 pinMode(ledPins[i], OUTPUT);
22 }
23}
24
25void loop() {
26 // Hacia adelante: de D2 a D7
27 for(int i = 0; i < 6; i++) {
28 potValue = analogRead(A0); // Leer la velocidad (0-1023)
29 digitalWrite(ledPins[i], HIGH);
30 delay(potValue); // Esperar tantos ms como el valor del potenciómetro
31 digitalWrite(ledPins[i], LOW);
32 }
33
34 // Hacia atrás: de D6 a D3. Se saltan los LED de los extremos para que el rebote parezca continuo
35 for(int i = 4; i > 0; i--) {
36 potValue = analogRead(A0);
37 digitalWrite(ledPins[i], HIGH);
38 delay(potValue);
39 digitalWrite(ledPins[i], LOW);
40 }
41}
42Preguntas frecuentes
¿En qué se diferencia este proyecto de los anteriores?▾
Conecta la entrada analógica (potenciómetro) mediante un bucle bidireccional: a medida que la luz avanza y retrocede, se lee el potenciómetro en cada paso y se actualiza en el momento del retardo. Es la base para modificar el comportamiento en función del valor del sensor.
El valor que se muestra parpadea, ¿cómo lo fijo?▾
En las lecturas analógicas, es normal que haya pequeñas fluctuaciones. Calcular la media de varias lecturas o dividir el valor en intervalos más amplios con la función map() (por ejemplo, en intervalos de 10 ms) permite ocultar estas fluctuaciones.
¿Puedo utilizar otro sensor en lugar del potenciómetro?▾
Sí. Cualquier sensor que proporcione una salida analógica, como el LDR, se puede conectar a la misma entrada A0; por ejemplo, a medida que el ambiente se oscurece, la luz puede avanzar más rápido. Solo tienes que reajustar el rango de lectura con la función map().
¿Qué pin analógico debo utilizar?▾
En el Uno, todos los pines del A0 al A5 pueden realizar lecturas analógicas. Asegúrate de que el pin que utilices en el código coincida con la conexión del circuito; dado que los pines A4 y A5 también se utilizan para I2C, si tienes pensado añadir una pantalla más adelante, te recomendamos que elijas el A0.
