Skip to main content

Grove - 5-Way Switch

note

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

Grove - 5-Way Switch は、スイッチの位置やイベント(シングルクリック/ダブルクリック/長押しなど)を検出するために使用できます。このスイッチは、左/右/上/下/中央の5方向を検出できます。
5方向スイッチは、多機能コントロールに最適な選択肢となるでしょう。

1つの小さなスイッチだけで、スイッチコントロールのすべてのニーズを満たします!

バージョン

製品バージョン変更点リリース日
Grove - 5-Way Switch初期リリース2018年6月

特徴

  • 5方向の個別スイッチ
  • 優れた耐熱性
  • 長寿命
  • Grove互換

仕様

項目
動作電圧3.3V / 5V
インターフェースI^2^C
デフォルトI^2^Cアドレス0x03
サイズ長さ: 40mm 幅: 20mm 高さ: 10mm
重量4.1g
パッケージサイズ長さ: 140mm 幅: 90mm 高さ: 10mm
総重量10g

応用例

  • ゲームコントロール
  • 多機能コントロール

ハードウェア概要

ピンマップ


対応プラットフォーム

ArduinoRaspberry Pi
caution

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

はじめに

Arduinoで遊ぶ

ハードウェア

必要な材料

Seeeduino V4.2Base ShieldGrove - 5-Way Switch
画像を入力してください画像を入力してください画像を入力してください
今すぐ購入今すぐ購入今すぐ購入
note

1 USBケーブルを慎重に接続してください。そうしないとポートが損傷する可能性があります。内部に4本のワイヤーがあるUSBケーブルを使用してください。2本のワイヤーのケーブルではデータを転送できません。使用しているケーブルが不明な場合は、こちらをクリックして購入できます。

2 Groveモジュールは購入時にGroveケーブルが付属しています。Groveケーブルを紛失した場合は、こちらをクリックして購入できます。

  • ステップ 1. Grove - 5-Way SwitchをBase ShieldのI^2^Cポートに接続します。

  • ステップ 2. Grove - Base ShieldをSeeeduinoに差し込みます。

  • ステップ 3. USBケーブルを使用してSeeeduinoをPCに接続します。

note

Grove Base Shieldがない場合は、以下のようにこのモジュールをSeeeduinoに直接接続することもできます。

SeeeduinoGrove - 5-Way Switch
5V
GND
SDA
SCL黄色

ソフトウェア

caution

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

  • ステップ 1. GithubからGrove Multi Switchライブラリをダウンロードします。

  • ステップ 2. ライブラリのインストール方法を参照して、Arduino用のライブラリをインストールします。

  • ステップ 3. Arduino IDEを再起動します。次のパスで例を開きます: File --> Examples --> Grove Multi Switch Library --> Grove_Switch_Events

または、コードブロックの右上にあるアイコン をクリックして、以下のコードをArduino IDEの新しいスケッチにコピーすることもできます。

#include "Grove_Multi_Switch.h"

GroveMultiSwitch mswitch[1];
const char* grove_5way_tactile_keys[] = {
"KEY A",
"KEY B",
"KEY C",
"KEY D",
"KEY E",
};
const char* grove_6pos_dip_switch_keys[] = {
"POS 1",
"POS 2",
"POS 3",
"POS 4",
"POS 5",
"POS 6",
};

const char** key_names;

int deviceDetect(void) {
if (!mswitch->begin()) {
Serial.println("***** デバイスの検出に失敗しました *****");
return -1;
}

Serial.println("***** デバイスの検出成功 *****");
if (PID_VAL(mswitch->getDevID()) == PID_5_WAY_TACTILE_SWITCH) {
Serial.println("Grove 5-Way Tactile Switchが挿入されました!");
key_names = grove_5way_tactile_keys;
} else if (PID_VAL(mswitch->getDevID()) == PID_6_POS_DIP_SWITCH) {
Serial.println("Grove 6-Position DIP Switchが挿入されました!");
key_names = grove_6pos_dip_switch_keys;
}

// イベント検出を有効化
mswitch->setEventMode(true);

// デバイスモデルを報告
Serial.print("A ");
Serial.print(mswitch->getSwitchCount());
Serial.print(" ボタン/スイッチデバイス ");
Serial.println(mswitch->getDevVer());
return 0;
}

void setup()
{
Serial.begin(115200);
Serial.println("Grove Multi Switch");

// 初期デバイス検出
if (deviceDetect() < 0) {
Serial.println("Grove 5-Way Tactileを挿入してください");
Serial.println("またはGrove 6-Position DIP Switchを挿入してください");
for (;;);
}

return;
}

void loop()
{
GroveMultiSwitch::ButtonEvent_t* evt;

delay(1);

evt = mswitch->getEvent();
if (!evt) {
// 動的デバイス検出
deviceDetect();
delay(1000);
return;
}

if (!(evt->event & GroveMultiSwitch::BTN_EV_HAS_EVENT)) {
#if 0
Serial.print("イベントなし、エラーコード = ");
Serial.println(mswitch->errno);
#endif
return;
}

for (int i = 0; i < mswitch->getSwitchCount(); i++) {
Serial.print(key_names[i]);
Serial.print(": RAW - ");
Serial.print((evt->button[i] & GroveMultiSwitch::BTN_EV_RAW_STATUS)?
"HIGH ": "LOW ");
if (PID_VAL(mswitch->getDevID()) == PID_5_WAY_TACTILE_SWITCH) {
Serial.print((evt->button[i] & GroveMultiSwitch::BTN_EV_RAW_STATUS)?
"RELEASED ": "PRESSED ");
} else if (PID_VAL(mswitch->getDevID()) == PID_6_POS_DIP_SWITCH) {
Serial.print((evt->button[i] & GroveMultiSwitch::BTN_EV_RAW_STATUS)?
"OFF ": "ON ");
}
Serial.println("");
}

for (int i = 0; i < mswitch->getSwitchCount(); i++) {
if (evt->button[i] & ~GroveMultiSwitch::BTN_EV_RAW_STATUS) {
Serial.println("");
Serial.print(key_names[i]);
Serial.print(": EVENT - ");
}
if (evt->button[i] & GroveMultiSwitch::BTN_EV_SINGLE_CLICK) {
Serial.print("SINGLE-CLICK ");
}
if (evt->button[i] & GroveMultiSwitch::BTN_EV_DOUBLE_CLICK) {
Serial.print("DOUBLE-CLICK ");
}
if (evt->button[i] & GroveMultiSwitch::BTN_EV_LONG_PRESS) {
Serial.print("LONG-PRESS ");
}
if (evt->button[i] & GroveMultiSwitch::BTN_EV_LEVEL_CHANGED) {
Serial.print("LEVEL-CHANGED ");
}
}
Serial.println("");
}

  • ステップ 4. デモをアップロードします。コードのアップロード方法がわからない場合は、コードのアップロード方法を確認してください。

  • ステップ 5. Arduino IDEのシリアルモニターを開くには、Tool-> Serial Monitorをクリックします。または++ctrl+shift+m++キーを同時に押します。ボーレートを115200に設定します。

success

すべてが正常に動作すれば、結果が得られます。KEY Eを押すと、KEY E: RAW - LOW PRESSEDがトリガーされます。

Grove マルチスイッチ
***** デバイスプローブ デバイス BN-5E-0.1
Grove マルチスイッチ
***** デバイスプローブ OK *****
Grove 5-Way タクタイルスイッチが挿入されました!
5 ボタン/スイッチ デバイス BN-5E-0.1
キー A: RAW - HIGH RELEASED
キー B: RAW - HIGH RELEASED
キー C: RAW - HIGH RELEASED
キー D: RAW - HIGH RELEASED
キー E: RAW - LOW PRESSED

キー E: イベント - レベル変更
キー A: RAW - HIGH RELEASED
キー B: RAW - HIGH RELEASED
キー C: RAW - HIGH RELEASED
キー D: RAW - HIGH RELEASED
キー E: RAW - HIGH RELEASED

キー E: イベント - シングルクリック レベル変更
キー A: RAW - LOW PRESSED
キー B: RAW - HIGH RELEASED
キー C: RAW - HIGH RELEASED
キー D: RAW - HIGH RELEASED
キー E: RAW - HIGH RELEASED

キー A: イベント - レベル変更
キー A: RAW - HIGH RELEASED
キー B: RAW - HIGH RELEASED
キー C: RAW - HIGH RELEASED
キー D: RAW - HIGH RELEASED
キー E: RAW - HIGH RELEASED

回路図オンラインビューア

リソース

プロジェクト

これはこの製品の紹介ビデオであり、簡単なデモを含んでいます。ぜひお試しください。

技術サポート & 製品ディスカッション


弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。
Loading Comments...