Skip to main content

Grove - 拇指摇杆

Grove - 拇指摇杆是一款与Grove兼容的模块,非常类似于PS2(PlayStation 2)控制器上的“模拟”摇杆。X轴和Y轴是两个约10k的电位器,通过生成模拟信号来控制二维运动。摇杆还配备了一个按键,可用于特殊应用。当模块处于工作模式时,它将输出两个模拟值,分别代表两个方向。与普通摇杆相比,其输出值限制在较小范围内(即200~800),只有在按下时,X值才会设置为1023,MCU可以检测到按下的动作。

版本

产品版本变更发布日期
Grove - 拇指摇杆 V1.1初始版本2016年10月

规格

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

关于Grove模块的更多详情,请参考 Grove 系统

支持的平台

ArduinoRaspberry Pi
caution

上述提到的支持平台仅表示模块的软件或理论兼容性。我们通常仅为Arduino平台提供软件库或代码示例。无法为所有可能的MCU平台提供软件库或演示代码,因此用户需要自行编写软件库。

入门指南

note

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

使用 Arduino

演示

Grove - 拇指摇杆是一种模拟设备,输出范围为 0 到 1023 的模拟信号。这需要我们使用 Arduino 的模拟端口来读取数据。

硬件

  • 步骤 1. 准备以下物品:
Seeeduino V4.2基础扩展板Grove - 拇指摇杆
图片描述图片描述图片描述
立即购买立即购买立即购买
  • 步骤 2. 使用 4 针 Grove 电缆将模块连接到 Grove 基础扩展板的 A0/A1 端口。
  • 步骤 3. 将 Grove 基础扩展板插入 Seeeduino。
  • 步骤 4. 使用 USB 电缆将 Seeeduino 连接到 PC。

note

如果没有 Grove 基础扩展板,我们也可以直接将 Grove - 拇指摇杆连接到 Seeeduino,如下所示。

SeeeduinoGrove - 拇指摇杆
5V红色
GND黑色
A1白色
A0黄色

软件

  • 步骤 1. 将以下代码复制并粘贴到一个新的 Arduino 草图中。
/*
拇指摇杆演示 v1.0
作者:https://www.seeedstudio.com
将模块连接到 A0 和 A1 端口使用;
*/

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

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

Serial.print("X 和 Y 坐标是:");
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 - 拇指摇杆连接到基础扩展板的 A0 端口。

步骤 2. 将基础扩展板插入您的 Seeeduino/Arduino。

步骤 3. 使用 USB 电缆将 Seeeduino/Arduino 连接到您的 PC。

软件

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

note

如果这是您第一次使用 Codecraft,请参阅 使用 Arduino 的 Codecraft 指南

步骤 2. 按下图拖动模块或打开页面底部提供的 cdc 文件。

cc

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

tip

代码上传完成后,您将在串行监视器中看到 X 和 Y 坐标。

使用 Raspberry Pi (配备 Grove 基础扩展帽)

硬件

  • 步骤 1. 本项目使用的物品:
Raspberry PiGrove 基础扩展帽Grove - 拇指摇杆
图片描述图片描述图片描述
立即购买立即购买立即购买
  • 步骤 2. 将 Grove 基础扩展帽插入 Raspberry Pi。
  • 步骤 3. 将拇指摇杆连接到基础扩展帽的 A0 端口。
  • 步骤 4. 使用 USB 电缆将 Raspberry Pi 连接到 PC。

note

在步骤 3 中,您可以将拇指摇杆连接到 任何模拟端口,但请确保您在命令中使用相应的端口号。

软件

caution

如果您使用的是 Raspberry Pi 且 Raspberry Pi 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
note

您可以使用 ++python grove_thumb_joystick.py pin++ 执行程序,其中 pin 可以是 ADC 组中的 6,并将设备连接到相应的插槽 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('摇杆被按下')
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++ 来退出此程序。

:::注意 您可能已经注意到,对于模拟端口,丝印上的引脚编号类似于 A1A0,然而在命令中我们使用参数 01,与数字端口相同。因此,请确保将模块插入正确的端口,否则可能会发生引脚冲突。 :::

使用 Raspberry Pi(搭配 GrovePi_Plus)

硬件

  • 步骤 1. 准备以下物品:
Raspberry piGrovePi_PlusGrove - Thumb Joystick
输入图片描述输入图片描述输入图片描述
立即购买立即购买立即购买
  • 步骤 2. 将 GrovePi_Plus 插入 Raspberry。
  • 步骤 3. 将 Grove-Thumb Joystick 连接到 GrovePi_Plus 的 A0 端口。
  • 步骤 4. 通过 USB 数据线将 Raspberry 连接到 PC。

软件

:::注意 如果您使用的是 Raspberry Pi 且 Raspberrypi OS >= Bullseye,您必须仅使用 Python3 来运行此命令。 :::

  • 步骤 1. 导航到示例代码的目录:
cd yourpath/GrovePi/Software/Python/

  • 步骤 2. 查看代码
nano grove_thumb_joystick.py   # 按 "Ctrl+x" 退出 #
import time
import grovepi

# 将 Grove Thumb Joystick 连接到模拟端口 A0

# GrovePi 端口 A0 使用 Arduino 引脚 0 和 1
# GrovePi 端口 A1 使用 Arduino 引脚 1 和 2
# 不要将任何使用引脚 1 的设备插入端口 A1
# 大多数 Grove 传感器仅使用其 4 个引脚中的 3 个,这就是为什么 GrovePi 在相邻端口之间共享 Arduino 引脚
# 如果传感器的引脚定义为 SIG,NC,VCC,GND,则第二个(白色)引脚未连接到任何东西

# 如果您希望连接两个摇杆,请使用端口 A0 和 A2(跳过 A1)

# 使用两个引脚 - 一个用于 X 轴,一个用于 Y 轴
# 此配置表示您正在使用端口 A0
xPin = 0
yPin = 1
grovepi.pinMode(xPin,"INPUT")
grovepi.pinMode(yPin,"INPUT")

# Grove Thumb Joystick 是一个模拟设备,输出范围为 0 到 1023 的模拟信号
# X 和 Y 轴是两个约 10k 的电位器,以及一个短路 X 轴的瞬时按钮

# 我的摇杆产生的结果与上述 URL 中的规格略有不同
# 我在这里列出了两者:

# 规格
# 最小 典型 最大 点击
# X 206 516 798 1023
# Y 203 507 797

# 我的摇杆
# 最小 典型 最大 点击
# X 253 513 766 1020-1023
# Y 250 505 769
while True:
try:
# 获取 X/Y 坐标
x = grovepi.analogRead(xPin)
y = grovepi.analogRead(yPin)

# 计算 X/Y 电阻
Rx = (float)(1023 - x) * 10 / x
Ry = (float)(1023 - y) * 10 / y

# 是否在 X 轴检测到点击?
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. 我们将在终端上看到如下输出显示。

输入图片描述|

原理图在线查看器

资源


项目

Raspberry Pi 音乐服务器:Raspberry Pi 项目的第一步。

制作一个定制的 Minecraft 控制器:使用 GrovePi 制作一个定制的 Minecraft 控制器。

技术支持与产品讨论

感谢您选择我们的产品!我们为您提供多种支持渠道,以确保您使用我们的产品时体验顺畅。我们提供多种沟通方式,以满足不同的偏好和需求。

Loading Comments...