DoctorMX用のスイッチをまた作る 3

昔のマウスが出てきたのでこれに仕込むことにしました。
開腹して、ケーブル、IC、コンデンサを外して、スイッチの回路を捜してつないでみた図。
動きました。
しかしチャタリングが酷くてワンクリックで二つも三つも進む。

プログラム修正しなくちゃ。
こういうのが面倒なんです。

作ってはみたものの、まだ実戦に投入してなかったデバウンスのためのライブラリを使って、全面的に書き直してみました。
#include <DebounceFunc.h>
#include <Keyboard.h>
const int BUTTON_PIN = 12;
const int LED_PIN = 13;
IsFALLING isFalling(50);
IsRISING isRising(50);
void setup() {
pinMode(BUTTON_PIN, INPUT_PULLUP);
pinMode(LED_PIN,OUTPUT);
digitalWrite(LED_PIN,LOW);
Keyboard.begin();
}
void loop(){
const int RAW_DATA = digitalRead(BUTTON_PIN);
if( isFalling(RAW_DATA) ) {
Keyboard.press(KEY_DOWN_ARROW);
digitalWrite(LED_PIN,HIGH);
}
if( isRising(RAW_DATA) ) {
Keyboard.releaseAll();
digitalWrite(LED_PIN,LOW);
}
delay(1);
}

すっきり。てか最初から使えっていう話。
デフォルトでは怪しかったのでデバウンスタイムを50msまで伸ばしてみました。
ちゃんと一回で止まります。

ダウンロード、使い方は、リンクから。

コメント