ゲーセンボタンを使ってKindleページ送り用の自作ワンボタンキーボードを作りました
Kindleアプリの快適なページ送りデバイスの探求
Kindleは下方向キーで次のページに移動するので、ワンボタンキーボードを自作し、それに下方向キーを設定する計画
ボタンはサンワのゲーセンボタン
Amazonで2個で900円弱
Pro Microという小さい基盤が必要
Amazonで2個で3000円弱
端子はUSB C
この基盤に下方向キー的なコードを書き込んで、ボタンと接続
Arduino IDEを使いました
下方向キーにしたのは、右めくりの本と左めくりの本の両方に対応するため
最初ブレットボードでやってたら接触悪くて反応しなかったが、いろいろ触っていたら反応した
昔電子工作に手を出したことがあったので、ケーブルとかブレッドボードが家にあった
わからないところは有料版のChatGPTにも聞いた
コードも問題なさそうなのでそのまま使った
コードはこんなの
code:Kindle DownArrow
#include <Keyboard.h> // キーボードエミュレーションライブラリを使用 const int buttonPin = 2; // サンワボタンを接続するピン(D2を使用)
int buttonState = 0; // ボタンの状態を格納する変数
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // ボタンピンをプルアップ入力モードに設定
Keyboard.begin(); // キーボード機能の初期化
}
void loop() {
buttonState = digitalRead(buttonPin); // ボタンの状態を読み取る
if (buttonState == LOW) { // ボタンが押された場合
Keyboard.press(KEY_DOWN_ARROW); // 下矢印キーを押す
delay(100); // 短い遅延を入れる
Keyboard.release(KEY_DOWN_ARROW); // 下矢印キーを離す
delay(200); // 連続入力を防ぐための遅延
}
ダイソーで絶縁テープ買って、電子工作用のケーブルを仮固定
ダンボールでボタンを固定
ボタン自体の高さがあるので、高さは5cmくらい必要
一つ目は通販で買った一般的な3cmのサンワのボタンで作った
秋葉原のパーツショップでサンワの4cmのボタンを売ってたので、それでもう一個作った
https://gyazo.com/2b16b7e19c4ad7c0bdae1add31e4994d
2個並べたとこ
かなり快適
PCを使いながら、ブラインドタッチ?でディスプレイの横に置いたiPadのページめくりができる
ケーブルの配線はやりなおすかも
少し変更して、ダンボールの土台は外して、むきだしで使っています
個人的にこれ使わないとiPadでマンガが読めないくらいになりました
なんか消費電力が大きい気がしたので、改善バージョンです
code:onebotton
#include <Keyboard.h> // キーボードエミュレーションライブラリを使用 const int buttonPin = 2; // サンワボタンを接続するピン(D2を使用)
int buttonState = 0; // ボタンの状態を格納する変数
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // ボタンピンをプルアップ入力モードに設定
Keyboard.begin(); // キーボード機能の初期化
// 低消費電力化
power_adc_disable(); // ADC(アナログ-デジタル変換)を無効化
power_spi_disable(); // SPI通信を無効化
power_twi_disable(); // I2C通信を無効化
power_usart0_disable(); // UART通信(シリアル)を無効化
}
void loop() {
buttonState = digitalRead(buttonPin); // ボタンの状態を読み取る
if (buttonState == LOW) { // ボタンが押された場合
Keyboard.press(KEY_DOWN_ARROW); // 下矢印キーを押す
delay(50); // 短い遅延を入れる
Keyboard.release(KEY_DOWN_ARROW); // 下矢印キーを離す
delay(150); // 連続入力を防ぐための遅延
// ボタンが離されるまで待つ(連続入力を防ぐ)
while (digitalRead(buttonPin) == LOW) {
delay(10); // 少し待ってから再チェック(CPU負荷を抑える)
}
}
}