Skip to main content

Grove - 拇指摇杆

Grove - Thumb Joystick 是一个 Grove 兼容的模块,它与 PS2(PlayStation 2)控制器上的“模拟”操纵杆非常相似。X 轴和 Y 轴是两个约为 10k 的电位器,通过产生模拟信号来控制二维移动。操纵杆还有一个按钮,可以用于特殊应用。当模块处于工作状态时,它会输出两个模拟值,代表两个方向。与普通的操纵杆相比,它的输出值被限制在一个较小的范围内(即 200~800),只有在被按下时,X 值才会被设置为 1023,而微控制器(MCU)可以检测到按下的动作。

版本

产品版本变更内容发布日期
Grove - Thumb Joystick V1.1初始版2016年10月

规格

项目最小值典型值最大值单位
工作电压4.755.05.25V
输出模拟值(X坐标)206516798\
输出模拟值(Y坐标)203507797\

:::提示 更多关于 Grove 模块的信息,请参见Grove 系统 :::

支持的平台

Arduino树莓派

:::警告 上述提到的支持平台只是模块软件或理论兼容性的一个指示。在大多数情况下,我们只提供针对Arduino平台的软件库或代码示例。由于无法为所有可能的MCU平台提供软件库/示例代码,因此用户需要自己编写软件库。 :::

开始使用

:::提示 如果您是第一次使用Arduino,我们强烈建议您在开始之前查看Arduino入门指南。 :::

与Arduino一起使用

演示

Grove - Thumb Joystick 是一个模拟设备,输出的模拟信号范围在 0 到 1023 之间。这要求我们使用 Arduino 的模拟端口来读取数据。

硬件

  • 步骤1. 准备以下材料:
Seeeduino V4.2Base ShieldGrove - Thumb Joystick
enter image description hereenter image description hereenter image description here
立即获取立即获取立即获取
  • 步骤 2. 使用 4 针 Grove 线缆将模块连接到 Grove - Base Shield 的 A0/A1 端口。
  • 步骤 3. 将 Grove - Base Shield 插入 Seeeduino。
  • 步骤 4. 通过 USB 线缆将 Seeeduino 连接到电脑。

:::提示 如果我们没有 Grove Base Shield,我们也可以直接将 Grove-Thumb Joystick 连接到 Seeeduino,如下所示。 :::

SeeeduinoGrove - Thumb Joystick
5V红色线
GND黑色线
A1白色线
A0黄色线

软件

  • 步骤 1. 将下面的代码复制并粘贴到一个新的 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);
}
  • 步骤 2. 你可以通过打开串行监视器来检查输出模拟信号的值。

Arduino 的模拟端口输出的值可以通过以下公式转换为对应的电阻值:R=(float)(1023-sensorValue)*10/sensorValue。

使用 Codecraft 编程

硬件

步骤 1. 将 Grove - Thumb Joystick 连接到 Base Shield 的 A0 端口。

步骤 2. 将 Base Shield 插入你的 Seeeduino/Arduino。

步骤 3. 通过 USB 线缆将 Seeeduino/Arduino 连接到你的电脑。

软件

步骤 1. 打开 Codecraft,添加 Arduino 支持,并将一个主程序拖入工作区。

:::提示 如果你是第一次使用 Codecraft,请也查看 使用 Arduino 的 Codecraft 指南

:::

步骤 2. 按照下面的图片拖拽相应的代码块,或者打开本页面底部可下载的 cdc 文件。

cc

将程序上传到你的 Arduino/Seeeduino。

:::成功提示 当代码上传完成后,你会在串行监视器中看到 X 和 Y 的坐标显示。 :::

使用树莓派(配合树莓派 Grove Base Hat)

硬件

  • 步骤 1. 本项目所需物品:
树莓派树莓派 Grove Base HatGrove - Thumb Joystick
enter image description hereenter image description hereenter image description here
立即获取立即获取立即获取
  • 步骤 2. 将 Grove Base Hat 插入树莓派。
  • 步骤 3. 将 Thumb Joystick 连接到 Base Hat 的 A0 端口。
  • 步骤 4. 通过 USB 线缆将树莓派连接到电脑。

::::提示 在步骤 3 中,你可以将拇指摇杆连接到 任何模拟端口,但请确保你根据相应的端口号更改命令。 :::

软件

:::警告 如果你使用的是 带有 Raspberrypi OS >= Bullseye 的树莓派,你必须 仅使用 Python3 执行这条命令。 :::

  • 步骤 1. 按照 设置软件 指南配置开发环境。
  • 步骤 2. 通过克隆 grove.py 库来下载源文件。
cd ~
git clone https://github.com/Seeed-Studio/grove.py

  • 步骤 3. 执行以下命令来运行代码。
cd grove.py/grove
python3 grove_thumb_joystick.py 0

:::注意 你可以使用命令 ++python grove_thumb_joystick.py 引脚++ 来执行程序,其中引脚可以是 ADC 组中的 {0, 2, 4, 6} 之一,并将设备连接到对应的插槽 {A0, A2, A4, A6}。 :::

以下是 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()


:::成功提示 如果一切顺利,你将能够看到以下结果: :::


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

你可以通过简单地按下 ++ctrl+c++ 来退出此程序。

:::提示 你可能已经注意到,对于模拟端口,丝印引脚编号类似于 A1, A0,但在命令中我们使用的参数是 01,与数字端口相同。因此,请确保你将模块插入正确的端口,否则可能会出现引脚冲突。 :::

使用树莓派(配合 GrovePi_Plus)

硬件

  • 步骤 1. 准备以下物品:
树莓派GrovePi_PlusGrove - Thumb Joystick
enter image description hereenter image description hereenter image description here
立即获取立即获取立即获取
  • 步骤 2. 将 GrovePi_Plus 插入树莓派。
  • 步骤 3. 将 Grove-Thumb Joystick 连接到 GrovePi_Plus 的 A0 端口。
  • 步骤 4. 通过 USB 线缆将树莓派连接到电脑。

软件

:::警告 如果你使用的是 带有 Raspberrypi OS >= Bullseye 的树莓派,你必须 仅使用 Python3 执行命令行。 :::

  • 步骤 1. 导航到示例目录。
cd yourpath/GrovePi/Software/Python/

  • 步骤 2. 查看代码
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"
  • 步骤 3. 运行示例程序。
sudo python3 grove_thumb_joystick.py
  • 步骤 4. 我们将在终端看到如下输出显示。

enter image description here|

在线原理图查看器

## 资源

项目

树莓派音乐服务器:树莓派项目的第一步。

构建自定义的Minecraft控制器:使用GrovePi构建自定义的Minecraft控制器。

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供各种支持,以确保您在使用我们的产品时能够拥有最顺畅的体验。我们提供多种沟通渠道,以满足不同用户的偏好和需求。

Loading Comments...