Cubo de Leds (T1:E4)

     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)

     Para alimentar este proyecto y poder trasladarlo, usamos una batería externa de celular. También podemos conectarlo directamente al PC y usar la fuente de Arduino debido a que el proyecto consume muy poca corriente a pesar de la gran cantidad de leds.

      Destacamos que la conexión a negativo de los tres niveles se hace a través de tres transistores tipo NPN 2N2222 como se aprecia en las fotografías. Este tipo de conexionada es muy similar al multiplexado y evita tener una mayor cantidad de cables.


    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.



     El software que presentamos a continuación puede ser cambiado en algunos parámetros para modificar la secuencia y la velocidad de ella, solo basta usar un poco la imaginación.


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);
  }
}

----------------- Programa # 4 -----------------