Grove-Mech keycap
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Grove-Mech keycapは、内蔵LEDを備えたメカニカルスイッチです。255色のフルカラーRGB LEDにより、スイッチの状態を簡単に表示することができます。このキーキャップは非常に信頼性が高く、2,000万回の押下操作寿命を持っています。
このモジュールは、楽しいプロジェクトや製品を作るための興味深く安定したモジュールであることがわかるでしょう。実際、複数のGrove-Mechキーキャップを使用してメカニカルキーボードを作ることも可能です。
2,000万回の操作は、負荷なしで1分間に300回の速度で連続して行うことができます。
特徴
- プログラム可能なLED
- 信頼性の高いメカニカル構造
- 非常に長い操作寿命
仕様
項目 | 値 |
---|---|
動作電圧 | 3V-5V |
絶縁抵抗 | 100MΩ 最小 |
接触抵抗 | 200mΩ 最大 |
負荷なしの操作寿命 | 2,000万回 |
応用例
- 自動車機器
- 視覚機器
- 家庭用電気製品
- 情報機器
ハードウェア
ピンマップ
回路図
K1はボタンに接続されています。キーが開いているとき、SIG1はR2によってプルダウンされ、SIG1の出力は低くなります。
ボタンが押されると、K1が閉じ、SIG1がVCCに接続され、SIG1の出力が高くなります。
このセクションでは回路図の一部のみを示しています。完全なドキュメントについてはResourcesをご参照ください。
対応プラットフォーム
Arduino | Raspberry Pi | |||
---|---|---|---|---|
![]() | ![]() | ![]() | ![]() | ![]() |
上記で対応プラットフォームとして挙げられているものは、モジュールのソフトウェアまたは理論的な互換性を示しています。ほとんどの場合、Arduinoプラットフォーム用のソフトウェアライブラリまたはコード例のみを提供しています。すべての可能なMCUプラットフォームに対してソフトウェアライブラリやデモコードを提供することはできません。そのため、ユーザー自身でソフトウェアライブラリを作成する必要があります。
はじめに
Arduinoを初めて使用する場合は、開始する前にArduinoの使い方をご覧になることを強くお勧めします。
Arduinoで遊ぶ
ハードウェア
必要な材料
Seeeduino V4.2 | Base Shield | Grove-Mech keycap |
---|---|---|
![]() | ![]() | ![]() |
今すぐ購入 | 今すぐ購入 | 今すぐ購入 |
ステップ 1. Grove-Mech keycapをGrove-Base ShieldのポートD2に接続します。
ステップ 2. Grove - Base ShieldをSeeeduinoに差し込みます。
ステップ 3. USBケーブルを使用してSeeeduinoをPCに接続します。
Grove Base Shieldがない場合は、以下のようにGrove-Mech keycapをSeeeduinoに直接接続することもできます。
Seeeduino | Grove-Mech keycap |
---|---|
5V | 赤 |
GND | 黒 |
D3 | 白 |
D2 | 黄色 |
ソフトウェア
ステップ 1. Adafruit_NeoPixel-masterライブラリをGithubからダウンロードします。
ステップ 2. Arduinoライブラリのインストール方法を参照して、Arduino用のライブラリをインストールします。
ステップ 3. Arduino IDEを開き、新しいファイルを作成して、以下のコードを新しいファイルにコピーします。
/**
* これはGrove - Mech Keycapの例です。
* キーを押すたびにSK6805 RGB LEDの色が変わります。SK6805はNeoPixel互換のチップです。
*
* クレジット:
* Adafruit_NeoPixel - https://github.com/adafruit/Adafruit_NeoPixel/blob/master/COPYING
*/
#include <Adafruit_NeoPixel.h>
#define BUTTON_PIN 2 // ボタンに接続されたデジタルIOピン。このピンはプルアップ抵抗で駆動されるため、
// スイッチは一時的にピンをグランドに引き下げます。高 -> 低の変化でボタン押下ロジックが実行されます。
#define PIXEL_PIN 3 // NeoPixelsに接続されたデジタルIOピン。
#define PIXEL_COUNT 60
// パラメータ1 = ストリップ内のピクセル数、neopixel stickは8
// パラメータ2 = ピン番号(ほとんどが有効)
// パラメータ3 = ピクセルタイプフラグ、必要に応じて加算:
// NEO_RGB ピクセルはRGBビットストリーム用に配線されています
// NEO_GRB ピクセルはGRBビットストリーム用に配線されています(neopixel stickに適しています)
// NEO_KHZ400 400 KHzビットストリーム(例: FLORAピクセル)
// NEO_KHZ800 800 KHzビットストリーム(例: 高密度LEDストリップ)、neopixel stickに適しています
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
bool oldState = LOW;
uint8_t color_pos = 0;
int i=0;
int longpress=2000;
long timecheck;
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
strip.begin();
strip.clear();
strip.show(); // すべてのピクセルを「オフ」に初期化
Serial.begin(9600);
}
void loop()
{
// 現在のボタン状態を取得
bool newState = digitalRead(BUTTON_PIN);
// 状態が低から高に変化したか(ボタン押下)を確認
if (newState == HIGH && oldState == LOW) {
timecheck = millis();
// ボタンのデバウンスのための短い遅延
delay(20);
// デバウンス後にボタンがまだ低いか確認
newState = digitalRead(BUTTON_PIN);
if (newState == HIGH){
color_pos+=8;
strip.setPixelColor(0, Wheel(color_pos));
strip.show();
}
}
if( millis()-timecheck > 300)
{
if (digitalRead(BUTTON_PIN)==HIGH)
{
if(millis()-timecheck > longpress)
{
while(digitalRead(BUTTON_PIN) == HIGH)
{
strip.setPixelColor(0,Wheel(color_pos));
strip.show();
delay(300);
strip.setPixelColor(0,0,0,0);
strip.show();
delay(300);
bool newState = digitalRead(BUTTON_PIN);
}
strip.setPixelColor(0,0,0,0);
strip.show();
timecheck = millis();
}
}
}
// 最後のボタン状態を古い状態に設定
oldState = newState;
}
// 0から255の値を入力して色の値を取得
// 色はr - g - b - rに戻る遷移です
uint32_t Wheel(byte WheelPos) {
WheelPos = 255 - WheelPos;
if(WheelPos < 85) {
return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
}
if(WheelPos < 170) {
WheelPos -= 85;
return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
}
WheelPos -= 170;
return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
}
ステップ 4. デモをアップロードします。コードのアップロード方法がわからない場合は、コードのアップロード方法をご確認ください。
ステップ 5. Grove-Mech Keycapを押すたびに、LEDの色が変わるのがわかります。ボタンを約2秒間押し続けると、呼吸ライト効果が表示されます。
Raspberry Piで遊ぶ
ハードウェア
- ステップ 1. このプロジェクトで使用するもの:
Raspberry Pi | Grove Base Hat for RasPi | Grove - Mech Keycap |
---|---|---|
![]() | ![]() | ![]() |
今すぐ購入 | 今すぐ購入 | 今すぐ購入 |
- Step 2. Grove Base Hat を Raspberry に接続します。
- Step 3. Grove - Mech Keycap を Base Hat の PWM ポート(ポート 12)に接続します。
PWM 機能のピンは以下のピン列の値のいずれかを使用し、対応するスロットにデバイスを接続してください。
ピン | スロット |
---|---|
18 | D18 |
12 | PWM |
- Step 4. Raspberry Pi を USB ケーブルを使用して PC に接続します。
ソフトウェア
- Step 1. Setting Software に従って開発環境を設定します。
- Step 2. grove.py ライブラリをクローンしてソースファイルをダウンロードします。
cd ~
git clone https://github.com/Seeed-Studio/grove.py
- Step 3. 以下のコマンドを実行してコードを実行します。
cd grove.py/grove
sudo python grove_mech_keycap.py 12
Unix には「セキュリティモデル」があります。通常のユーザーとしては、いくつかの操作が可能ですが、同じコンピュータ上の他の人のファイルにアクセスすることはできません。また、ユーザーとしてコンピュータが動作を停止する原因を作ることもできません。"/dev/mem" は GPIO を変更する以上の「いたずら」を許可するため、通常のユーザーから保護する必要があります。そのため、このコードを実行するには、コマンドラインで sudo python grove_mech_keycap.py を入力する必要があります。
以下は grove_mech_keycap.py のコードです。
import time
from grove.button import Button
from grove.factory import Factory
class GroveKeycap(object):
def __init__(self, pin):
# High = 押された状態
self.__btn = Factory.getButton("GPIO-HIGH", pin)
# 単一の WS2812 LED
self.__led = Factory.getOneLed("WS2812-PWM", pin + 1)
self.__on_event = None
self.__btn.on_event(self, GroveKeycap.__handle_event)
@property
def on_event(self):
return self.__on_event
@on_event.setter
def on_event(self, callback):
if not callable(callback):
return
self.__on_event = callback
def __handle_event(self, evt):
# print("event index:{} event:{} pressed:{}".format(evt['index'], evt['code'], evt['presesed']))
if callable(self.__on_event):
self.__on_event(evt['index'], evt['code'], evt['time'])
return
self.__led.brightness = self.__led.MAX_BRIGHT
event = evt['code']
if event & Button.EV_SINGLE_CLICK:
self.__led.light(True)
print("LED をオンにします")
elif event & Button.EV_DOUBLE_CLICK:
self.__led.blink()
print("LED を点滅させます")
elif event & Button.EV_LONG_PRESS:
self.__led.light(False)
print("LED をオフにします")
Grove = GroveKeycap
def main():
from grove.helper import SlotHelper
sh = SlotHelper(SlotHelper.PWM)
pin = sh.argv2pin()
ledbtn = GroveKeycap(pin)
# 以下の ''' ペアを削除して実験を開始してください
'''
# カスタマイズされたイベントハンドラを定義
def cust_on_event(index, event, tm):
print("コード {}, 時間 {}".format(event, tm))
ledbtn.on_event = cust_on_event
'''
while True:
time.sleep(1)
if __name__ == '__main__':
main()
すべてが正常に動作すれば、以下の結果が表示されます。キーキャップをシングルクリックすると「LED をオンにします」が表示され、ダブルクリックすると「LED を点滅させます」が表示されます。キーキャップを長押しすると「LED をオフにします」が表示されます。
pi@raspberrypi:~/grove.py/grove $ sudo python grove_mech_keycap.py 12
Hat Name = 'Grove Base Hat RPi'
LED をオンにします
LED をオンにします
LED を点滅させます
LED をオンにします
LED をオフにします
^CTraceback (most recent call last):
File "grove_mech_keycap.py", line 98, in <module>
main()
File "grove_mech_keycap.py", line 94, in main
time.sleep(1)
KeyboardInterrupt
このプログラムを終了するには、++ctrl+c++ を押すだけです。
回路図オンラインビューア
リソース
- [Zip] Grove-Mech Keycap eagle ファイル
- [Zip] Adafruit_NeoPixel-master
- [PDF] スイッチの製品概要
プロジェクト
こちらはこの製品の紹介動画です。簡単なデモが含まれており、試してみることができます。
技術サポートと製品ディスカッション
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルをご用意しています。