aboutsummaryrefslogtreecommitdiff
path: root/docs/ja/feature_backlight.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/ja/feature_backlight.md')
-rw-r--r--docs/ja/feature_backlight.md253
1 files changed, 253 insertions, 0 deletions
diff --git a/docs/ja/feature_backlight.md b/docs/ja/feature_backlight.md
new file mode 100644
index 000000000..e722656b7
--- /dev/null
+++ b/docs/ja/feature_backlight.md
@@ -0,0 +1,253 @@
1# バックライト
2
3<!---
4 original document: 5d5ff80:docs/feature_backlight.md
5 git diff 5d5ff80 HEAD -- docs/feature_backlight.md | cat
6-->
7
8多くのキーボードは、キースイッチを貫通して配置されたり、キースイッチの下に配置された個々の LED によって、バックライトキーをサポートします。この機能は通常スイッチごとに単一の色しか使用できないため、[RGB アンダーグロー](ja/feature_rgblight.md)および [RGB マトリックス](ja/feature_rgb_matrix.md)機能のどちらとも異なりますが、キーボードに複数の異なる単一色の LED を取り付けることは当然可能です。
9
10QMK は *パルス幅変調*(*Pulse Width Modulation*) すなわち PWM として知られている技術で急速にオンおよびオフを切り替えることで、これらの LED の輝度を制御できます。PWM 信号のデューティサイクルを変えることで、調光の錯覚を起こすことができます。
11
12MCU は、GPIO ピンにはそんなに電流を供給できません。MCU から直接バックライトに給電せずに、バックライトピンは LED への電力を切り替えるトランジスタあるいは MOSFET に接続されます。
13
14## 機能の設定
15
16ほとんどのキーボードではバックライトをサポートしている場合にデフォルトで有効になっていますが、もし機能しない場合は `rules.mk` が以下を含んでいることを確認してください:
17
18```makefile
19BACKLIGHT_ENABLE = yes
20```
21
22## キーコード
23有効にすると、以下のキーコードを使ってバックライトレベルを変更することができます。
24
25| キー | 説明 |
26|---------|------------------------------------------|
27| `BL_TOGG` | バックライトをオンあるいはオフにする |
28| `BL_STEP` | バックライトレベルを循環する |
29| `BL_ON` | バックライトを最大輝度に設定する |
30| `BL_OFF` | バックライトをオフにする |
31| `BL_INC` | バックライトレベルを上げる |
32| `BL_DEC` | バックライトレベルを下げる |
33| `BL_BRTG` | バックライトの明滅動作を切り替える |
34
35## バックライト関数群
36
37| 関数 | 説明 |
38|----------|-----------------------------------------------------------|
39| `backlight_toggle()` | バックライトをオンあるいはオフにする |
40| `backlight_enable()` | バックライトをオンにする |
41| `backlight_disable()` | バックライトをオフにする |
42| `backlight_step()` | バックライトレベルを循環する |
43| `backlight_increase()` | バックライトレベルを上げる |
44| `backlight_decrease()` | バックライトレベルを下げる |
45| `backlight_level(x)` | バックライトのレベルを特定のレベルに設定する |
46| `get_backlight_level()` | 現在のバックライトレベルを返す |
47| `is_backlight_enabled()` | バックライトが現在オンかどうかを返す |
48
49### バックライトの明滅動作の関数群
50
51| 関数 | 説明 |
52|----------|---------------------------------------------------|
53| `breathing_toggle()` | バックライトの明滅動作をオンまたはオフにする |
54| `breathing_enable()` | バックライトの明滅動作をオンにする |
55| `breathing_disable()` | バックライトの明滅動作をオフにする |
56
57## ドライバの設定
58
59どのドライバを使うかを選択するには、以下を使って `rules.mk` を設定します:
60
61```makefile
62BACKLIGHT_DRIVER = software # 有効なドライバの値は 'pwm,software,no' です
63```
64
65各ドライバについてのヘルプは以下を見てください。
66
67## 共通のドライバ設定
68
69バックライトの挙動を変更するには、`config.h` の中で以下の `#define` をします:
70
71| 定義 | デフォルト | 説明 |
72|---------------------|-------------|--------------------------------------------------------------------------------------|
73| `BACKLIGHT_LEVELS` | `3` | 輝度のレベルの数 (オフを除いて最大 31) |
74| `BACKLIGHT_CAPS_LOCK` | *定義なし* | バックライトを使って Caps Lock のインジケータを有効にする (専用 LED の無いキーボードのため) |
75| `BACKLIGHT_BREATHING` | *定義なし* | サポートされる場合は、バックライトの明滅動作を有効にする |
76| `BREATHING_PERIOD` | `6` | 各バックライトの "明滅" の長さ(秒) |
77| `BACKLIGHT_ON_STATE` | `0` | バックライトが "オン" の時のバックライトピンの状態 - high の場合は `1`、low の場合は `0` |
78
79### バックライトオン状態
80
81ほとんどのバックライトの回路は N チャンネルの MOSFET あるいは NPN トランジスタによって駆動されます。これは、トランジスタを*オン*にして LED を点灯させるには、ゲートまたはベースに接続されているバックライトピンを *high* に駆動する必要があることを意味します。
82ただし、P チャンネルの MOSFET あるいは PNP トランジスタが使われる場合があります。この場合、トランジスタがオンの時、ピンは代わりに *low* で駆動されます。
83
84この機能は `BACKLIGHT_ON_STATE` 定義することでキーボードレベルで設定されます。
85
86## AVR ドライバ
87
88AVR ボードでは、デフォルトのドライバは現在のところ最善のシナリオを選択するために構成を探っています。ドライバはデフォルトで設定されますが、rules.mk 内の同等の設定は以下の通りです:
89```makefile
90BACKLIGHT_DRIVER = pwm
91```
92
93### 注意事項
94
95ハードウェア PWM は以下の表に従ってサポートされます:
96
97| バックライトピン | AT90USB64/128 | ATmega16/32U4 | ATmega16/32U2 | ATmega32A | ATmega328P |
98|-------------|-------------|-------------|-------------|---------|----------|
99| `B1` | | | | | Timer 1 |
100| `B2` | | | | | Timer 1 |
101| `B5` | Timer 1 | Timer 1 | | | |
102| `B6` | Timer 1 | Timer 1 | | | |
103| `B7` | Timer 1 | Timer 1 | Timer 1 | | |
104| `C4` | Timer 3 | | | | |
105| `C5` | Timer 3 | | Timer 1 | | |
106| `C6` | Timer 3 | Timer 3 | Timer 1 | | |
107| `D4` | | | | Timer 1 | |
108| `D5` | | | | Timer 1 | |
109
110他の全てのピンはソフトウェア PWM を使います。[オーディオ](ja/feature_audio.md)機能が無効あるいは1つのタイマだけを使っている場合は、ハードウェアタイマによってバックライト PWM を引き起こすことができます:
111
112| オーディオピン | オーディオタイマ | ソフトウェア PWM タイマ |
113|---------|-----------|------------------|
114| `C4` | Timer 3 | Timer 1 |
115| `C5` | Timer 3 | Timer 1 |
116| `C6` | Timer 3 | Timer 1 |
117| `B5` | Timer 1 | Timer 3 |
118| `B6` | Timer 1 | Timer 3 |
119| `B7` | Timer 1 | Timer 3 |
120
121両方のタイマーがオーディオのために使われている場合、バックライト PWM はハードウェアタイマを使いませんが、代わりにマトリックススキャンの間に引き起こされます。この場合、PWM の計算は十分なタイミングの精度で呼ばれないかもしれないため、バックライトの明滅はサポートされず、バックライトもちらつくかもしれません。
122
123### AVR 設定
124
125バックライトの挙動を変更するには、`config.h` の中で以下の `#define` をします:
126
127| 定義 | デフォルト | 説明 |
128|---------------------|-------------|--------------------------------------------------------------------------------------------------------------|
129| `BACKLIGHT_PIN` | `B7` | LED を制御するピン。自身のキーボードを設計している場合を除き、これを変更する必要はないはずです |
130| `BACKLIGHT_PINS` | *定義なし* | 実験的: 詳細は以下を見てください |
131| `BACKLIGHT_LEVELS` | `3` | 輝度のレベルの数 (オフを除いて最大 31) |
132| `BACKLIGHT_CAPS_LOCK` | *定義なし* | バックライトを使って Caps Lock のインジケータを有効にする (専用 LED の無いキーボードのため) |
133| `BACKLIGHT_BREATHING` | *定義なし* | サポートされる場合は、バックライトの明滅動作を有効にする |
134| `BREATHING_PERIOD` | `6` | 各バックライトの "明滅" の長さ(秒) |
135| `BACKLIGHT_ON_STATE` | `1` | バックライトが "オン" の時のバックライトピンの状態 - high の場合は `1`、low の場合は `0` |
136
137### バックライトオン状態
138
139ほとんどのバックライトの回路は N チャンネルの MOSFET あるいは NPN トランジスタによって駆動されます。これは、トランジスタを*オン*にして LED を点灯させるには、ゲートまたはベースに接続されているバックライトピンを *high* に駆動する必要があることを意味します。
140ただし、P チャンネルの MOSFET あるいは PNP トランジスタが使われる場合があります。この場合、トランジスタがオンの時、ピンは代わりに *low* で駆動されます。
141
142この機能は `BACKLIGHT_ON_STATE` 定義することでキーボードレベルで設定されます。
143
144### 複数のバックライトピン
145
146ほとんどのキーボードは、全てのバックライト LED を制御するたった1つのバックライトピンを持ちます (特にバックライトがハードウェア PWM ピンに接続されている場合)。
147ソフトウェア PWM では、複数のバックライトピンを定義することができます。これらすべてのピンは PWM デューティサイクル時に同時にオンおよびオフになります。
148この機能により、例えば Caps Lock LED (またはその他の制御可能な LED) の輝度を、バックライトの他の LED と同じレベルに設定することができます。Caps Lock の代わりに LCTRL をマップしていて、Caps Lock がオンの時に Caps Lock LED をアクティブにする代わりにバックライトの一部にする必要がある場合に便利です。
149
150複数のバックライトピンをアクティブにするには、`config.h` に次のようなものを追加する必要があります:
151
152```c
153#define BACKLIGHT_LED_COUNT 2
154#undef BACKLIGHT_PIN
155#define BACKLIGHT_PINS { F5, B2 }
156```
157
158### ハードウェア PWM 実装
159
160バックライト用にサポートされているピンを使う場合、QMK は PWM 信号を出力するように設定されたハードウェアタイマを使います。タイマーは 0 にリセットする前に `ICRx` (デフォルトでは `0xFFFF`) までカウントします。
161希望の輝度が計算され、`OCRxx` レジスタ内に格納されます。カウンタがこの値まで達すると、バックライトピンは low になり、カウンタがリセットされると再び high になります。
162このように `OCRxx` は基本的に LED のデューティサイクル、従って輝度を制御します。`0x0000` は完全にオフで、 `0xFFFF` は完全にオンです。
163
164明滅動作の効果はカウンタがリセットされる(秒間あたりおよそ244回)たびに呼び出される `TIMER1_OVF_vect` の割り込みハンドラを登録することで可能になります。
165このハンドラ内で、増分カウンタの値が事前に計算された輝度曲線にマップされます。明滅動作をオフにするには、割り込みを単純に禁止し、輝度を EEPROM に格納されているレベルに再設定します。
166
167### タイマーにアシストされた PWM 実装
168
169`BACKLIGHT_PIN` がハードウェアバックライトピンに設定されていない場合、QMK はソフトウェア割り込みを引き起こすように設定されているハードウェアタイマを使います。タイマーは 0 にリセットする前に `ICRx` (デフォルトでは `0xFFFF`) までカウントします。
1700 に再設定すると、CPU は LED をオンにする OVF (オーバーフロー)割り込みを発火し、デューティサイクルを開始します。
171希望の輝度が計算され、`OCRxx` レジスタ内に格納されます。カウンタがこの値に達すると、CPU は比較出力一致割り込みを発火し、LED をオフにします。
172このように `OCRxx` は基本的に LED のデューティサイクル、従って輝度を制御します。 `0x0000` は完全にオフで、 `0xFFFF` は完全にオンです。
173
174明滅の効果はハードウェア PWM 実装と同じです。
175
176## ARM ドライバ
177
178まだ初期段階ですが、ARM バックライトサポートは最終的に AVR と同等の機能を持つことを目指しています。ドライバはデフォルトで設定されますが、rules.mk 内の同等の設定は以下の通りです:
179```makefile
180BACKLIGHT_DRIVER = pwm
181```
182
183### 注意事項
184
185現在のところ、ハードウェア PWM のみがサポートされ、タイマーはアシストされず、自動設定は提供されません。
186
187?> STMF072 のバックライトサポートのテストは制限されています。人によって違うかもしれません。不明な場合は、rules.mk で `BACKLIGHT_ENABLE = no` を設定します。
188
189### ARM 設定
190
191バックライトの挙動を変更するには、`config.h` の中で以下の `#define` をします:
192
193| 定義 | デフォルト | 説明 |
194|------------------------|-------------|-------------------------------------------------------------------------------------------------------------|
195| `BACKLIGHT_PIN` | `B7` | LED を制御するピン。自身のキーボードを設計している場合を除き、これを変更する必要はないはずです |
196| `BACKLIGHT_PWM_DRIVER` | `PWMD4` | 使用する PWM ドライバ。ピンから PWM タイマへのマッピングについては、ST データシートを見てください。自身のキーボードを設計している場合を除き、これを変更する必要はないはずです |
197| `BACKLIGHT_PWM_CHANNEL` | `3` | 使用する PWM チャンネル。ピンから PWM チャンネルへのマッピングについては、ST データシートを見てください。自身のキーボードを設計している場合を除き、これを変更する必要はないはずです |
198| `BACKLIGHT_PAL_MODE` | `2` | 使用するピンの代替機能。ピンの AF マッピングについては ST データシートを見てください。自身のキーボードを設計している場合を除き、これを変更する必要はないはずです |
199
200## Software PWM Driver :id=software-pwm-driver
201
202他のキーボードのタスクを実行中に PWM をエミュレートすることにより、追加のプラットフォーム設定なしで最大のハードウェア互換性を提供します。トレードオフは、キーボードが忙しい時にバックライトが揺れる可能性があることです。有効にするには、rules.mk に以下を追加します:
203```makefile
204BACKLIGHT_DRIVER = software
205```
206
207### ソフトウェア PWM 設定
208
209バックライトの挙動を変更するには、`config.h` の中で以下の `#define` をします:
210
211| 定義 | デフォルト | 説明 |
212|-----------------|-------------|-------------------------------------------------------------------------------------------------------------|
213| `BACKLIGHT_PIN` | `B7` | LED を制御するピン。自身のキーボードを設計している場合を除き、これを変更する必要はないはずです |
214| `BACKLIGHT_PINS` | *定義なし* | 実験的: 詳細は以下を見てください |
215
216### 複数のバックライトピン
217
218ほとんどのキーボードは、全てのバックライト LED を制御するたった1つのバックライトピンを持ちます (特にバックライトがハードウェア PWM ピンに接続されている場合)。
219ソフトウェア PWM では、複数のバックライトピンを定義することができます。これらすべてのピンは PWM デューティサイクル時に同時にオンおよびオフになります。
220この機能により、例えば Caps Lock LED (またはその他の制御可能な LED) の輝度を、バックライトの他の LED と同じレベルに設定することができます。Caps Lock の代わりに LCTRL をマップしていて、Caps Lock がオンの時に Caps Lock LED をアクティブにする代わりにバックライトの一部にする必要がある場合に便利です。
221
222複数のバックライトピンをアクティブにするには、`config.h` に次のようなものを追加する必要があります:
223
224```c
225#undef BACKLIGHT_PIN
226#define BACKLIGHT_PINS { F5, B2 }
227```
228
229## カスタムドライバ
230
231有効にするには、rules.mk に以下を追加します:
232
233```makefile
234BACKLIGHT_DRIVER = custom
235```
236
237カスタムドライバ API を実装する場合、提供されるキーボードフックは以下の通りです:
238
239```c
240void backlight_init_ports(void) {
241 // オプション - 起動時に実行されます
242 // - 通常、ここでピンを設定します
243}
244void backlight_set(uint8_t level) {
245 // オプション - レベルの変更時に実行されます
246 // - 通常、ここで新しい値に応答します
247}
248
249void backlight_task(void) {
250 // オプション - 定期的に実行されます
251 // - ここで長時間実行されるアクションはパフォーマンスの問題を引き起こします
252}
253```