.. note:: ¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder para Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 junto a 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. - **Avances Exclusivos**: Accede anticipadamente a anuncios de nuevos productos y adelantos exclusivos. - **Descuentos Especiales**: Aprovecha descuentos exclusivos en nuestros productos más recientes. - **Promociones Festivas y Sorteos**: Participa en sorteos y promociones especiales. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _1.1.1_py_pi5: 1.1.1 LED Intermitente ========================= Introducción ----------------- En este proyecto, aprenderemos a hacer que un LED parpadee mediante programación. Con tu configuración, el LED puede producir una serie de fenómenos interesantes. ¡Adelante, inténtalo! Componentes Necesarios ------------------------------ Para este proyecto, necesitamos los siguientes componentes. .. image:: ../python_pi5/img/1.1.1_blinking_led_list.png :width: 800 :align: center .. raw:: html
Diagrama de Conexiones ------------------------- En este experimento, conectamos el pin GPIO 17 de la Raspberry Pi al ánodo (pin largo) del LED, luego el cátodo (pin corto) del LED a una resistencia, y conectamos el otro extremo de la resistencia al pin GND en la Raspberry Pi. Para encender el LED necesitamos configurar GPIO17 en alto (3.3V), y podemos lograr esto mediante programación. .. note:: **Pin11** se refiere al pin 11 de la Raspberry Pi de izquierda a derecha, y su número de pin **BCM** correspondiente se muestra en la siguiente tabla. En el contenido relacionado con el lenguaje Python, BCM 17 corresponde a 17 en la columna BCM de la siguiente tabla. A su vez, es el mismo que el pin 11 de la Raspberry Pi, Pin 11. ============ ======== === T-Board Name physical BCM GPIO17 Pin 11 17 ============ ======== === .. image:: ../python_pi5/img/1.1.1_blinking_led_schematic.png :width: 800 :align: center Procedimientos del Experimento ------------------------------------ **Paso 1:** Construye el circuito. .. image:: ../python_pi5/img/1.1.1_blinking_led_circuit.png :width: 800 :align: center **Paso 2:** Ve a la carpeta del código y ejecútalo. 1. Si usas una pantalla, se recomienda seguir estos pasos. Encuentra `1.1.1_BlinkingLed.py` y haz doble clic para abrirlo. Haz clic en **Run** ->\ **Run Module** en la ventana, y aparecerá el siguiente contenido. Para detener la ejecución, simplemente haz clic en el botón X en la esquina superior derecha para cerrar la ventana, volviendo así al código. Si modificas el código, antes de hacer clic en **Run Module (F5)**, debes guardarlo primero para ver los resultados. 2. Si inicias sesión en la Raspberry Pi de forma remota, ingresa el siguiente comando: .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/python-pi5 .. note:: Cambia al directorio de la ruta del código en este experimento con el comando ``cd``. **Paso 3:** Ejecuta el código .. raw:: html .. code-block:: sudo python3 1.1.1_BlinkingLed.py .. note:: Aquí, ``sudo`` es superuser do, y python indica que el archivo se ejecutará con Python. Al ejecutar el código, verás que el LED parpadea. **Paso 4:** Si deseas editar el archivo de código `1.1.1_BlinkingLed.py`, presiona ``Ctrl + C`` para detener la ejecución del código. Luego, escribe el siguiente comando para abrir `1.1.1_BlinkingLed.py`: .. raw:: html .. code-block:: nano 1.1.1_BlinkingLed.py .. note:: nano es una herramienta de edición de texto. Este comando se usa para abrir el archivo de código `1.1.1_BlinkingLed.py` con esta herramienta. Presiona ``Ctrl+X`` para salir. Si has modificado el código, aparecerá una pregunta sobre si deseas guardar los cambios. Escribe ``Y`` (guardar) o ``N`` (no guardar). Luego, presiona ``Enter`` para salir. Escribe de nuevo nano `1.1.1_BlinkingLed.py` para ver el efecto después de los cambios. .. warning:: Si aparece un mensaje de error ``RuntimeError: Cannot determine SOC peripheral base address``, consulta :ref:`faq_soc` **Código** A continuación se muestra el código del programa: .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes, debes acceder a la ruta del código fuente como ``davinci-kit-for-raspberry-pi/python-pi5``. Tras modificar el código, puedes ejecutarlo directamente para ver el efecto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import LED from time import sleep # Inicializa un LED conectado al pin GPIO 17 usando la biblioteca GPIO Zero. led = LED(17) try: # Inicia un bucle infinito para alternar el estado del LED. while True: # Enciende el LED e imprime un mensaje en la consola. led.on() print('...LED ON') # Espera 0.5 segundos con el LED encendido. sleep(0.5) # Apaga el LED e imprime un mensaje en la consola. led.off() print('LED OFF...') # Espera 0.5 segundos con el LED apagado. sleep(0.5) except KeyboardInterrupt: # Maneja de forma segura una interrupción de teclado (Ctrl+C) saliendo del bucle. # GPIO Zero gestiona automáticamente la limpieza de configuraciones de GPIO al salir. pass **Explicación del Código** #. Al ejecutar el sistema, buscará la ruta de instalación de Python en la configuración env, luego llamará al intérprete correspondiente para completar la operación. Esto es para evitar que el usuario no instale Python en la ruta predeterminada ``/usr/bin``. .. code-block:: python #!/usr/bin/env python3 #. Estas líneas importan las clases y funciones necesarias: ``LED`` de ``gpiozero`` para el control del LED y ``sleep`` de ``time`` para demoras. .. code-block:: python from gpiozero import LED from time import sleep #. Esta línea crea un objeto LED conectado al pin GPIO 17. .. code-block:: python # Inicializa un LED conectado al pin GPIO 17 usando la biblioteca GPIO Zero. led = LED(17) #. Un bucle infinito se inicia con ``while True:``. Dentro del bucle, el LED se enciende (``led.on()``) y se imprime un mensaje. Luego, el programa se detiene por 0.5 segundos (``sleep(0.5)``). Después, el LED se apaga (``led.off()``), se imprime otro mensaje, y el programa se pausa nuevamente por 0.5 segundos. .. code-block:: python try: # Inicia un bucle infinito para alternar el estado del LED. while True: # Enciende el LED e imprime un mensaje en la consola. led.on() print('...LED ON') # Espera 0.5 segundos con el LED encendido. sleep(0.5) # Apaga el LED e imprime un mensaje en la consola. led.off() print('LED OFF...') # Espera 0.5 segundos con el LED apagado. sleep(0.5) #. El bloque ``except`` captura una ``KeyboardInterrupt`` (como presionar Ctrl+C) y sale del bucle de manera segura. La declaración ``pass`` se usa aquí como un marcador de posición para indicar que no se toma ninguna acción específica tras la interrupción. .. code-block:: python except KeyboardInterrupt: # Maneja de forma segura una interrupción de teclado (Ctrl+C) saliendo del bucle. # GPIO Zero gestiona automáticamente la limpieza de configuraciones de GPIO al salir. pass