Este proyecto luminoso que vemos más abajo, consiste en 3 niveles de 9 leds cada uno, en total 27 leds, que encienden en orden secuencial. Utilizamos Arduino Nano. El funcionamiento consiste en que Arduino envía la secuencia a los 3 niveles simultáneamente, pero en cada ciclo conectamos uno solo de ellos a negativo, de tal manera que la secuencia se desarrolla conectando el primer nivel a negativo, se desarrolla la secuencia 1, luego conecta a negativo el segundo nivel, se desarrolla la secuencia 2 y termina con el tercer nivel a negativo y se desarrolla la secuencia 3, repitiendo en forma indefinida los tres ciclos. Si conectáramos al mismo tiempo a negativo los tres niveles, la secuencia correría simultáneamente en los tres niveles, pero esa no es la idea, se deben conectar en forma secuencial cada nivel.
(al final de la página video de programa #4)
En el diagrama vemos el conexionado y solamente el primer nivel de leds, los otros son iguales, salvo que los negativos van conectados a cada uno de los transistores.
En este otro diagrama podemos ver los tres niveles, no es muy claro, pero creo que se puede apreciar la idea general.
int salida[9]={2,3,4,5,6,7,8,9,10}; //---- DECLARAMOS ARRAY DE 9 "CAJITAS"
int nivel=10;
int i=0;
void setup() {
Serial.begin(9600);
Serial.println("Ready");
//--------------- poner los pines 2 a 10 en OUTPUT
while(i < 9){ //-------------------------------MIENTRAS i<9 HACEMOS LOOP
Serial.print ("array[");
Serial.print (i);
Serial.print ("] = ");
pinMode(salida[i],OUTPUT); //------------------ EN PIN
i++;
}
}
void loop() {
digitalWrite(nivel,HIGH); //----------------- AL INICIO SETEAMOS PATA 10
digitalWrite(salida[0],HIGH); //-------------------- PONEMOS PIN 2 EN 5 VOLT
delay(50); //--------------------------------------- PAUSA DE (1000= 1 SEG)
digitalWrite(salida[1],HIGH); //-------------------- PONEMOS PIN 3 EN 5 VOLT
delay(50);
digitalWrite(salida[2],HIGH);
delay(50);
digitalWrite(salida[3],HIGH);
delay(50);
digitalWrite(salida[4],HIGH);
delay(50);
digitalWrite(salida[5],HIGH);
delay(50);
digitalWrite(salida[6],HIGH);
delay(50);
digitalWrite(salida[7],HIGH);
delay(50);
digitalWrite(salida[8],HIGH);
delay(50);
digitalWrite(salida[0],LOW); //-------------------- PONEMOS PIN 2 EN 0 VOLT
delay(50); //--------------------------------------- PAUSA DE (1000= 1 SEG)
digitalWrite(salida[1],LOW); //-------------------- PONEMOS PIN 3 EN 5 VOLT
delay(50);
digitalWrite(salida[2],LOW);
delay(50);
digitalWrite(salida[3],LOW);
delay(50);
digitalWrite(salida[4],LOW);
delay(50);
digitalWrite(salida[5],LOW);
delay(50);
digitalWrite(salida[6],LOW);
delay(50);
digitalWrite(salida[7],LOW);
delay(50);
digitalWrite(salida[8],LOW);
delay(50);
nivel++; //----------- SUMAMOS UNA UNIDAD A VARIABLE "NIVEL" PARA SUBIR A OTRO NIVEL (SON 3)
if (nivel == 14){ //---------------------------- SI NIVEL LLEGA AL VALOR "14" (SUPERA EL TERCER NIVEL)
nivel=11; //------------------------------------ NIVEL TOMA EL VALOR DE 11 (VUELVE A PRIMER NIVEL)
digitalWrite(11,LOW); //-------------------- PONEMOS PINES (NIVELES) 11, 12, Y 13 EN "0"
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
}
int nivel=10;
int i=0;
void setup() {
Serial.begin(9600);
Serial.println("Ready");
//--------------- poner los pines 2 a 10 en OUTPUT
while(i < 9){ //-------------------------------MIENTRAS i<9 HACEMOS LOOP
Serial.print ("array[");
Serial.print (i);
Serial.print ("] = ");
pinMode(salida[i],OUTPUT); //------------------ EN PIN
i++;
}
}
void loop() {
digitalWrite(nivel,HIGH); //----------------- AL INICIO SETEAMOS PATA 10
digitalWrite(salida[0],HIGH); //-------------------- PONEMOS PIN 2 EN 5 VOLT
delay(50); //--------------------------------------- PAUSA DE (1000= 1 SEG)
digitalWrite(salida[1],HIGH); //-------------------- PONEMOS PIN 3 EN 5 VOLT
delay(50);
digitalWrite(salida[2],HIGH);
delay(50);
digitalWrite(salida[3],HIGH);
delay(50);
digitalWrite(salida[4],HIGH);
delay(50);
digitalWrite(salida[5],HIGH);
delay(50);
digitalWrite(salida[6],HIGH);
delay(50);
digitalWrite(salida[7],HIGH);
delay(50);
digitalWrite(salida[8],HIGH);
delay(50);
digitalWrite(salida[0],LOW); //-------------------- PONEMOS PIN 2 EN 0 VOLT
delay(50); //--------------------------------------- PAUSA DE (1000= 1 SEG)
digitalWrite(salida[1],LOW); //-------------------- PONEMOS PIN 3 EN 5 VOLT
delay(50);
digitalWrite(salida[2],LOW);
delay(50);
digitalWrite(salida[3],LOW);
delay(50);
digitalWrite(salida[4],LOW);
delay(50);
digitalWrite(salida[5],LOW);
delay(50);
digitalWrite(salida[6],LOW);
delay(50);
digitalWrite(salida[7],LOW);
delay(50);
digitalWrite(salida[8],LOW);
delay(50);
nivel++; //----------- SUMAMOS UNA UNIDAD A VARIABLE "NIVEL" PARA SUBIR A OTRO NIVEL (SON 3)
if (nivel == 14){ //---------------------------- SI NIVEL LLEGA AL VALOR "14" (SUPERA EL TERCER NIVEL)
nivel=11; //------------------------------------ NIVEL TOMA EL VALOR DE 11 (VUELVE A PRIMER NIVEL)
digitalWrite(11,LOW); //-------------------- PONEMOS PINES (NIVELES) 11, 12, Y 13 EN "0"
digitalWrite(12,LOW);
digitalWrite(13,LOW);
}
}
----------------- Programa # 4 -----------------