Práctica 13 Encender una secuencia de varios LEDs (Estrella fugaz)


13.1  Objetivo General:

Encender una secuencia de varios LEDs simulando una estrella fugaz.


Un conjunto de 12 LEDs serán encendidos de forma secuencial. Se simula con este práctica el comportamiento de una estrella fugaz.

13.2 Materiales y Métodos:

  1. 12 LEDs (Colores: Amarillo, Verde y Rojo).
  2. Una tarjeta Arduino Uno-R3 o Arduino Mega 2560.
  3. Un cable USB impresora.
  4. Un computador.
  5. Cables para el montaje del circuito.
  6. Tarjeta Protoboard.
  7. 12 Resistencias Eléctrica de 220 ohm.

13.3 Montaje de la práctica:

Antes de comenzar la realización del montaje del circuito electrónico, se debe realizar el circuito en el programa TinkerCad. Cada LED será conectado tal como lo hicimos en la Práctica 1 donde encendimos y apagamos un LED, o como en la Práctica 11 donde encendimos una secuencia de LEDs simulando un semáforo. Se van a usar los  pines del 2 al 13 para conectar cada uno de los 12 LEDs, ver Figura 2:

Figura 2. Montaje del circuito en el programa TinkerCAD

Se observa en la Figura 2 que se está utilizando el Arduino Uno, si se utiliza la tarjeta Arduino Uno-R3 el mismo procedimiento. Como se observa en la Figura 2, el Protoboard nos ayuda a instalar los  LEDs e instalar el circuito a través de cables, al igual que las resistencias.

Luego que se tiene armado el circuito en el programa TinkerCad, se comienza con el desarrollo del programa en el IDE de Arduino.

13.4 IDE de Arduino para la práctica:

– Se selecciona la tarjeta Arduino que se esta utilizando sea Arduino Uno-R3 o Arduino Mega 2560.

– Se selecciona el Puerto Serial. Bajo que puerto USB se va a conectar el Arduino con el computador.

– Se empieza a realizar el código:

  • Inicialmente debemos darle un nombre de qué consiste el código, esto se hace a través del símbolo //, se puede colocar el título de la práctica o del programa en sí. También se puede utilizar como comentarios dentro del programa.
  • Se declaran las variables. En esta práctica introduciremos un tipo de variable que no ha sido utilizada en las prácticas anteriores y es los vectores o arreglos. En concreto se crea un vector del tipo entero int pinArray[ ]={2,3,….}. Los corchetas indican que se esta declarando un vector. Para seleccionar una entrada específica del vector se usa pinArray[1] y dará como resultado 3. Los vectores en el arduino IDE van desde 0 hasta n.
  • Se declaran variables del tipo entero que definen el tiempo entre encender una luz y otra (waitStart), el número de LEDs que se encienden simultáneamente (tailLength) y el número de LEDs (lineSize). Las tres variables son del tipo  int.
  • En el segmento de void setup se declara que cada componente del vector pinArray es del tipo OUTPUT . Esto se hace de forma compacta utilizando un lazo for que va desde 0 hasta que i sea menor ( lt ) al número de LEDs.
  • En el segmento de void setup se indica que enciendan la cantidad de LEDs indicada en tailLength, luego mediante una instrucción if se establece que a partir del LED  tailLength encienda el siguiente pero apague el último de la cola. Así sucesivamente hasta llegar al final del número de LEDs
  • Al terminar el desarrollo del programa se debe compilar para verificar si existen errores dentro del codificado. Luego si no existen errores se debe cargar el código en la tarjeta Arduino para que lo ejecute.

NOTA: Para quel IDE de Arduino pueda entender los comandos es necesario que al final de cada instrucción se coloque punto y coma (;).

En la siguiente imagen se mostrara como quedo plasmado en el IDE de Arduino, los procedimientos anteriormente señalados: <\p>

2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//Estrella fugaz
int pinArray [] = {2,3,4,5,6,7,8,9,10,11,12,13 };    // Vector donde se van a declarar los LEDs
int waitStart= 200;  // Tiempo entre encender un LED y otro
int tailLength = 4;     // Numero de LEDs activos
int lineSize = 12;       // Numero total de LEDs
 
void setup()
  {
    int i;
    for (i=0; i&lt; lineSize; i++)
    {
      pinMode(pinArray[i], OUTPUT);
    } 
  }
 
void loop()
   {
     int i;
     int tailCounter = tailLength; // Se establece un contador con los LEDS 
                                   //que deben encenderse al mismo tiempoI set up the tail length in a counter
     for (i=0; i&lt;lineSize; i++)
     {
      digitalWrite(pinArray[i],HIGH); // Se enciende tailLength LEDs de forma consecutiva
      delay(waitStart); // Controla la rapidez de encendido de cada LED
      if (tailCounter == 0)
      {
        digitalWrite(pinArray[i-tailLength],LOW); // Apaga los LEDs de la cola hacia atrás
      }
      else
         if (tailCounter &gt; 0)
            tailCounter--;
      }
      for (i=(lineSize-tailLength); i&lt;lineSize; i++)
      {
       digitalWrite(pinArray[i],LOW); // Apague los LEDs restantes
       delay(waitStart); // Controla la rapidez con que se apagan los LEDs
      }
 }

Algoritmo  1 Código para encender y apagar un LED utilizando un botón pulsador. 

Implementación del algoritmo 1 en el simulador TinkerCad:

https://www.tinkercad.com/things/076jCBQwb8B-practica-13-encender-una-secuencia-de-varios-leds

13.5 Conclusión:

En esta práctica se ha mostrado como encender una secuencia de LEDs utilizando la tarjeta Arduino. Hemos avanzado en programación al introducir el manejo de variables del tipo Array o  vectores. El código permite aumentar o disminuir el tiempo en el que encienden los LEDs y a su vez definir cuantos LEDs van a estar encendidos (tiempo y cola de la estrella fugaz)

Si te gustó la práctica no dejes de comentar abajo

13.6 Referencias:

[1] https://www.arduino.cc/en/Tutorial/ShootingStar