.. note:: ¡Hola! Bienvenido a la Comunidad de Entusiastas de SunFounder Raspberry Pi, Arduino y ESP32 en Facebook. Sumérgete más 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. - **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 y Sorteos Festivos**: Participa en sorteos y promociones de temporada. 👉 ¿Listo para explorar y crear con nosotros? Haz clic en [|link_sf_facebook|] y únete hoy mismo. .. _2.1.9_py: 2.1.9 Joystick ============== .. note:: .. image:: ../img/mcp3008_and_adc0834.jpg :width: 25% :align: left Dependiendo de la versión de su kit, identifique si tiene **ADC0834** o **MCP3008** y continúe con la sección correspondiente. Introducción ---------------- En este proyecto, vamos a aprender cómo funciona el joystick. Manipulamos el joystick y mostramos los resultados en la pantalla. Componentes Requeridos ------------------------------ En este proyecto, necesitamos los siguientes componentes. .. image:: ../img/image317.png 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 * - 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_joystick` - \- * - :ref:`cpn_adc0834` - \- Diagrama Esquemático --------------------------- Al leer los datos del joystick, hay algunas diferencias entre los ejes: los datos de los ejes X e Y son analógicos, por lo que es necesario utilizar el ADC0834 para convertir el valor analógico a valor digital. Los datos del eje Z son digitales, por lo que puedes leerlos directamente con GPIO, o también puedes usar ADC para leerlos. .. image:: ../img/image319.png .. image:: ../img/image320.png Procedimientos Experimentales ----------------------------------- **Paso 1:** Construye el circuito. .. image:: ../img/image193.png **Paso 2:** Ve a la carpeta del código. .. raw:: html .. code-block:: cd ~/raphael-kit/python/ **Paso 3:** Ejecuta. .. raw:: html .. code-block:: sudo python3 2.1.9_Joystick.py Después de ejecutar el código, gira el joystick, y los valores correspondientes de x, y, Btn se mostrarán en la pantalla. **Código** .. 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 ADC0834 import time BtnPin = 22 def setup(): # Configurar los modos GPIO en numeración BCM GPIO.setmode(GPIO.BCM) GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP) ADC0834.setup() def destroy(): # Liberar recursos GPIO.cleanup() def loop(): while True: x_val = ADC0834.getResult(0) y_val = ADC0834.getResult(1) Btn_val = GPIO.input(BtnPin) print ('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val)) time.sleep(0.2) if __name__ == '__main__': setup() try: loop() except KeyboardInterrupt: # Cuando se presiona 'Ctrl+C', se ejecutará el programa destroy(). destroy() **Explicación del Código** .. code-block:: python def loop(): while True: x_val = ADC0834.getResult(0) y_val = ADC0834.getResult(1) Btn_val = GPIO.input(BtnPin) print ('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val)) time.sleep(0.2) VRX y VRY del Joystick están conectados a CH0 y CH1 de ADC0834 respectivamente. Por lo tanto, se llama a la función getResult() para leer los valores de CH0 y CH1. Luego, los valores leídos se deben almacenar en las variables x_val y y_val. Además, lee el valor de SW del joystick y almacénalo en la variable Btn_val. Finalmente, los valores de x_val, y_val y Btn_val se imprimirán con la función print(). Imagen del Fenómeno ----------------------- .. image:: ../img/image194.jpeg