Nota

¡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 [Aquí] y únete hoy mismo.

2.1.9 Joystick

Nota

../_images/mcp3008_and_adc0834.jpg

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.

../_images/image317.png

Es definitivamente conveniente comprar un kit completo, aquí está el enlace:

Nombre

ARTÍCULOS EN ESTE KIT

ENLACE

Kit Raphael

337

Raphael Kit

También puedes comprarlos por separado en los enlaces a continuación.

INTRODUCCIÓN DEL COMPONENTE

ENLACE DE COMPRA

Placa de Extensión GPIO

COMPRAR

Protoboard

COMPRAR

Cables de Puente

COMPRAR

Resistor

COMPRAR

Módulo Joystick

-

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.

../_images/image319.png ../_images/image320.png

Procedimientos Experimentales

Paso 1: Construye el circuito.

../_images/image193.png

Paso 2: Ve a la carpeta del código.

cd ~/raphael-kit/python/

Paso 3: Ejecuta.

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

Nota

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.

#!/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

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

../_images/image194.jpeg