Digisparkで果物をエンターキーにしてみた

ビッグエンターキーという無駄にデカいエンターキーがありますが、どんなものでもエンターキーになれば面白いんじゃないかと思ったので、果物や野菜など何でもエンターキーになるHIDデバイスを作ってみました。

## 環境
Arduino IDE 1.8.13
Digispark互換ボード

## 回路図
![enter-key-circuit.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/445338/9e417082-28c7-2c25-b448-c5f3bbc888d3.png)
0番ピンが送信ピンで、2番ピンが受信ピンになっています。0番ピンと2番ピンのの間には1MΩの抵抗が入っています。2番ピンと直列に0.1μFのコンデンサーをつなぎ、果物を接続します。

## スケッチ
```c++:enterkey.ino
#include <DigiKeyboard.h>

#define REPEAT_TIME 25
#define FIRST_REPEAT_TIME 500
#define KEYUP_THRESHOLD 50
#define KEYDOWN_THRESHOLD 75
#define OUT_PIN 0
#define IN_PIN 2

unsigned long timer = 0;
int keytimes = 0;

void setup() {
  pinMode(OUT_PIN, OUTPUT);
  pinMode(IN_PIN, INPUT);
}

int get_touch() {
  int t = 0;
  int i;
  for(i = 0; i < 10; i++){
    digitalWrite(OUT_PIN, HIGH);
    while(digitalRead(IN_PIN) != HIGH) t++;
    digitalWrite(OUT_PIN, LOW);
    pinMode(IN_PIN, OUTPUT);
    digitalWrite(IN_PIN, LOW);
    DigiKeyboard.delay(1);
    pinMode(IN_PIN, INPUT);
  }
  return t;
}

void loop() {
  int touch = get_touch();
  if(touch > KEYDOWN_THRESHOLD && (timer == 0 || keytimes >= 2)){
    DigiKeyboard.sendKeyStroke(0x28);
    DigiKeyboard.delay(REPEAT_TIME);
    keytimes = min(keytimes + 1, 2);
    timer = millis();
  }else{
    if(touch <= KEYUP_THRESHOLD){
      timer = 0;
      keytimes = 0;
    }
    DigiKeyboard.sendKeyStroke(0);
    DigiKeyboard.delay(REPEAT_TIME);
  }
  if(millis() >= timer + FIRST_REPEAT_TIME){
    timer = 0;
  }
}
```
## 書き込み
Arduino開発環境の設定方法はこの記事を参考にしてください。
[[メモ] Digispark(ATTiny85) Arduino開発環境で、Lチカ](https://qiita.com/mt08/items/df4ed8c659b205d1fa1e "[メモ] Digispark(ATTiny85) Arduino開発環境で、Lチカ")

設定が終わったら、Arduino IDEで
```ツール``` > ```ボード``` > ```Digispark (Default - 16.5mhz)```を選択します。
```マイコンボードに書き込む```をクリック。USBを抜き差しすると書き込みができます。
##デモ
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">バナナでエンターキーを自作してみた。<br>バナナを触ると改行できる。キーリピート機能付き。<br>使用マイコン：Digispark互換ボード<br>スケッチ：<a href="https://t.co/5r86NADCTF">https://t.co/5r86NADCTF</a><a href="https://twitter.com/hashtag/%E3%83%90%E3%83%8A%E3%83%8A?src=hash&amp;ref_src=twsrc%5Etfw">#バナナ</a> <a href="https://twitter.com/hashtag/%E3%82%A8%E3%83%B3%E3%82%BF%E3%83%BC%E3%82%AD%E3%83%BC?src=hash&amp;ref_src=twsrc%5Etfw">#エンターキー</a> <a href="https://twitter.com/hashtag/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#キーボード</a> <a href="https://twitter.com/hashtag/%E8%87%AA%E4%BD%9C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89?src=hash&amp;ref_src=twsrc%5Etfw">#自作キーボード</a> <a href="https://twitter.com/hashtag/HID?src=hash&amp;ref_src=twsrc%5Etfw">#HID</a> <a href="https://twitter.com/hashtag/USB?src=hash&amp;ref_src=twsrc%5Etfw">#USB</a> <a href="https://twitter.com/hashtag/%E9%9B%BB%E5%AD%90%E5%B7%A5%E4%BD%9C?src=hash&amp;ref_src=twsrc%5Etfw">#電子工作</a> <a href="https://twitter.com/hashtag/%E3%82%AC%E3%82%B8%E3%82%A7%E3%83%83%E3%83%88?src=hash&amp;ref_src=twsrc%5Etfw">#ガジェット</a> <a href="https://twitter.com/hashtag/Digispark?src=hash&amp;ref_src=twsrc%5Etfw">#Digispark</a> <a href="https://twitter.com/hashtag/Arduino?src=hash&amp;ref_src=twsrc%5Etfw">#Arduino</a> <a href="https://t.co/bJZXKM0GxU">pic.twitter.com/bJZXKM0GxU</a></p>&mdash; naoto64 (@naoto64_2000) <a href="https://twitter.com/naoto64_2000/status/1353236330239516673?ref_src=twsrc%5Etfw">January 24, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>