Paso 3: Y ahora el código...
Otra vez un muy especial gracias a ripred3 de usuario de Reddit el código aquí.Hemos creado una matriz global de enteros para mantener números de pin.
Nosotros podemos entonces recorrer estas más fácil en tiempo de ejecución.
Observe que utilizar algunos de los pines analógicos como salidas binarias
pero nos saltamos lo usaremos para la entrada (A0 para leer el pot).
Las clavijas el nombre no comienzan con una 'A' son los pasadores sólo digital.
Nos saltamos 0 y 1 ya que es común para ésos dejar libre porque son
la serie transmita y reciba los pins en el chip ATMEGA328 y son útiles
utilizar para la depuración de salida a un monitor de la serie, pero digress:
int led_pins [15] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
void setup() {}
pinMode (A0, entrada); configurar el pin para leer el potenciómetro
Ahora tenemos que configurar nuestros pasadores LED como salidas:
int i;
para (i = 0; i < 15; i ++) {}
pinMode (led_pins [i], salida);
Por defecto cada LED apagado. Esto supone que los ánodos de los LEDs están conectados
a los pines de salida (con una resistencia de 330 ohmios en el medio de limitación de corriente)
y al otro lado de todos los LEDs (los cátodos) está conectado a tierra.
digitalWrite (led_pins [i], LOW);
}
}
void loop() {}
hemos creado una variable índice en nuestra matriz de números de pin. Nos va por defecto a 0 (el primero
LED) y su rango va de 0 a 14 inclusive (el valor de XV en nuestra matriz).
Índice de int = 0;
También necesitaremos una variable que nos diga qué dirección nos estamos 'despedir' a los LEDs.
Voy empezar con 1 y utilice -1 para ir a la otra dirección:
Dirección int = 1;
mientras que {} (1)
int valor = analogRead(A0); obtener la posición de 0 a 1023
Usaremos este valor como el número de milisegundos para retrasar entre avance entre el de LED.
Hay 1000 milisegundos en un segundo, así que esto nos da un buen rango de retardo de 1/1000 a un
poco más de 1 segundo.
Pero primero tenemos que encender el LED 'actual' (el que está indexado por 'index'):
digitalWrite (led_pins [index], HIGH); a su vez el LED del perno alto, '1', + 5v, lo mismo...
Ahora demora un tiempo en relación con el potenciómetro. La función 'delay()' espera el número
de milisegundos dárselo antes de que devuelve así que esto funciona perfecto:
Delay(Value);
Apagar la corriente LED antes de avanzar:
digitalWrite (led_pins [index], LOW);
avanzamos nuestro número índice así sucesivamente el paso siguiente nos referimos el LED siguiente:
Dirección de += índice;
Inspeccionamos nuestro índice para ver si estamos a punto de ir más allá de cada extremo. Si hemos llegado a tanto
final será simplemente multiplicamos la dirección por -1 cada vez que se llega a un extremo o el otro y esto
lo cambiara de 1 y -1, preparándose para el siguiente paso:
Si ((index == 0) || (index == 9)) {
Dirección * = -1;
}
}
}
Y ahí lo tienen. Ahora debe ser capaz de controlar su movimiento LED con el potenciómetro.