USBデバイスが作りたいんじゃ：フットスイッチ

# はじめに

第２回「USBデバイスが作りたいんじゃ」。今回はフットスイッチ編。
（第１回はコチラ：「[USBデバイスが作りたいんじゃ：CPUメーター](https://qiita.com/nori-dev-akg/items/b313599665977f305ed8)」）
フットスイッチとは、足でマウスやキーボード操作をさせようというもの。
一般的には以下のようなもの。


>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/83bc89c3-f770-4f47-2b99-a1e57d006e9e.png)

※Google画像検索より


今回は、１ペダル式で１ボタンキーボードのようなものを作る。すでにAmazonで1,500円程度で売られている。

## 先に完成品
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/59a619e1-aefc-e2fb-b6a9-f5cf787cc0db.png" width=50%>

見た目は、市販品とほぼ同じ。

#ハード
* Digispark（[Amazonで300円/1個 程度](https://www.amazon.co.jp/s?k=digispark+attiny85)）
* [フットペダルスイッチ：私が買ったもの。Amazonで700円](https://www.amazon.co.jp/dp/B07L6M6ZGV/)
* USBケーブル（使わなくなったマウスやキーボードなどを再利用。なければダイソーなど）

1,000円でできる！！手間を考えれば買った方が安い。
中華製の制御ソフトを入れないで良いという利点がある！

# 組み立て

### 1. フットペダルスイッチを分解する
このフットスイッチは汎用的に使えるようにケーブルの先端には何も付いておらず導線が剥き出し状態（だから安い）。
ケーブルはケース内のスイッチにハンダ付けされているが、スイッチから5cm辺りで切って使う。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/f46940a1-5259-9092-61df-a624a059a063.png" width=50%>
支点となる金属の棒のところにあるネジを外すと棒が（写真では棒が刺さっているが）抜けるので簡単に開く。その際、バネが固定されていないので飛ばないように慎重に開く。

### 2. スイッチを外す
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/cbc202f8-3722-c7c3-dc5f-76154655846e.png" width=50%>
黒赤白のケーブルが一つにまとめられているので、5cm ほど残してちょん切る。（上記黄色線辺りで）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/1d067874-f1af-bd8d-4bae-c9c03468119a.png" width=50%>
スイッチがネジで固定されているので外すと上記のように取り出せる。人差し指辺りの黒いのがボタン。



### 3. Digisparkと結線する
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/51c4fe69-aba7-9985-3648-53267a755d64.png" width=50%>

使わなくなったマウスなどから USBケーブル を切り出してきて Digisparkと結線する。上記、黒緑白赤。
前述で 5cm ほど残して切ったスイッチ側の 赤－P0、白－GND、黒－未使用。スイッチをONするとP0とGNDが繋がるように。**USBケーブルとDigisparkをハンダする前にUSBケーブルはケース穴に通しておく（黒赤白ケーブルが通っていた穴）。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/ff7690f9-de48-4df1-3efd-b7ba287aa852.png)

### 4. ケースに収める
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/203949/4450a9cf-5d74-5a97-7537-c7d9c2b38b6f.png" width=50%>
（ポリミイドテープでグルグル巻になっていますが）ケースに固定する。

# Digispark
セットアップは主旨ではないので Digisparkに付いては割愛します。

#ソース
P0ピンを内部プルアップして入力として使う：```pinMode(0, INPUT_PULLUP);```
スイッチがONになると P0ピン がGND に落ちるので、それを監視する。
下記では、P0ピンが 0 になれば、 PCに ```Hello Digispark!``` を送信する。

ここを変えれば任意のキーを送信できる。
```DigiKeyboard.sendKeyStroke(KEY_ENTER);```
など。

```cpp:DigiFootKB.ino
#include "DigiKeyboard.h"

// the setup routine runs once when you press reset:
void setup() {                
    // initialize the digital pin as an input.
    pinMode(0, INPUT_PULLUP);
}

// the loop routine runs over and over again forever:
void loop() {
    if(digitalRead(0) == 0) {
        DigiKeyboard.sendKeyStroke(0);
        DigiKeyboard.println("Hello Digispark!");
    }
    DigiKeyboard.delay(10);
}
```

#動作確認

YoutTube
<iframe width="560" height="315" src="https://www.youtube.com/embed/zfr-PdHZq3o" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
足で押さないと意味ないですがカメラの都合上です。

# おわりに
作ってみたが実際にあまり用途が浮かばない。
おそろらくこのデバイスがあまり普及しないのは、この辺りにあるのだろう。
次回は、「フットペダル（シーソー式）」です。乞うご期待！