RETO 1: ENCENDER Y APAGAR UN LED

En este primer reto vamos a describir la práctica elemental con la que todos nos iniciamos en el mundo de Arduino: encender y apagar un LED (Light Emitting Diode).

Es la práctica habitual en un primer contacto con Arduino, y que nos servirá también para trabajar con nuestra primera entrada/salida digital (pin nº 13) y comprender cómo cargar un programa desde el interfaz de Arduino.

El OBJETIVO de nuestro montaje será conectar un LED y que parpadee de forma intermitente con una pausa de 1 segundo = 1000 ms (milisegundos, unidades con las que trabaja el IDE de Ardunio).

Necesitaremos los siguientes componentes:

  • una placa Arduino.
  • un led, siguiendo el siguiente enlace podrás saber más acerca de las características electrónicas de un led y su cálculos para montaje en serie. Resumiendo, un diodo, es un componente electrónico que solo permite pasar la corriente en una dirección y que si se monta a la inversa no emitirá luz alguna como se esquematiza gráficamente.
  • una resistencia (ver más adelante cómo calcularla correctamente aplicando las Leyes de Ohmn).
  • dos cables que harán de conectores.
  • una placa de prototipado para realizar dicho montaje.

.

Características de un diodo led Tabla cálculo valores resistencias o resistores fijos.

Con esta tabla podrás calcular fácilmente el valor de la resistencias o resistores fijos. También puedes usar este otro recurso.

.

El montaje a realizar sería el siguiente:

.

Esquema montaje arduino 1 led

.

Una vez realizado el montaje, ya sólo nos queda probar el código fuente en nuestro IDE de Arduino para comprobar que nuestro montaje funciona perfectamente. Utilizaremos el programa Blink que ya viene incluido en la librería de ejemplos de Arduino y que podemos encontrar en el menú: Archivo>Ejemplos>Básics>Blink. Un consejo importante es que nunca modifiqueis directamente estos archivos de ejemplo porque se quedará grabado en la librería de vuestro programa. Lo recomendable siempre será crear una copia del original y trabajar con él.

Tal y como explico en ¿CÓMO FUNCIONA ARDUINO? tenemos dos partes bien diferencias en nuestro código.

Por una parte, dentro de la función setup() que la utilizamos para inicializar valores, mediante la instrucción pinMode(13, OUTPUT) estamos definiendo que vamos a utilizar la salida digital 13 y que la ponemos en estado OUTPUT, puesto que su función será la de recibir estados HIGH (encender) o LOW (apagar).

En la función loop(), que albergará todas las instrucciones que se van a repetir en nuestro programa hasta que decidamos parar de forma manual, nos encontramos con la instrucción digitalWrite(13,HIGH), mediante la cual estamos programando para que la salida digital 13 se encienda. Cuando usamos la misma instrucción con el valor LOW en el segundo parámetro, estamos programando que se apague el led.

Por último, entre ambas instrucciones situamos la instrucción delay(1000), que nos servirá para introducir una pausa de 1000ms (1 segundo) entre los estados de encendido y apagado de nuestro led.

Llegados a este punto ya podemos cargar nuestro programa en Arduino para comprobar si nuestro montaje físico en la placa es el correcto.

Por si aún sigues teniendo dudas sobre cómo realizar todo este proceso, no dudéis en contactarme, aquío podéis encontrar información ampliada del código fuente y la explicación del montaje en el siguiente enlace a la página oficial de Ardunio.

Hay que recordar que una señal es digital cuando solo puede tomar dos valores, el máximo asociado a 1, cierto u “on” y el mínimo asociado a cero, faso u “off”.

Elementos digitales son: pulsador, detector de presencia, LED, zumbador, servomotor…

Señal digital (0/1) en Arduino.

PARA SABER y COMPRENDER  

Es importante comprender qué resistores fijos debemos conectar a un led y por qué, así como entender las leyes de Ohmn y los cálculos necesarios tanto en circuitos en serie como en paralelo. Para todo ello os recomiendo encarecidamente que consultéis la siguiente web

EXTRA BALLS

Ahora que ya hemos realizado con éxito nuestro primer montaje, como paso final en esta sesión, os reto a realizar las siguientes variaciones:

  • Aumentar frecuencia parpadeo (cambiar los valores del delay).
  • Añadir un segundo o tercer led y que parpadeen alternativamente.
  • Añadir la instrucción FOR (estructura de control), combinada con una variable i (una variable es un contenedor que puede tomar varios valores, en este caso se usaría int para declarar que es un número entero) para:
    1. Repetir el programa con tantos leds como quiera montar de manera eficiente sin tener que escribir el programa repitiendo lo mismo tantas veces como leds haya.
    2. Conseguir el efecto del COCHE FANTÁSTICO (esto es el efecto ida y vuelta de parpadeo de los leds).
    3. Similar al anterior del coche fantástico pero que el efecto conseguido sea como una OLA de tal forma que las luces van avanzando quedándose encendidos los leds hasta alcanzar el mayor y luego descender apagándolos.

 

void loop()
          {
              int i = 0;  // Inicializamos la variable i como un entero
              for (i = 6 ; i < 14 ; i++)
                    {
                       digitalWrite( i , HIGH);
                       delay (500);
                       digitalWrite( i , LOW);
                       delay (500);
                    }
          }

Esquema montaje arduino coche fantástico 6 leds

NOTAS: Ojo que las instrucciones que se aplican a bloques de contenido no llevan ; final, como es el caso de for, void loop(), void setup().  Los 3 parámetros dentro del intervalo de la instrucción for significan lo siguiente, i=6 es el valor inicial que toma la variable; i < 14 es la condición que debe cumplir para que el ciclo continúe, se repita, en este caso mientras la i sea menor que 14, es decir que se repetirá hasta el 13; i++ es cómo cambia la variable en cada repetición, en este caso sumándole una unidad.

.

  • Añadir y programar 5 leds en serie, calculando previamente el valor del resistor fijo que necesitaremos.
  • El mismo paso anterior pero realizando el montaje en paralelo.

.