Grove - 5-Way Switch
この文書は 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 |
応用例
- ゲームコントロール
- 多機能コントロール
ハードウェア概要
ピンマップ
対応プラットフォーム
Arduino | Raspberry Pi | |||
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
上記で対応プラットフォームとして挙げられているものは、このモジュールのソフトウェアまたは理論的な互換性を示しています。ほとんどの場合、Arduinoプラットフォーム向けのソフトウェアライブラリやコード例のみを提供しています。すべての可能なMCUプラットフォーム向けにソフトウェアライブラリやデモコードを提供することはできません。そのため、ユーザー自身でソフトウェアライブラリを作成する必要があります。
はじめに
Arduinoで遊ぶ
ハードウェア
必要な材料
Seeeduino V4.2 | Base Shield | Grove - 5-Way Switch |
---|---|---|
![]() | ![]() | ![]() |
今すぐ購入 | 今すぐ購入 | 今すぐ購入 |
ステップ 1. Grove - 5-Way SwitchをBase ShieldのI^2^Cポートに接続します。
ステップ 2. Grove - Base ShieldをSeeeduinoに差し込みます。
ステップ 3. USBケーブルを使用してSeeeduinoをPCに接続します。
Grove Base Shieldがない場合は、以下のようにこのモジュールをSeeeduinoに直接接続することもできます。
Seeeduino | Grove - 5-Way Switch |
---|---|
5V | 赤 |
GND | 黒 |
SDA | 白 |
SCL | 黄色 |
ソフトウェア
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に設定します。
すべてが正常に動作すれば、結果が得られます。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
回路図オンラインビューア
リソース
プロジェクト
これはこの製品の紹介ビデオであり、簡単なデモを含んでいます。ぜひお試しください。
技術サポート & 製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、いくつかのコミュニケーションチャネルを用意しています。