X

Al usar esta página web, aceptas nuestro uso de cookies. Usamos cookies para ofrecerte una mejor experiencia y para ayudar a que tu página funcione de manera efectiva.

D0/RXD1/TXD2D3 PWMD4D5 PWMD6 PWMD7D8D9 PWMD10 PWM/SSD11 PWM/MOSID12/MISOD13/SCKRESETRESET2AREFiorefA0A1A2A3A4/SDAA5/SCLN/CGND3V35VVINArduino Uno(Rev3) RLED R A5A4A3A2A1A0VINGNDGND5V3V3RESETIOREFRX0 0TX0 12- 34- 5- 678- 9- 10- 111213GNDAREF " >
MecatrónicaLATAM

ARDUINO LED

En este tutorial se tratan conceptos básicos de programación y la forma correcta de conectar un led a una tarjeta, en este caso Arduino, pero es posible emplear otras tarjetas.
Para entender la importancia de la forma en que debemos de conectar un led y el valor de la resistencia correcta es importante entender el funcionamiento de un LED.


ENCENDER UN LED CON ARDUINO

Comenzaremos haciendo el control de un LED. Es muy importante escribir el código para entender la programación.

MATERIAL
  • 1x LED
  • 1x Arduino
  • 1x Protoboard
  • 1x Resistor

Esquema de montaje

Como podemos observar en el esquema de conexión, únicamente se debe conectar el ánodo de nuestro LED a una terminal digital de la tarjeta Arduino y en la otra terminal, correspondiente al cátodo del LED, se coloca una resistencia en serie y a GND.

Circuito esquemático

Código

Usamos la palabra reservada #define para darle un alias a nuestro pin 2, el cual es LED, esto para tener un código mucho más limpio e identificar lo que conectamos en cada pin de nuestro Arduino, por eso #define LED 2. Todo esto se hace arriba del void setup(), también en esta parte se definen las variables para almacenar datos, o sea variables globales.


Ahora dentro de void setup() configuramos nuestro pin como salida ya que enviaremos señales digitales de ALTO o BAJO, esto se hace mediante la función pinMode() que en su traducción al español sería “pin en modo de” , esta función recibe dos parámetros, uno que es el ALIAS o PIN y la otra parte que sería la palabra reservada INPUT u OUTPUT, en este caso usamos la segunda que es OUTPUT, ya que enviaremos pulsos y por eso lo configuramos como salida.


Lo siguiente será configurar nuestro programa de ejecución, esto entra en void loop(), lo que escribamos dentro de él se ejecutara infinitamente hasta que nosotros cortemos el ciclo por algún otro medio. Como queremos hacer el clásico blink, lo que quiere hacer es prender y apagar un led por un determinado tiempo, tenemos que enviar un pulso ALTO, para este caso usaremos la función digitalWrite() que traducida al español será “escribe en digital un”, como pueden observar también recibe dos parámetros, uno es el ALIAS o PIN y la otra parte lo que queremos escribir, un ALTO o un BAJO y esto se hace mediante HIGH o LOW, en nuestro caso como queremos que prenda el led enviará un alto por un determinado tiempo, así que usamos la función delay(). Esta función recibe un parámetro ya sea una variable o un numero entero, este valor representa a los milisegundos que quiere decir esto que un segundo serán mil milisegundos, por eso delay(1000), este será el tiempo en que el led permanezca prendido. Ahora queremos que se apague, usamos de nuevo la función digitalWrite(), pero ahora enviamos un pulso bajo que será LOW y de nuevo queremos que esto suceda solo por un segundo así que volvemos a usar delay(1000), esto hará que nuestro led permanezca apagado durante un segundo.

  • #define LED 2 //Damos el alias a nuestro pin 2.
  • void setup()
  • {
    • pinMode(LED,OUTPUT); //Definimos el pin LED como salida.
    }
  • void loop() //Definimos nuestra secuencia.
  • {
    • digitalWrite(LED,HIGH); //Mandamos un ALTO al LED.
    • delay(1000); //Tiempo en que permanece el LED prendido “un segundo”.
    • digitalWrite(LED,LOW); //Mandamos un BAJO al LED.
    • delay(1000); //Tiempo en que permanece el LED apagado “un segundo”.
    }

PARPADEO DE DOS LEDS CON ARDUINO

Ahora procedemos a incorporar un segundo LED, como resultado se obtiene el parpadeo de dos LEDs simultáneamente y permite ver los cambios en el código para la incorporación de otro LED.

MATERIAL
  • 2x LED
  • 1x Arduino
  • 1x Protoboard
  • 2x Resistor

Esquema de montaje

Como podemos observar en el esquema de conexión, requerimos conectar el ánodo de cada uno de nuestro LED a una terminal digital de la tarjeta Arduino y en la otra terminal, correspondiente al cátodo del LED, se coloca una resistencia en serie y a GND.

Circuito esquemático

Código

  • #define LED 2 //Damos el alias a nuestro pin 2.
  • #define LED2 3 //Damos el alias a nuestro pin 3.
  • void setup()
  • {
    • pinMode(LED,OUTPUT); //Definimos el pin LED como salida.
    • pinMode(LED2,OUTPUT); //Definimos el pin LED2 como salida.
    }
  • void loop() //Definimos nuestra secuencia.
  • {
    • digitalWrite(LED,HIGH); //Mandamos un ALTO al LED.
    • digitalWrite(LED2,HIGH); //Mandamos un ALTO al LED2.
    • delay(1000); //Tiempo en que permanecen los LEDs prendidos“un segundo”.
    • digitalWrite(LED,LOW); //Mandamos un BAJO al LED.
    • digitalWrite(LED2,LOW); //Mandamos un BAJO al LED2.
    • delay(1000); //Tiempo en que permanecen los LEDs apagados “un segundo”.
    }

SECUENCIA DE LEDS CON ARDUINO

Se procede a hacer una secuencia de LEDs basado en las luces del auto fantástico, este nombre lo obtienen de la serie Knight Rider, ya que el ayudante del protagonista era un automóvil con inteligencia artificial que podía hablar y su boca consiste en una serie de luces que se mueven de izquierda a derecha.

MATERIAL
  • 5x LED
  • 1x Arduino
  • 1x Protoboard
  • 5x Resistor

Esquema de montaje

En este caso para la visualización únicamente se emplean 5 LEDs, el procedimiento de las conexiones es similar al encendido de un led y dos leds, se conecta el ánodo de cada uno de los LEDs a una terminal digital de la tarjeta Arduino y en la otra terminal, correspondiente al cátodo del LED, se coloca una resistencia en serie y a GND.

Circuito esquemático

Código

En el código se pueden ver varías modificaciones, se tiene una variable global del tipo entero llamada “pausa” con un valor de 50, esta variable permite cambiar el tiempo del estado de los LEDs, al disminuir el valor de la variable se tendría un estado ALTO y BAJO más corto, o sea el prendido y apagado es más rápido, si se aumenta el valor de la variable sería lo contrario, más lento.


Para la configuración de los pines de salida no se emplea la palabra reservada define para dar un alias a cada pin de Arduino. Ahora vamos a configurar cada pin de salida empleando un for, este inicia en el pin 2 [int pinLed =2]. En la condición 1 se indica que nuestra variable sea menor que 7 [pinLed < 7], ya que será de 2 a 6 los pines a utilizar. En la condición 2 hacemos el incremento en 1[pinLed++]. Dentro del for se utiliza pinMode() para pasar las variables del for e indicando como salida OUTPUT, es así como se pueden configurar varios pines como salida en menos líneas de código.


En el loop debemos poner la acción que va a estar ejecutando, nuevamente se utilizar un for como el del setup(), y adentro del for ponemos la sentencia que hace que prenda el led con digitalWrite(), a esta función le pasamos como primer parámetro la variable del for y enviamos un alto, el led prenderá durante el tiempo de la variable pausa y después de ese tiempo se apagará ese mismo pin, así sucesivamente, después se le da un tiempo con un delay(), de nuevo le pasamos como parámetro la variable pausa y esto servirá para darle un tiempo para hacer el cambio al segundo for.


En este segundo for hacemos lo mismo pero ahora al revés, empezamos en el led conectado en el pin 6 y así seguimos hasta el led 2, para que esto funcione en la condición 1 usamos un ">" y en la condición 2 se hace un decremento.

  • int pausa = 50;
  • void setup()
  • {
    • //Inicializa los pines del 2 al 6 como OUTPUT con un ciclo for
    • for (int pinLed = 2; pinLed < 7; pinLed++)
    • {
      • pinMode(pinLed, OUTPUT);
      }
    }
  • void loop()
  • {
    • // Encendido y apagado desde el pin 2 hasta el pin 6
    • for(int pinLed = 2; pinLed < 7; pinLed++)
    • {
      • digitalWrite(pinLed, HIGH); // Pone el pinLed en HIGH, encendiendo el led
      • delay(pausa);
      • digitalWrite(pinLed, LOW); // Pone el pinLed en LOW, apagando el led
      }
    • delay(pausa);

    • // Encendido y apagado desde el pin 7 hasta el pin 2
    • for(int pinLed = 6; pinLed > 1; pinLed--)
    • {
      • digitalWrite(pinLed, HIGH); // Pone el pinLed en HIGH, encendiendo el led
      • delay(pausa);
      • digitalWrite(pinLed, LOW); // Pone el pinLed en LOW, apagando el led
      }
    • delay(pausa);
    }

FADE DE UN LED CON ARDUINO

Ahora se procede a enviar valores analógicos para controlar la luminiscencia de un led, en otras palabras, es un regulador de luminiscencia.

MATERIAL
  • 1x LED
  • 1x Arduino
  • 1x Protoboard
  • 1x Resistor

Esquema de montaje

El montaje del circuito empleado es muy simple, únicamente se debe observar que el pin del Arduino sea PWM.

Circuito esquemático

Código

El funcionamiento es muy simple, primero se define el pin para el LED, después en el setup se pone el LED como salida, en el loop se crea un for que ira desde 0 a 255, considerando que la resolución del PWM es de 8 bits.


Dentro del for usamos analogWrite, donde recibe como parámetro el LED y los valores del for que ira incrementando de uno en uno y esto se almacena en el la variable i, se le da un delay de 10, ósea que cada 10 milisegundo se ira incrementando la variable i.


Se da un segundo delay de 1000 que será el tiempo de pausa al LED, para que cambie al segundo for, que hará casi lo del primer for, pero esta vez decrementa ósea, que empieza desde el 255 y termina en 0.

  • #define LED 3 //Damos el alias a nuestro pin 3.
  • void setup()
  • {
    • pinMode(LED,OUTPUT); //Definimos el pin LED como salida.
    }
  • void loop()
  • {
    • for(int i = 1; i <= 255; i++)
    • {
      • analogWrite(LED,i);
      • delay(10);
      }
    • delay(1000);

    • for(int i = 255; i >= 1; i--)
    • {
      • analogWrite(LED,i);
      • delay(10);
      }
    • delay(1000);
    }

Gracias a los dos for es posible observar el incremento y decremento del brillo en un led, al medir con un multímetro es posible ver el aumento y disminución del voltaje entre los rangos de 0 a 5 volts.


LED RGB CON ARDUINO

Un LED RGB es muy utilizado en paneles de publicidad que se conforman por matrices de LEDs. Por sus siglas en inglés (Red, Green y blue) tiene la principal ventaja de poder reproducir una gran variedad de colores.

MATERIAL
  • 1x LED RGB
  • 1x Arduino
  • 1x Protoboard
  • 3x Resistor

Esquema de montaje

La conexión para el circuito es muy similar a conectar un diodo LED, solo que en este caso se debe de conectar 3 diodos Led. Los cátodos del diodo LED RGB se conectan a GND y los 3 ánodos se conectan en serie con las resistencias y a sus 3 respectivos pines digitales en la tarjeta Arduino que puedan proporcionar la señal PWM. Para poder variar los colores deseados, en este ejemplo se empleará PWM (Modulación por ancho de pulso) para la simulación de la salida analógica.

Circuito esquemático

LED RGB R G B

Código

Es posible utilizar los anteriores códigos, por lo tanto, para variar un poco el código se utiliza una función.


Primero se definen los pines a usar, se puede utilizar #define o variables, en este caso se utilizar variables del tipo entero (int), se creó una variable del tipo global llamada pausa para usar un delay universal, al cambiar el valor de la variable pausa cambiará la velocidad de cambio en el programa.


En el setup se configuran los pines como salida.


Se creó una función del tipo void ya que no regresará ningún valor y es llamada "color", esta función recibirá tres parámetros del tipo entero que serán valores enteros o variables con un valor entre 0 y 255, estos parámetros pasan a la función analogWrite, en simples palabras, la función color se encarga de manipular los colores del led RGB.


En el loop, mandamos llamar a la función varias veces para poder hacer funcionar el LED RGB, hacemos mezcla de colores con los colores básicos, rojo, verde y azul.

  • int pinLedR = 11; // pin Rojo del LED RGB
  • int pinLedV = 10; // pin Verde del LED RGB
  • int pinLedA = 9; // pin Azul del LED RGB
  • int pausa = 1000;
  • void setup()
  • {
    • pinMode(pinLedR, OUTPUT); // pone el pinLedR como output
    • pinMode(pinLedV, OUTPUT); // pone el pinLedV como output
    • pinMode(pinLedA, OUTPUT); // pone el pinLedA como output
    }
  • void loop()
  • {
    • //Colores básicos
    • color(255, 0, 0); // Rojo
    • delay(1000);
    • color(0, 255, 0); // Verde
    • delay(1000);
    • color(0, 0, 255); // Azul
    • delay(1000);

    • //Colores mezclados
    • color(255, 255, 255); // Blanco
    • delay(1000);
    • color(255, 255, 0); // Amarillo
    • delay(1000);
    • color(255, 0, 255); // Magental
    • delay(1000);
    • color(0, 255, 255); // Cian
    • delay(1000);
    • color(0, 0, 0); // Apagado
    • delay(1000);
    }

  • // funcion para generar colores
  • void color(int rojo, int verde, int azul)
  • {
    • analogWrite(pinLedR, rojo);
    • analogWrite(pinLedV, verde);
    • analogWrite(pinLedA, azul);
    }