Skip to main content

Grove - 6-Position DIPスイッチ

note

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

Grove - 6-Position DIPスイッチは、6つの個別スイッチポジションを持ち、I2Cを使用してデータを送信します。マルチチャンネル制御スイッチとして非常に優れています。

バージョン

製品バージョン変更点リリース日
Grove - 6-Position DIPスイッチ初期リリース2018年6月

特徴

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

仕様

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

応用例

  • 多機能制御

ハードウェア概要

ピンマップ

対応プラットフォーム

ArduinoRaspberry Pi
caution

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

はじめに

Arduinoで遊ぶ

ハードウェア

必要な材料

Seeeduino V4.2Base ShieldGrove - 6-Position DIP Switch
今すぐ購入今すぐ購入今すぐ購入
note

1 USBケーブルを優しく差し込んでください。そうしないとポートが損傷する可能性があります。内部に4本の線があるUSBケーブルを使用してください。2本線のケーブルではデータを転送できません。お持ちのケーブルが適切かどうかわからない場合は、こちらをクリックして購入できます。

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

  • ステップ 1. Grove - 6-Position DIP SwitchをBase ShieldのI2Cポートに接続します。

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

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

note

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

SeeeduinoGrove - 6-Position DIP 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("イベントなし, errno = ");
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("シングルクリック ");
}
if (evt->button[i] & GroveMultiSwitch::BTN_EV_DOUBLE_CLICK) {
Serial.print("ダブルクリック ");
}
if (evt->button[i] & GroveMultiSwitch::BTN_EV_LONG_PRESS) {
Serial.print("長押し ");
}
if (evt->button[i] & GroveMultiSwitch::BTN_EV_LEVEL_CHANGED) {
Serial.print("レベル変更 ");
}
}
Serial.println("");
}

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

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

success

すべてが正常に動作していれば、結果が表示されます。例えば、デフォルトではスイッチがオフ(High)になっていますが、Switch6ON にすると、出力は POS 6: RAW - LOW ON になります。

Grove Multi Switch
***** デバイスプローブ OK *****
Grove 6-Position DIP Switch 挿入済み!
A 6 ボタン/スイッチ デバイス BN-6--0.1
POS 1: RAW - HIGH OFF
POS 2: RAW - HIGH OFF
POS 3: RAW - HIGH OFF
POS 4: RAW - HIGH OFF
POS 5: RAW - HIGH OFF
POS 6: RAW - LOW ON

POS 6: EVENT - LEVEL-CHANGED
POS 1: RAW - LOW ON
POS 2: RAW - HIGH OFF
POS 3: RAW - HIGH OFF
POS 4: RAW - HIGH OFF
POS 5: RAW - HIGH OFF
POS 6: RAW - LOW ON

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

リソース

プロジェクト

この製品の紹介動画です。簡単なデモが含まれており、試してみることができます。

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

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

Loading Comments...