.. note:: ¡Hola, bienvenido a la comunidad de entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete más profundamente en Raspberry Pi, Arduino y ESP32 con otros entusiastas. **¿Por qué unirse?** - **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. - **Vistas previas exclusivas**: Obtén acceso anticipado a anuncios de nuevos productos y avances. - **Descuentos especiales**: Disfruta de descuentos exclusivos en nuestros productos más recientes. - **Promociones festivas y sorteos**: Participa en sorteos y promociones de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo! .. _1.1.1_js: 1.1.1 LED Parpadeante ========================= Introducción ----------------- En este proyecto, aprenderemos a hacer parpadear un LED mediante programación. A través de tus configuraciones, tu LED puede producir una serie de fenómenos interesantes. ¡Ahora, adelante! Componentes Necesarios ------------------------------ En este proyecto, necesitamos los siguientes componentes. .. image:: img/blinking_led_list.png :width: 800 :align: center Es definitivamente conveniente comprar un kit completo, aquí está el enlace: .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nombre - ELEMENTOS EN ESTE KIT - ENLACE * - Kit Raphael - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los enlaces a continuación. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DEL COMPONENTE - ENLACE DE COMPRA * - :ref:`cpn_gpio_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_resistor` - |link_resistor_buy| * - :ref:`cpn_led` - |link_led_buy| Diagrama Esquemático --------------------------- En este experimento, conecta una resistencia de 220Ω al ánodo (la pata larga del LED), luego la resistencia a 3.3 V, y conecta el cátodo (la pata corta) del LED a GPIO17 de Raspberry Pi. Por lo tanto, para encender un LED, necesitamos hacer que GPIO17 esté en nivel bajo (0V). Podemos obtener este fenómeno mediante programación. .. image:: img/image48.png :width: 800 :align: center Procedimientos Experimentales ----------------------------------- **Paso 1:** Construye el circuito. .. image:: img/image49.png :width: 800 :align: center **Paso 2:** Ve a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/nodejs/ .. note:: Cambia el directorio a la ruta del código en este experimento vía ``cd``. **Paso 3:** Ejecuta el código .. raw:: html .. code-block:: sudo node blink.js .. note:: Aquí sudo significa "superuser do", y python significa ejecutar el archivo con Python. Después de ejecutar el código, verás que el LED parpadea. **Paso 4:** Si deseas editar el archivo de código blink.js, presiona ``Ctrl + C`` para detener la ejecución del código. Luego escribe el siguiente comando para abrir blink.js: .. raw:: html .. code-block:: nano blink.js .. note:: nano es una herramienta de edición de texto. El comando se usa para abrir el archivo de código blink.js con esta herramienta. Presiona ``Ctrl+X`` para salir. Si has modificado el código, aparecerá un mensaje preguntando si deseas guardar los cambios o no. Escribe ``Y`` (guardar) o ``N`` (no guardar). Luego presiona ``Enter`` para salir. Escribe nano blink.js nuevamente para ver el efecto después del cambio. **Código** El siguiente es el código del programa: .. code-block:: js const Gpio = require('pigpio').Gpio; const led = new Gpio(17,{mode: Gpio.OUTPUT}); var led_state = 0; function blink_led(){ led.digitalWrite(led_state); led_state = !led_state; } setInterval(blink_led,300); Alternativamente, escribe el código como una función de flecha específica de js: .. code-block:: js const Gpio = require('pigpio').Gpio; const led = new Gpio(17,{mode: Gpio.OUTPUT}); var led_state = 0; setInterval(() => { led.digitalWrite(led_state); led_state = !led_state; }, 300); **Explicación del Código** .. code-block:: js const Gpio = require('pigpio').Gpio; Importa el constructor Gpio del paquete pigpio de esta manera, y luego define una constante ``Gpio`` para representar este constructor. Con una variedad de constructores, podemos usar js para controlar dispositivos electrónicos. ``pigpio`` se puede utilizar para implementar GPIO rápido, PWM, control de servos, notificación de cambios de estado y manejo de interrupciones. * `pigpio - github `_ .. Una envoltura para la biblioteca C de pigpio que permite un rápido control de GPIO, PWM, servos, .. notificación de cambios de estado y manejo de interrupciones con JS en la Raspberry Pi Zero, .. 1, 2, 3 o 4. .. code-block:: js const led = new Gpio(17,{mode: Gpio.OUTPUT}); La palabra clave ``new`` se usa para construir objetos instanciados de la clase. Conecta el LED al GPIO17 de la placa de expansión en forma de T, establece el modo de LedPin en salida y asígnalo a la constante ``led``, es decir, construye un objeto GPIO17 ``led``, y su modo es el modo de salida. Hay dos formas de numerar los pines IO en la Raspberry Pi: número BOARD y número BCM. En nuestro proyecto, usamos el número BCM. Necesitas configurar cada canal usado como entrada o salida. .. code-block:: js function blink_led(){ led.digitalWrite(led_state); led_state = !led_state; } setInterval(blink_led,300); El método ``setInterval()`` puede llamar funciones o calcular expresiones con un período especificado (en milisegundos). Aquí cambiamos el estado de funcionamiento del LED con un período de 300ms. * `setInterval `_ El método ``gpio.digitalWrite(level)`` establece el nivel del gpio en 1 o 0. .. code-block:: js var led_state = 0; setInterval(() => { led.digitalWrite(led_state); led_state = !led_state; }, 300); Reescribe el código como una función de flecha para hacerlo más corto. * `Funciones Flecha `_ Imagen del Fenómeno ------------------------- .. image:: img/image54.jpeg :width: 800 :align: center