Tips
LED表示の意味
USBのオス側を下にした状態で左側のLEDがLED1、右側がLED2です。
状態 | パターン |
---|---|
起動 | LED2が3回点滅 |
接続先を探索中 | LED2が5秒間隔で点滅 |
接続完了 | LED2が長めに1回点灯 |
キー入力などのイベント | LED1が点滅 |
自作キーボードを無線化する
無線関連の制御キーの割り当て
自作キーボードを無線化する目的でQuantizer Bを使用する場合は、キーマップのカスタマイズは基本的に自作キーボード側で実現することをお勧めします。
そして、F13以降やLang5以降など使用頻度の低いキーを自作キーボードに割り当ててQuantizerで無線関連のキーに置き換えることで、Quantizerを介さずに有線接続したときの利便性を損なうことなく無線化を実現できます。
モバイルバッテリーを長持ちさせるには
モバイルバッテリーを長持ちさせるにはキーボード本体の消費電流を減らす必要があります。 市販のキーボードはどうすることもできませんが、自作キーボードであれば部品やファームウェアの工夫によって消費電流を減らすことができます。
LEDをつけない
LEDを点灯させると(Quantizerに比べて)大量の電流が流れます。 自作キーボードでよく使われるシリアルタイプのLED(sk6812miniなど)は点灯させていなくても常時1mA/1個くらい流れ続けてしまいます。
したがって、そもそもシリアルLEDをはんだ付けしないか、FETで単色LEDを制御するタイプの構成をおすすめします。
適度にマイコンをスリープさせる
ATmega32U4(pro microなど)の上でQMKを動かすと、数kHzでマトリクスをスキャンします(左右通信、OLEDなどを有効にすると遅くなります)。
QMKのデフォルト設定ではキーレポートのポーリングレートは(125Hz)なので、数kHzのスキャンレートは明らかに過剰性能です。
例えばmatrix_scan_user
に下記のコードを追加することで、スキャンレートを落とし、余った時間はマイコンを省電力モードにできます。
#include "timer.h"
#include <avr/sleep.h>
#define SCAN_PERIOD_MS 2
void matrix_scan_user(void) {
// 現在の時間を取得
volatile uint16_t t = timer_read();
// スリープモードを有効にする
set_sleep_mode(0);
sleep_enable();
sei();
// 一定時間が経過するまでCPUをスリープさせる
do {
// 割り込みが発生するまでスリープする
sleep_cpu();
// 指定時間経過していなかったらもう一度スリープする
} while (timer_elapsed(t) < SCAN_PERIOD_MS);
// スリープモードを無効にする
sleep_disable();
}