.. note::
¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el apasionante mundo de Raspberry Pi, Arduino y ESP32 junto a otros entusiastas.
**¿Por qué unirte?**
- **Soporte Experto**: Resuelve problemas postventa y desafíos técnicos con la ayuda de nuestra comunidad y equipo.
- **Aprende y Comparte**: Intercambia consejos y tutoriales para mejorar tus habilidades.
- **Avances Exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos exclusivos.
- **Descuentos Especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes.
- **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales de temporada.
👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo.
.. _1.1.2_rgb_nodejs:
1.1.2 LED RGB
=============
Introducción
------------
En este proyecto, aprenderemos a controlar un LED RGB para que muestre varios colores.
Componentes
--------------
.. image:: img/list_rgb_led.png
:align: center
Diagrama del Circuito
-------------------------
Después de conectar los pines de R, G y B a una resistencia limitadora de
corriente, conéctalos a los GPIO17, GPIO18 y GPIO27 respectivamente. El pin
más largo (GND) del LED se conecta a GND en la Raspberry Pi. Cuando los tres
pines reciben diferentes valores PWM, el LED RGB mostrará distintos colores.
.. image:: img/rgb_led_schematic.png
Procedimiento Experimental
-----------------------------
**Paso 1:** Construye el circuito.
.. image:: img/image61.png
:width: 6.59097in
:height: 4.29722in
**Paso 2:** Dirígete a la carpeta del código.
.. raw:: html
.. code-block::
cd ~/davinci-kit-for-raspberry-pi/nodejs/
**Paso 3:** Ejecuta el código.
.. raw:: html
.. code-block::
sudo node rgb_led.js
Después de ejecutar el código, verás que el LED RGB muestra los colores rojo, verde, azul, amarillo, rosa y cian.
**Código**
.. code-block:: js
const Gpio = require('pigpio').Gpio;
const ledred = new Gpio(17, { mode: Gpio.OUTPUT });
const ledgreen = new Gpio(18, { mode: Gpio.OUTPUT });
const ledblue = new Gpio(27, { mode: Gpio.OUTPUT });
function colorset(r, g, b) {
ledred.pwmWrite(r);
ledgreen.pwmWrite(g);
ledblue.pwmWrite(b);
}
var color_index = -1;
setInterval(() => {
color_index += 1;
switch (color_index) {
case 0:
colorset(0xff, 0x00, 0xFF);
break;
case 1:
colorset(0x00, 0xff, 0x00);
break;
case 2:
colorset(0x00, 0x00, 0xff);
break;
case 3:
colorset(0xff, 0xff, 0x00);
break;
case 4:
colorset(0xff, 0x00, 0xff);
break;
case 5:
colorset(0xc0, 0xff, 0x3e);
break;
default:
color_index=-1;
}
}, 500);
**Explicación del Código**
.. code-block:: js
const ledred = new Gpio(17,{mode: Gpio.OUTPUT});
const ledgreen = new Gpio(18,{mode: Gpio.OUTPUT});
const ledblue = new Gpio(27,{mode: Gpio.OUTPUT});
Inicializa los pines 17, 18 y 27 en modo de salida y asígnalos a las constantes ``ledred``, ``ledgreen`` y ``ledblue`` respectivamente.
.. code-block:: js
function colorset(r,g,b){
ledred.pwmWrite(r);
ledgreen.pwmWrite(g);
ledblue.pwmWrite(b);
}
Implementa una función ``colorset(r,g,b)`` para escribir valores de pulso en los pines 17, 18 y 27. La biblioteca Gpio encapsula la función ``pwmWrite()`` para escribir valores de pulso (de 0x00 a 0xff) en los pines. Así, puedes asignar valores RGB al LED RGB mediante la función ``colorset(r,g,b)``, permitiéndole mostrar varios colores.
.. note::
Para más información sobre RGB, consulta el sitio web: https://www.rapidtables.com/web/color/RGB_Color.html
.. code-block:: js
var color_index = -1;
setInterval(() => {
color_index += 1;
switch (color_index) {
case 0:
colorset(0xff, 0x00, 0xFF);
break;
case 1:
colorset(0x00, 0xff, 0x00);
break;
case 2:
colorset(0x00, 0x00, 0xff);
break;
case 3:
colorset(0xff, 0xff, 0x00);
break;
case 4:
colorset(0xff, 0x00, 0xff);
break;
case 5:
colorset(0xc0, 0xff, 0x3e);
break;
default:
color_index=-1;
}
}, 500);
El LED RGB es controlado por ``colorset()`` ejecutado cada 500ms.
Aquí se utiliza un switch case para seleccionar el color emitido por los LEDs RGB.
Dado que ``color_index`` cambia en cada ciclo, el color del LED RGB cambia en secuencia.
Imagen del Fenómeno
----------------------
.. image:: img/image62.jpeg