ATOM LiteでタッチBTキーボード

 これの改良。

ATOM Liteで1ボタンBTキーボード|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/8752544

 ATOM Liteで1ボタンBTキーボード 2024年10月28日 08:00  さて、買ったATOM Liteだけど、ボタンの押しごこちはいいので、なんかに使えないかと考えてみる。  ポテチを食べながら、Xのタイムラインを読むのに下カーソルボタンにするのがよさげだな。電池ないけど、そこはまぁいいか。充電しないと使えないのだけど、使おうとして電池切れているとムキーってなるしね。充電する... 全体公開 kinneko

 ATOM Liteのスイッチが重くて、Xのスクロール用にはちょっと指が疲れる感じ。タッチセンサを手配して、テストはうまくいったので、BTキーボードのスケッチに組み込む。

 スケッチはこんな感じかな。

 #include <M5Atom.h>

 #include <BleKeyboard.h>

 BleKeyboard bleKeyboard("XDownCursor");

 const int touchPin = 32;

 const int ledPin = 22;

 unsigned long touchStartTime = 0;

 const unsigned long touchThreshold = 50;

 void setup() {

 M5.begin(true, false, true);

 bleKeyboard.begin();

 pinMode(touchPin, INPUT);

 pinMode(ledPin, OUTPUT);

 digitalWrite(ledPin, LOW);

 }

 void loop() {

 if (bleKeyboard.isConnected()) {

 int touchState = digitalRead(touchPin);

 if (touchState == LOW) {

 if (touchStartTime == 0) {

 touchStartTime = millis();

 }

 if (millis() - touchStartTime > touchThreshold) {

 bleKeyboard.write(KEY_DOWN_ARROW);

 digitalWrite(ledPin, HIGH);

 M5.dis.drawpix(0, CRGB::Red);

 }

 } else {

 touchStartTime = 0;

 digitalWrite(ledPin, LOW);

 M5.dis.drawpix(0, CRGB::Black);

 }

 delay(50);

 M5.update();

 }

 }

 キーリピートに間が空きすぎかな。かなりカクカクとスクロールする。

 ウエイトを10msにしたら、BleKeyboardが落ちるかな?

 10msにしたら、こんどはリピートが早すぎた。20msくらいがいいのかな?

 20msでも、ちょっと早いかも。このへんは好みだろうけど。30msで試す。

 なんか微妙だな。

 逆に100msにしてみる。あれ?BLEデバイスとして表示されなくなった...

 60msにしたら、見えるけど接続できない。単体ではLEDつくので動いているがわかる。そのうち見えなくなった。

 どうやら、先にMBAのほうが掴んでしまっていたようだ。

 touchThresholdを100にしてみる。ディレイが微妙に遅すぎか... 200でやってみる。

 300にすると、わりといい感じで鈍いので、タッチしたままのリピートスクロールで制御しやすい。

 500くらいにすると、開始時の反応が鈍くなるけど感覚的には押し込んで動くくらいのいい感じのディレイ感ではある。自動リピート感も悪くない。指を離したときの過剰反応がなくなっていいかも。

 インタラクションには、適度に反応を鈍くするってことも、結構だいじね。

 MBPのタッチパッドの二本指スクロールにはかなわないけど、使える感じではある。しばらく使ってみるかな。


オリジナル投稿:
ATOM LiteでタッチBTキーボード|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/8902846