Paso 4:.: 8 LED divertida:. (Múltiples LEDs) - CIRC02
Lo que estamos haciendo:
Hemos causado un LED parpadeando, ahora es el momento para subir las apuestas. Permite conectar ocho. También tendremos la oportunidad de estirar un poco el Arduino por crear diferentes secuencias de iluminación. Este circuito es también una configuración agradable experimentar con escribir tus propios programas y conseguir una sensación para el funcionamiento de Arduino.
Junto con el control de los LEDs nos comience a buscar en unos métodos de programación simple para mantener sus programas pequeños.
for() bucles - utilizados cuando desea ejecutar un trozo de código varias veces.
[arreglos] - utilizado para hacer más fácil manejo variables (es un grupo de variables)
(también puede descargar la hoja de diseño del tablero de la parte inferior de este paso)
Las partes:
- Hoja de protoboard CIRC-02
- Jefe del pin 2 (x4)
- LED de 5mm verde (x8)
- 560 ohm resistencia (verde-azul-marrón) (x8)
El circuito y conectar todo:
Un pequeño Video de todo lo que está enchufado
El código:
/* --------------------------------------------------------- * | Código de ejemplo de Kit de experimentación de Arduino | * | 02 CIRC.: 8 LED divertida:. (Múltiples LEDs) | *---** Algunas animaciones de Simple LED ** para más información sobre este http://tinyurl.com/d2hrud circuito * * ///LED Pin Variablesint ledPins [] = {2,3,4,5,6,7,8,9}; Una matriz para mantener el pin cada LED está conectado a / / es decir LED #0 está conectada al pin 2, LED #1, 3 y así //to dirección matriz utilizar ledPins [0] Esto sería igual 2 //and ledPins [7] sería igual a 9 / * * setup() - esta función se ejecuta una vez que cuando usted encienda su Arduino * que los pines de control de tres salidas * / void setup() {//Set cada pin conectado a un LED a modo de salida (tirando alto (a) o bajo (desconexión) para (int i = 0; i < 8; i ++) {//this es un bucle y repetir ocho veces pinMode(ledPins[i],OUTPUT); //we Utilice esto para ajustar cada pin del LED a la salida} código //the esto sustituye está por debajo de / * (comentado código no funcionará) * estas son las líneas sustituidas por el bucle anterior hacen exactamente el * lo mismo que arriba solo utiliza menos escribir pinMode (ledPins [0] SALIDA); pinMode(ledPins[1],OUTPUT); pinMode(ledPins[2],OUTPUT); pinMode(ledPins[3],OUTPUT); pinMode(ledPins[4],OUTPUT); pinMode(ledPins[5],OUTPUT); pinMode(ledPins[6],OUTPUT); pinMode(ledPins[7],OUTPUT); (End of commented Code) * /} / * * loop() - esta función comenzará después de que termine la instalación y repita * llamamos a una función llamada oneAfterAnother(). Si desea un comportamiento diferente * descomentar (eliminar las dos barras inclinadas) una de las otras líneas * / void loop() / / ejecutar una y otra vez {oneAfterAnotherNoLoop(); //this voluntad enciende cada LED uno por uno luego vuelta de / / oneAfterAnotherLoop(); //does lo mismo que oneAfterAnotherNoLoop pero con mucho menos escribir / / oneOnAtATime(); voluntad de //this gire un LED en girar otro en apagar el //former (un LED se verá como es desplazamiento a lo largo de la línea / / inAndOut(); //lights la dos medio LEDs entonces movimientos ellos hacia fuera y luego de nuevo} / * * oneAfterAnotherNoLoop() - se enciende una LED retardo luego delayTime luego luz * el LED siguiente hasta que todos los LEDs de luego convertirá uno tras otro ** esto lo hace sin utilizar un bucle que hace un montón de escribir. * oneOnAtATimeLoop() hace exactamente lo mismo con menos escribir * / void oneAfterAnotherNoLoop() {int delayTime = 100; //the tiempo (en milisegundos) para hacer una pausa entre LEDs //make menor para cambiar más rápido y mayor para más lento digitalWrite (ledPins [0], HIGH); //Turns el LED #0 (conectado al pin 2) delay(delayTime); //waits delayTime milisegundos digitalWrite (ledPins [1], HIGH); //Turns el LED #1 (conecta a la clavija 3) delay(delayTime) //waits delayTime milisegundos digitalWrite (ledPins [2] ALTO); Enciende el LED #2 (conectado al pin 4) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [3], HIGH); Enciende el LED #3 (conectado al pin 5) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [4], HIGH); Enciende el LED #4 (conectado al pin 6) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [5], HIGH); Enciende el LED #5 (conectado al pin 7) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [6], HIGH); Enciende el LED #6 (conectado al pin 8) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [7], HIGH); Enciende el LED #7 (conectado al pin 9) delay(delayTime); espera //Turns delayTime milisegundos cada LED apagado digitalWrite (ledPins [7], LOW); Enciende el LED #0 (conectado al pin 2) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [6], LOW); Enciende el LED #1 (conectado al pin 3) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [5], LOW); Enciende el LED #2 (conectado al pin 4) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [4], LOW); Enciende el LED #3 (conectado al pin 5) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [3], LOW); Enciende el LED #4 (conectado al pin 6) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [2], LOW); Enciende el LED #5 (conectado al pin 7) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [1], LOW); Enciende el LED #6 (conectado al pin 8) delay(delayTime); espera delayTime milisegundos digitalWrite (ledPins [0], LOW); Enciende el LED #7 (conectado al pin 9) delay(delayTime); espera delayTime milisegundos} / * * oneAfterAnotherLoop() - se enciende una LED retardo luego delayTime luego luz * el LED siguiente hasta que todos los LEDs de luego convertirá uno tras otro ** esto lo hace utilizando un bucle que hace mucho menos escribir. * que oneOnAtATimeNoLoop() hace exactamente lo mismo con menos escribir * / void oneAfterAnotherLoop() {int delayTime = 100; //the tiempo (en milisegundos) para hacer una pausa entre //make LEDs más pequeños para cambiar más rápido y más grande para más lento / o apagar cada LED uno tras otro (int i = 0; me < = 7; i ++) {digitalWrite (ledPins [i], HIGH) //Turns LED #i cada vez que esto me va delay(delayTime); //gets añadió que para que esto se repita} //8 veces la primera vez será = 0 el //time final será igual a 7; //Turn cada LED apagado uno tras otro para (int me = 7; i > = 0; i--) {//same arriba sino más bien que a partir de 0 y //we contando desde siete y cuenta regresiva digitalWrite (ledPins [i], LOW); //Turns off LED #i cada vez que esto me va delay(delayTime); //gets uno resta de él para que esto se repita} //8 veces la primera vez será = 7 el //time final será igual a 0; } / * * oneOnAtATime() - se el claro llevó entonces el siguiente apagar todos los demás * / void oneOnAtATime() {int delayTime = 100; //the tiempo (en milisegundos) para hacer una pausa entre //make LEDs más pequeños para cambiar más rápido y más grande para más lento para (int me = 0; me < = 7; i ++) {int offLED = i - 1; //Calculate que LED se convirtió en el último tiempo a través de if(i == 0) {//for me = 1 a 7 se trata de menos 1 (es decir, si me = 2 vamos a offLED = 7; //turn en LED 2 y apagar LED 1)} //however si i = 0, no queremos a la vuelta de led -1 (no existe) //instead apagamos LED 7, (bucle alrededor) digitalWrite (ledPins [i], HIGH); encender LED #i digitalWrite (ledPins [offLED], LOW); Apagar el LED enciende pasado delay(delayTime) tiempo; }} / * * inAndOut() - Esto encenderá los LEDs mediados entonces los dos próximos * haciendo un mirar hacia adentro y hacia afuera * / anular inAndOut() {int delayTime = 100; //the tiempo (en milisegundos) para hacer una pausa entre //make LEDs más pequeños para cambiar más rápido y más grande para //runs más lento el LED hacia fuera desde el centro de (int i = 0; me < = 3; i ++) {int offLED = i - 1; //Calculate que LED se convirtió en el último tiempo a través de if(i == 0) {//for me = 1 a 7 se trata de lo menos 1 (es decir, si i = 2 vamos a offLED = 3; //turn y LED 1 LED 2)} //however si me = 0 no queremos a la vuelta de led -1 (no existe) //instead apagamos LED 7, (bucle alrededor) int onLED1 = 3 - i; Esta es la primera a es decir. LED #3 cuando i = 0 y LED #0 cuando i = 3 int onLED2 = 4 + i; Esta es la primera a es decir. LED #4 cuando i = 0 y LED #7 cuando i = 3 int offLED1 = 3 - offLED; se apaga el LED enciende pasado tiempo int offLED2 = 4 + offLED; se apaga el LED enciende pasado tiempo digitalWrite (ledPins [onLED1], HIGH); digitalWrite (ledPins [onLED2], HIGH); digitalWrite (ledPins [offLED1], LOW); digitalWrite (ledPins [offLED2], LOW); Delay(delayTime); } //runs el LED en el centro para (int me = 3; > = 0; i--) {int offLED = i + 1; //Calculate que LED se convirtió en el último tiempo a través de if(i == 3) {//for me = 1 a 7 se trata de menos 1 (es decir, si me = 2 vamos a offLED = 0; //turn y LED 1 LED 2)} //however si me = 0 no queremos a la vuelta de led -1 (no existe) //instead apagamos LED 7 , (bucle alrededor) int onLED1 = 3 - i; Esta es la primera a es decir. LED #3 cuando i = 0 y LED #0 cuando i = 3 int onLED2 = 4 + i; Esta es la primera a es decir. LED #4 cuando i = 0 y LED #7 cuando i = 3 int offLED1 = 3 - offLED; se apaga el LED enciende pasado tiempo int offLED2 = 4 + offLED; se apaga el LED enciende pasado tiempo digitalWrite (ledPins [onLED1], HIGH); digitalWrite (ledPins [onLED2], HIGH); digitalWrite (ledPins [offLED1], LOW); digitalWrite (ledPins [offLED2], LOW); Delay(delayTime); }}
¿No funciona?
- Algunos LEDs no luz - es fácil de insertar un LED al revés. Verifique los LEDs que no funcionan y aseguran de la forma correcta de alrededor.
- Operativo fuera de secuencia - con ocho cables es fácil cruzar un par. Comprobar que el primer LED está conectado a pin pin 2 y cada uno allí después.
- A partir de nuevo - es fácil de perder accidentalmente un cable sin darse cuenta. Todo tirando hacia fuera y a partir de una pizarra fresca es a menudo más fácil que intentar localizar el problema.
Lo que es mejor:
a los bucles de conmutación:
en la función loop() hay 4 líneas. Los últimos tres todos comienzan con una ' / /' Esto significa que la línea se trata como un Comentario (no ejecutar). Para cambiar el programa a utilizar bucles de cambian el code de void loop() para:
Cargar el programa y notar que nada ha cambiado. Puedes echar un vistazo a las dos funciones, cada uno hace lo mismo, pero usan diferentes enfoques (sugerencia el segundo utiliza un bucle for)
Animaciones extras:
¿Cansado de esta animación? Pruebe las otras dos animaciones de muestra. Descomentar las líneas y subir el programa a tu tabla y disfrutar de las nuevas animaciones de luz. (borrar las barras frente a fila 3 y 4)
Probando tus propias animaciones:
Métase en el código incluido y empezar a cambiar las cosas. El punto principal es encender un LED en uso digitalWrite (pinNumber, HIGH); luego para apagarlo uso digitalWrite (pinNumber, LOW);. Tipo a, independientemente de lo que cambia no rompe nada.