Nota
¡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 [Aquí] y únete hoy mismo.
2.1.6 Joystick
Nota
Dependiendo de la versión de tu kit, identifica si tienes ADC0834 o MCP3008 y procede con la sección correspondiente.
Introducción
En este proyecto, aprenderemos cómo funciona el joystick. Manipularemos el joystick y mostraremos los resultados en pantalla.
Componentes Necesarios
En este proyecto, necesitamos los siguientes componentes.
Diagrama Esquemático
Al leer los datos del joystick, existen algunas diferencias entre los ejes: los datos de los ejes X e Y son analógicos y necesitan utilizar el ADC0834 para convertir el valor analógico en digital. Los datos del eje Z son digitales, por lo que puedes leerlos directamente con el GPIO o también mediante el ADC.
Procedimientos del Experimento
Paso 1: Monta el circuito.
Paso 2: Abre la carpeta del código.
cd ~/davinci-kit-for-raspberry-pi/python-pi5
Paso 3: Ejecuta el código.
sudo python3 2.1.6_Joystick.py
Después de ejecutar el código, mueve el joystick y se mostrarán en pantalla los valores correspondientes de x, y y Btn.
Advertencia
Si aparece el mensaje de error RuntimeError: Cannot determine SOC peripheral base address, consulta Si gpiozero no funciona.
Código
Nota
Puedes Modificar/Restablecer/Copiar/Ejecutar/Detener el código a continuación. Antes de eso, asegúrate de estar en la ruta del código fuente, como davinci-kit-for-raspberry-pi/python-pi5. Después de modificar el código, puedes ejecutarlo directamente para ver el efecto.
#!/usr/bin/env python3
from gpiozero import Button
import ADC0834
import time
# Inicializa el botón conectado al pin GPIO 22
BtnPin = Button(22)
# Configura el ADC0834 ADC
ADC0834.setup()
try:
# Bucle principal para leer e imprimir los valores del ADC y el estado del botón
while True:
# Lee los valores de X y Y de los canales ADC 0 y 1
x_val = ADC0834.getResult(0)
y_val = ADC0834.getResult(1)
# Lee el estado del botón (presionado o no)
Btn_val = BtnPin.value
# Imprime los valores de X, Y y del botón
print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val))
# Retraso de 0.2 segundos antes de la próxima lectura
time.sleep(0.2)
# Manejo adecuado de la finalización del script (ej., mediante KeyboardInterrupt)
except KeyboardInterrupt:
pass
Explicación del Código
En esta sección se importa la clase Button de la biblioteca
gpiozeropara gestionar un botón conectado a un pin GPIO. También se importa la bibliotecaADC0834para la interfaz con el módulo ADC0834 (Convertidor Analógico a Digital).#!/usr/bin/env python3 from gpiozero import Button import ADC0834 import time
Inicializa un botón conectado al pin GPIO 22 y configura el módulo ADC0834 para su uso.
# Inicializa el botón conectado al pin GPIO 22 BtnPin = Button(22) # Configura el ADC0834 ADC ADC0834.setup()
Las conexiones VRX y VRY del joystick están vinculadas a CH0 y CH1 del ADC0834, respectivamente. Esta configuración facilita la lectura de los valores de CH0 y CH1, que luego se guardan en las variables
x_valyy_val. Además, se lee el valor de SW del joystick y se asigna a la variableBtn_val. Los valores obtenidos dex_val,y_valyBtn_valse muestran en pantalla mediante la funciónprint().try: # Bucle principal para leer e imprimir los valores del ADC y el estado del botón while True: # Lee los valores de X y Y de los canales ADC 0 y 1 x_val = ADC0834.getResult(0) y_val = ADC0834.getResult(1) # Lee el estado del botón (presionado o no) Btn_val = BtnPin.value # Imprime los valores de X, Y y del botón print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val)) # Retraso de 0.2 segundos antes de la próxima lectura time.sleep(0.2) # Manejo adecuado de la finalización del script (ej., mediante KeyboardInterrupt) except KeyboardInterrupt: pass