Skip to main content

Grove - Thumb Joystick

Grove - Thumb Joystick es un módulo compatible con Grove que es muy similar al joystick 'analógico' de los controladores de PS2 (PlayStation 2). Los ejes X e Y son dos potenciómetros de 10k que controlan el movimiento 2D generando señales analógicas. El joystick también tiene un botón pulsador que podría usarse para aplicaciones especiales. Cuando el módulo está en modo de funcionamiento, generará dos valores analógicos, representando dos direcciones. Comparado con un joystick normal, sus valores de salida están restringidos a un rango menor (es decir, 200800), solo cuando se presiona el valor X se establecerá en 1023 y el MCU puede detectar la acción de presionar.

Versión

Versión del ProductoCambiosFecha de Lanzamiento
Grove - Thumb Joystick V1.1InicialOct 2016

Especificaciones

ElementoMínTípicoMáxUnidad
Voltaje de Funcionamiento4.755.05.25V
Valor Analógico de Salida (coordenada X)206516798\
Valor Analógico de Salida (coordenada Y)203507797\
tip

Para más detalles sobre los módulos Grove, consulte Sistema Grove

Plataformas Compatibles

ArduinoRaspberry Pi
caution

Las plataformas mencionadas anteriormente como compatibles son una indicación de la compatibilidad de software o teórica del módulo. Solo proporcionamos biblioteca de software o ejemplos de código para la plataforma Arduino en la mayoría de los casos. No es posible proporcionar biblioteca de software / código de demostración para todas las plataformas MCU posibles. Por lo tanto, los usuarios tienen que escribir su propia biblioteca de software.

Primeros Pasos

note

Si esta es la primera vez que trabajas con Arduino, te recomendamos firmemente que veas Primeros Pasos con Arduino antes de comenzar.

Jugar con Arduino

Demostración

El Grove - Thumb Joystick es un dispositivo analógico que emite una señal analógica que va de 0 a 1023. Eso requiere que usemos el puerto analógico de Arduino para tomar las lecturas.

Hardware

  • Paso 1. Prepara los siguientes elementos:
Seeeduino V4.2Base ShieldGrove - Thumb Joystick
enter image description hereenter image description hereenter image description here
Obtener Uno AhoraObtener Uno AhoraObtener Uno Ahora
  • Paso 2. Conecta el módulo al A0/A1 del Grove - Base Shield usando el cable grove de 4 pines.
  • Paso 3. Conecta el Grove - Base Shield al Seeeduino.
  • Paso 4. Conecta el Seeeduino a la PC mediante un cable USB.

note

Si no tenemos el Grove Base Shield, también podemos conectar directamente el Grove-Thumb Joystick al Seeeduino como se muestra a continuación.

SeeeduinoGrove - Thumb Joystick
5VRojo
GNDNegro
A1Blanco
A0Amarillo

Software

  • Paso 1. Copia y pega el código de abajo en un nuevo sketch de Arduino.
/*
Thumb Joystick demo v1.0
by:https://www.seeedstudio.com
connect the module to A0&A1 for using;
*/

void setup()
{
Serial.begin(9600);
}

void loop()
{
int sensorValue1 = analogRead(A0);
int sensorValue2 = analogRead(A1);

Serial.print("The X and Y coordinate is:");
Serial.print(sensorValue1, DEC);
Serial.print(",");
Serial.println(sensorValue2, DEC);
Serial.println(" ");
delay(200);
}
  • Paso 2. Puedes verificar los valores de las señales analógicas de salida abriendo el Monitor Serie.

El valor de salida del puerto analógico de Arduino puede convertirse a la resistencia correspondiente usando la fórmula: R=(float)(1023-sensorValue)*10/sensorValue.

Jugar con Codecraft

Hardware

Paso 1. Conecta un Grove - Thumb Joystick al puerto A0 de un Base Shield.

Paso 2. Conecta el Base Shield a tu Seeeduino/Arduino.

Paso 3. Conecta el Seeeduino/Arduino a tu PC mediante un cable USB.

Software

Paso 1. Abre Codecraft, añade soporte para Arduino, y arrastra un procedimiento principal al área de trabajo.

note

Si esta es tu primera vez usando Codecraft, consulta también Guía para usar Codecraft con Arduino.

Paso 2. Arrastra bloques como en la imagen de abajo o abre el archivo cdc que puede descargarse al final de esta página.

cc

Sube el programa a tu Arduino/Seeeduino.

tip

Cuando el código termine de subirse, verás las coordenadas de X e Y mostradas en el Monitor Serie.

Jugar con Raspberry Pi (Con Grove Base Hat para Raspberry Pi)

Hardware

  • Paso 1. Elementos utilizados en este proyecto:
Raspberry piGrove Base Hat para RasPiGrove - Thumb Joystick
enter image description hereenter image description hereenter image description here
Consigue UNO AhoraConsigue UNO AhoraConsigue UNO Ahora
  • Paso 2. Conecta el Grove Base Hat al Raspberry.
  • Paso 3. Conecta el Thumb Joystick al puerto A0 del Base Hat.
  • Paso 4. Conecta el Raspberry Pi a la PC a través del cable USB.

note

Para el paso 3 puedes conectar el thumb joystick a cualquier Puerto Analógico pero asegúrate de cambiar el comando con el número de puerto correspondiente.

Software

caution

Si estás usando Raspberry Pi con Raspberrypi OS >= Bullseye, tienes que usar esta línea de comandos solo con Python3.

  • Paso 1. Sigue Configuración de Software para configurar el entorno de desarrollo.
  • Paso 2. Descarga el archivo fuente clonando la librería grove.py.
cd ~
git clone https://github.com/Seeed-Studio/grove.py

  • Paso 3. Ejecuta los siguientes comandos para ejecutar el código.
cd grove.py/grove
python3 grove_thumb_joystick.py 0

note

puedes ejecutar el programa con ++python grove_thumb_joystick.py pin++, donde pin puede ser uno de 6 en el grupo ADC y conectar el dispositivo al slot correspondiente A6.

A continuación está el código grove_thumb_joystick.py.


import math
import sys
import time
from grove.adc import ADC


class GroveThumbJoystick:

def __init__(self, channelX, channelY):
self.channelX = channelX
self.channelY = channelY
self.adc = ADC()

@property
def value(self):
return self.adc.read(self.channelX), self.adc.read(self.channelY)

Grove = GroveThumbJoystick


def main():
from grove.helper import SlotHelper
sh = SlotHelper(SlotHelper.ADC)
pin = sh.argv2pin()

sensor = GroveThumbJoystick(int(pin), int(pin + 1))

while True:
x, y = sensor.value
if x > 900:
print('Joystick Pressed')
print("X, Y = {0} {1}".format(x, y))
time.sleep(.2)

if __name__ == '__main__':
main()


tip

If everything goes well, you will be able to see the following result


pi@raspberrypi:~/grove.py/grove $ python3 grove_thumb_joystick.py 0
Hat Name = 'Grove Base Hat RPi'
X, Y = 506 484
X, Y = 484 484
X, Y = 506 484
X, Y = 506 487
Joystick Pressed
X, Y = 999 485
X, Y = 310 736
X, Y = 681 484
Joystick Pressed
X, Y = 999 277
Joystick Pressed
X, Y = 999 487
X, Y = 506 484
X, Y = 501 486
X, Y = 509 484
X, Y = 511 486
X, Y = 510 485
^CTraceback (most recent call last):
File "grove_thumb_joystick.py", line 69, in <module>
main()
File "grove_thumb_joystick.py", line 66, in main
time.sleep(.2)
KeyboardInterrupt

Puedes salir de este programa simplemente presionando ++ctrl+c++.

note

Es posible que hayas notado que para el puerto analógico, el número de pin en la serigrafía es algo como A1, A0, sin embargo en el comando usamos el parámetro 0 y 1, igual que el puerto digital. Así que por favor asegúrate de conectar el módulo en el puerto correcto, de lo contrario puede haber conflictos de pines.

Jugar Con Raspberry Pi (con GrovePi_Plus)

Hardware

  • Paso 1. Prepara los siguientes elementos:
Raspberry piGrovePi_PlusGrove - Thumb Joystick
enter image description hereenter image description hereenter image description here
Obtener Uno AhoraObtener Uno AhoraObtener Uno Ahora
  • Paso 2. Conecta el GrovePi_Plus al Raspberry.
  • Paso 3. Conecta el Grove-Thumb Joystick al puerto A0 del GrovePi_Plus.
  • Paso 4. Conecta el Raspberry a la PC a través del cable USB.

Software

caution

Si estás usando Raspberry Pi con Raspberrypi OS >= Bullseye, tienes que usar esta línea de comando solo con Python3.

  • Paso 1. Navega al directorio de las demos:
cd yourpath/GrovePi/Software/Python/

  • Paso 2. Para ver el código
nano grove_thumb_joystick.py   # "Ctrl+x" to exit #
import time
import grovepi

# Connect the Grove Thumb Joystick to analog port A0

# GrovePi Port A0 uses Arduino pins 0 and 1
# GrovePi Port A1 uses Arduino pins 1 and 2
# Don't plug anything into port A1 that uses pin 1
# Most Grove sensors only use 3 of their 4 pins, which is why the GrovePi shares Arduino pins between adjacent ports
# If the sensor has a pin definition SIG,NC,VCC,GND, the second (white) pin is not connected to anything

# If you wish to connect two joysticks, use ports A0 and A2 (skip A1)

# Uses two pins - one for the X axis and one for the Y axis
# This configuration means you are using port A0
xPin = 0
yPin = 1
grovepi.pinMode(xPin,"INPUT")
grovepi.pinMode(yPin,"INPUT")

# The Grove Thumb Joystick is an analog device that outputs analog signal ranging from 0 to 1023
# The X and Y axes are two ~10k potentiometers and a momentary push button which shorts the x axis

# My joystick produces slightly different results to the specifications found on the url above
# I've listed both here:

# Specifications
# Min Typ Max Click
# X 206 516 798 1023
# Y 203 507 797

# My Joystick
# Min Typ Max Click
# X 253 513 766 1020-1023
# Y 250 505 769
while True:
try:
# Get X/Y coordinates
x = grovepi.analogRead(xPin)
y = grovepi.analogRead(yPin)

# Calculate X/Y resistance
Rx = (float)(1023 - x) * 10 / x
Ry = (float)(1023 - y) * 10 / y

# Was a click detected on the X axis?
click = 1 if x >= 1020 else 0

print "x =", x, " y =", y, " Rx =", Rx, " Ry =", Ry, " click =", click
time.sleep(.5)

except IOError:
print "Error"
  • Step 3. Run the demo.
sudo python3 grove_thumb_joystick.py
  • Paso 4. Veremos la salida mostrada en la terminal como se muestra a continuación.

enter image description here|

Visor de Esquemas en Línea

Recursos


Proyectos

Servidor de música con Raspberry pi: Un primer paso hacia un proyecto con Raspberry Pi.

Construye un Controlador Personalizado de Minecraft: Construye un Controlador Personalizado de Minecraft con el GrovePi.

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...