Front & Back

Blog sobre el Desarrollo de aplicaciones web

Laboratorio Programando el funcionamiento de un LED RGB en Rpi con Node.JS

Acabo de publicar dos librerías en Github; SimpleRpiGpio y SimpleRpiLed. La primera es una clase orientada a facilitar el uso del GPIO de la Raspberry mediante NodeJS. En otros “posts” ya hemos profundizado en este tema, así que si acabas de empezar con ello, te recomiendo empezar por el artículo Cómo usar los pines GPIO de la Raspberry PI. El tema de este artículo, sin embargo, es la segunda librería (SimpleRpiLed) que haciendo uso de la primera, facilita la actuación sobre LEDS RGB conectados a la Raspberry.


Patillas de un LED RGB

Pero… ¿Qué es un led RGB?

Antes de comenzar, conviene que tengamos en cuenta que un LED RGB es un encapsulado de tres diodos LED, uno de color rojo (red en inglés), otro verde (green) y otro azul (blue). Como ya explicábamos con anterioridad, cada diodo del conjunto emitirá luz cuando reciba una intensidad comprendida entre 10 y 40mA, alcanzando su grado máximo de luminiscencia cuanto más próxima a 10 sea. Si variamos la tensión aplicada, obtendremos distintos grados de intensidad dentro de cada color, y si combinamos cada color obtendremos un amplísimo abanico de colores.

El circuito

Teniendo en cuenta todo esto, montaremos el circuito como si de tres LED distintos se tratase; conectaremos cada una de las tres patillas RGB a sendos pines GPIO, y utilizaremos SimpleRpiLed para hacer que nuestro LED cambie de color. El circuito se define en el esquema siguiente:

Esquema del circuito de un LED RGB

R1, R2 y R3 serán resistencias de 330 ohmios (ver artículo).

Comprendiendo el funcionamiento de la librería

Por el momento, SimpleRpiLed sólo puede trabajar con 8 colores. Como ya decíamos en el artículo ¿Qué son los niveles lógicos? Conectando Arduino y Raspberry PI, el GPIO sólo funciona con dos estados (0 y 1) con lo que la intensidad lumínica de cada led será constante. Teniendo esto en cuenta, los colores obtenidos serán los siguientes:

- R = 0 | G = 0 | B = 0 – Negro (apagado)
- R = 0 | G = 0 | B = 1 – Azul
- R = 0 | G = 1 | B = 0 – Verde
- R = 0 | G = 1 | B = 1 – Turquesa
- R = 1 | G = 0 | B = 0 – Rojo
- R = 1 | G = 0 | B = 1 – Morado
- R = 1 | G = 1 | B = 0 – Amarillo verdoso
- R = 1 | G = 1 | B = 1 – Blanco

En futuras versiones quizá intente simular un voltaje analógico con interrupciones en la señal de cada pin (tal como hace Arduino), aunque no sé con qué resultado. En cualquier caso para empezar es suficiente.

Instalación

Para instalar la librería y sus dependencias usaremos npm:
$ npm install

En la Raspberry PI sólo root puede hacer uso del GPIO; para poder utilizar el puerto sin necesidad de usar sudo, habrá que instalar la librería quick2wire-gpio-admin. Si aún no la tienes instalada, puedes hacerlo siguiendo los pasos siguientes:
$ git clone git://github.com/quick2wire/quick2wire-gpio-admin.git
$ cd quick2wire-gpio-admin
$ make && sudo make install
$ sudo adduser $USER gpio

Funcionamiento

El uso de SimpleRpiLed es muy sencillo; basta con el ejemplo siguiente para entenderlo:
//Incluimos la librería
var SimpleRpiLed = require("SimpleRpiLed");

//Creamos un objeto con la configuración de los pines
var redPin = 23;
var greenPin = 21;
var bluePin = 19;
var led = new SimpleRpiLed(redPin, greenPin, bluePin);

//Encendemos el led con el color deseado
led.black(); //Apagamos el led
led.blue(); //Para azul
led.green(); //Para verde
led.turquoise(); //Para turquesa …
led.red();
led.purple();
led.greenYellow();
led.white();

Si crees que puedes aportar algo, te invito a hacer un fork en Github ;-)