.. note:: Hola, ¡bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook! Sumérgete en el mundo de Raspberry Pi, Arduino y ESP32 con otros entusiastas. **¿Por qué unirse?** - **Soporte experto**: Resuelve problemas post-venta y desafíos técnicos con la ayuda de nuestra comunidad y equipo. - **Aprender y compartir**: Intercambia consejos y tutoriales para mejorar tus habilidades. - **Avances exclusivos**: Obtén acceso anticipado a nuevos anuncios de productos y adelantos. - **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_py: 1.1.1 LED Parpadeante ========================= Introducción ----------------- En este proyecto, aprenderemos cómo hacer que un LED parpadee mediante programación. A través de tus configuraciones, tu LED puede producir una serie de fenómenos interesantes. Ahora, vamos a ello. 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 - ARTÍCULOS EN ESTE KIT - ENLACE * - Raphael Kit - 337 - |link_Raphael_kit| También puedes comprarlos por separado en los siguientes enlaces. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCCIÓN DE COMPONENTES - 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 (el pin largo del LED), luego la resistencia a 3.3 V, y conecta el cátodo (el pin corto) del LED al GPIO17 del Raspberry Pi. Por lo tanto, para encender un LED, necesitamos hacer que el GPIO17 esté en nivel bajo (0V). Podemos obtener este fenómeno mediante programación. .. note:: **Pin11** se refiere al pin 11 del Raspberry Pi de izquierda a derecha, y sus números de pin correspondientes en **wiringPi** y **BCM** se muestran en la siguiente tabla. En el contenido relacionado con el lenguaje C, hacemos que el GPIO0 sea equivalente a 0 en wiringPi. Entre el contenido relacionado con el lenguaje Python, BCM 17 es 17 en la columna BCM de la siguiente tabla. Al mismo tiempo, son los mismos que el pin 11 en el Raspberry Pi, Pin 11. ============== ======== ======== === Nombre T-Board físico wiringPi BCM GPIO17 Pin 11 0 17 ============== ======== ======== === .. image:: ../img/image48.png :width: 800 :align: center Procedimientos Experimentales --------------------------------- **Paso 1:** Construir el circuito. .. image:: ../img/image49.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 los siguientes pasos. Encuentra 1.1.1_BlinkingLed.py y haz doble clic para abrirlo. Ahora estás en el archivo. 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 parte superior derecha para cerrarlo y luego volverás al código. Si modificas el código, antes de hacer clic en **Run Module (F5)** necesitas guardarlo primero. Luego puedes ver los resultados. 2. Si inicias sesión en el Raspberry Pi de forma remota, escribe el siguiente comando: .. raw:: html .. code-block:: cd ~/raphael-kit/python .. note:: Cambia el directorio a la ruta del código en este experimento mediante ``cd``. **Paso 3:** Ejecuta el código .. raw:: html .. code-block:: sudo python3 1.1.1_BlinkingLed.py .. note:: Aquí sudo - superuser do, y python significa ejecutar el archivo con Python. Después de ejecutar el código, verás el LED parpadeando. **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 editor de texto. El comando se utiliza 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, habrá un mensaje preguntando si deseas guardar los cambios o no. Escribe ``Y`` (guardar) o ``N`` (no guardar). Luego presiona ``Enter`` para salir. Escribe nano 1.1.1_BlinkingLed.py nuevamente para ver el efecto después del cambio. **Código** El siguiente es el código del programa: .. note:: Puedes **Modificar/Restablecer/Copiar/Ejecutar/Detener** el código a continuación. Pero antes de eso, necesitas ir a la ruta del código fuente como ``raphael-kit/python``. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto. .. raw:: html .. code-block:: python #!/usr/bin/env python3 import RPi.GPIO as GPIO import time LedPin = 17 def setup(): # Set the GPIO modes to BCM Numbering GPIO.setmode(GPIO.BCM) # Set LedPin's mode to output,and initial level to High(3.3v) GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH) # Define a main function for main process def main(): while True: print ('...LED ON') # Turn on LED GPIO.output(LedPin, GPIO.LOW) time.sleep(0.5) print ('LED OFF...') # Turn off LED GPIO.output(LedPin, GPIO.HIGH) time.sleep(0.5) # Define a destroy function for clean up everything after the script finished def destroy(): # Turn off LED GPIO.output(LedPin, GPIO.HIGH) # Release resource GPIO.cleanup() # If run this script directly, do: if __name__ == '__main__': setup() try: main() # When 'Ctrl+C' is pressed, the program destroy() will be executed. except KeyboardInterrupt: destroy() **Explicación del Código** .. code-block:: python #!/usr/bin/env python3 Cuando el sistema detecta esto, buscará la ruta de instalación de python en la configuración de env, luego llamará al intérprete correspondiente para completar la operación. Esto previene que el usuario no tenga instalado python en la ruta predeterminada ``/usr/bin``. .. code-block:: python import RPi.GPIO as GPIO De esta manera, se importa la biblioteca RPi.GPIO, luego se define una variable, GPIO para reemplazar RPI.GPIO en el código siguiente. .. code-block:: python import time Importa el paquete time, para la función de retraso de tiempo en el programa siguiente. .. code-block:: python LedPin = 17 El LED está conectado al GPIO17 de la placa de extensión en forma de T, es decir, BCM 17. .. code-block:: python def setup(): GPIO.setmode(GPIO.BCM) GPIO.setup(LedPin, GPIO.OUT, initial=GPIO.HIGH) Establece el modo del pin LedPin a salida y el nivel inicial a Alto(3.3v). Hay dos formas de numerar los pines IO en una Raspberry Pi dentro de RPi.GPIO: números BOARD y números BCM. En nuestros proyectos, usamos los números BCM. Necesitas configurar cada canal que estás utilizando como entrada o salida. .. code-block:: python GPIO.output(LedPin, GPIO.LOW) Establece el GPIO17(BCM17) a 0V (nivel bajo). Dado que el cátodo del LED está conectado al GPIO17, el LED se encenderá. .. code-block:: python time.sleep(0.5) Retraso de 0.5 segundos. Aquí, la declaración es una función de retraso en el lenguaje C, la unidad es segundo. .. code-block:: python def destroy(): GPIO.cleanup() Define una función de destrucción para limpiar todo después de que el script termine. .. code-block:: python if __name__ == '__main__': setup() try: main() # When 'Ctrl+C' is pressed, the program destroy() will be executed. except KeyboardInterrupt: destroy() Esta es la estructura general de ejecución del código. Cuando el programa comienza a ejecutarse, inicializa el pin ejecutando setup(), y luego ejecuta el código en la función main() para establecer el pin en niveles alto y bajo. Cuando se presiona ``Ctrl+C``, el programa destroy() será ejecutado. Imagen del Fenómeno ------------------------ .. image:: ../img/image54.jpeg :width: 800 :align: center