Skip to main content

Grove - Thumb Joystick

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Grove - Thumb Joystick は、PS2(PlayStation 2)コントローラーの「アナログ」ジョイスティックに非常に似た Grove 互換モジュールです。X軸とY軸は2つの約10kΩのポテンショメータで構成されており、アナログ信号を生成して2Dの動きを制御します。このジョイスティックには、特別な用途に使用できるプッシュボタンも搭載されています。モジュールが動作モードにあるとき、2つのアナログ値を出力し、それぞれ2つの方向を表します。通常のジョイスティックと比較して、出力値はより狭い範囲(例:200~800)に制限されます。押された場合のみ、X値が1023に設定され、MCUが押された動作を検出できます。

バージョン

製品バージョン変更点リリース日
Grove - Thumb Joystick V1.1初版2016年10月

仕様

項目最小値標準値最大値単位
動作電圧4.755.05.25V
出力アナログ値(X座標)206516798\
出力アナログ値(Y座標)203507797\
tip

Grove モジュールの詳細については、Grove System を参照してください。

対応プラットフォーム

ArduinoRaspberry Pi
caution

上記で対応可能と記載されているプラットフォームは、モジュールのソフトウェアまたは理論的な互換性を示しています。ほとんどの場合、Arduino プラットフォーム向けのソフトウェアライブラリやコード例のみを提供しています。すべての可能な MCU プラットフォーム向けにソフトウェアライブラリやデモコードを提供することはできません。そのため、ユーザーは独自のソフトウェアライブラリを作成する必要があります。

はじめに

note

Arduinoを初めて使用する場合は、開始前にArduinoの使い方を必ずご覧ください。

Arduinoで遊ぶ

デモンストレーション

Grove - Thumb Joystickはアナログデバイスで、0から1023までの範囲のアナログ信号を出力します。そのため、Arduinoのアナログポートを使用して値を読み取る必要があります。

ハードウェア

  • ステップ 1. 以下のものを準備してください:
Seeeduino V4.2Base ShieldGrove - Thumb Joystick
画像説明を入力してください画像説明を入力してください画像説明を入力してください
今すぐ購入今すぐ購入今すぐ購入
  • ステップ 2. Grove - Base ShieldのA0/A1ポートに4ピンのGroveケーブルを使用してモジュールを接続します。
  • ステップ 3. Grove - Base ShieldをSeeeduinoに差し込みます。
  • ステップ 4. USBケーブルを使用してSeeeduinoをPCに接続します。

note

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をPCに接続します。

ソフトウェア

ステップ 1. Codecraftを開き、Arduinoサポートを追加し、メインプロシージャを作業エリアにドラッグします。

note

Codecraftを初めて使用する場合は、CodecraftでArduinoを使用するガイドもご覧ください。

ステップ 2. 以下の画像のようにブロックをドラッグするか、このページの最後でダウンロードできるcdcファイルを開きます。

cc

プログラムをArduino/Seeeduinoにアップロードします。

success

コードのアップロードが完了すると、シリアルモニターにXとYの座標が表示されます。

Raspberry Piで遊ぶ (Grove Base Hat for Raspberry Piを使用)

ハードウェア

  • ステップ 1. このプロジェクトで使用するもの:
Raspberry PiGrove Base Hat for RasPiGrove - Thumb Joystick
画像説明を入力してください画像説明を入力してください画像説明を入力してください
今すぐ購入今すぐ購入今すぐ購入
  • ステップ 2. Grove Base HatをRaspberry Piに差し込みます。
  • ステップ 3. Thumb JoystickをBase HatのポートA0に接続します。
  • ステップ 4. USBケーブルを使用してRaspberry PiをPCに接続します。

note

ステップ3では、Thumb Joystickを任意のアナログポートに接続できますが、対応するポート番号に合わせてコマンドを変更する必要があります。

ソフトウェア

caution

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グループ内の{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()

success

すべてが正常に動作すれば、以下のような結果が表示されます。


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++ を押すだけです。

note

アナログポートの場合、シルクスクリーンのピン番号は A1, A0 のようになっていますが、コマンドでは 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 に接続します。

ソフトウェア

caution

Raspberry Pi OS >= Bullseye を搭載した Raspberry Pi を使用している場合は、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 の場合、2 番目の (白い) ピンは何にも接続されていません

# 2 つのジョイスティックを接続する場合は、ポート A0 と A2 を使用してください (A1 をスキップ)

# X 軸と Y 軸の 2 つのピンを使用
# この設定ではポート A0 を使用
xPin = 0
yPin = 1
grovepi.pinMode(xPin,"INPUT")
grovepi.pinMode(yPin,"INPUT")

# Grove Thumb Joystick はアナログデバイスで、0 から 1023 の範囲のアナログ信号を出力
# X 軸と Y 軸は 2 つの約 10k のポテンショメータと、X 軸を短絡するモーメンタリプッシュボタンで構成

# 私のジョイスティックは、上記 URL の仕様とは若干異なる結果を出力
# 両方を以下に記載:

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

# 私のジョイスティック
# Min Typ Max Click
# 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...