HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2021/11/07

QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法 QMK firmwareで I/Oピンが足りない場合にデコーダ、デマルチプレクサを使用して IOを拡張する解決方法

(QMK firmware expand I/O for many matrix keyboard、How to use IO Expander Multiplexer / Demultiplexer / Decoder)

Tags: [電子工作], [QMK]




● QMK firmwareの関連記事


2021/08/23
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

2022/01/09
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

2021/08/11
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応

  キー内容が Remap等でカスタマイズ可能な社畜のキーボード「新入社員の同期」を 3500円で購入


● QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法 I2C編


2021/12/06
QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use I2C GPIO Expander PCF8574 and PCF8575


● QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法 I2C編

How to Expand IO in QMK firmware with Pro Micro Using Multiplexer / Demultiplexer / Decoder


 QMK firmware test expand I/O matrix keyboard、Multiplexer / Demultiplexer / Decoder
 市販のキーボードを QMK化する場合、キーのマトリクスの配線が 18+8の合計 26本必要です。
 しかし、Pro Microでは I/Oピンの数が足りません。

 QMK Firmwareは STM32にも対応しているので I/Oピンが多い STM32F103の Blue Pill基板(Red Pill基板、Black Pill基板)を使う選択肢や、同じく I/Oピンの多い RP2040の Raspberry Pi Pico基板を非公式 QMKファームフェアで使う方法が考えられます。

 しかし、Boot Loader等のお手軽さから Pro Microをどうしても使用したいのです。

 Pro Microと同じ ATmega32u4を使った Elite-C V4と言う選択肢は安直なのと、値段が高いのと、結局 IO pinが足りないので却下。

基板種類最大 I/O数
ATmega32u4 Pro Micro18本
ATmega32u4 Elite-C V424本
RP2040 Raspberry Pi Pico基板26本
STM32 Blue Pill基板等33本

 ちなみに良くある Pro Microを 2個使った Split型(左手、右手で独立のキーボード)は市販のキーボードの場合はできません。理由はマトリックスが分離していないから。

 と言う訳で Pro Microで多ピンを使う場合の方法を考えます。

 考え中!
 考え中!
 考え中!
  ・
  ・
  ・
 考えた!(ピコーン!)

 I/Oピンが足りないなら デコーダやデマルチプレクサを使えば良いじゃないの!(マリー・アントワネット風に)

 と言う訳で 74HC4051(8本)と 74HC4067(16本)を使って I/Oピン不足を解決します。
 74HCみんな大好き!(モトネタ無し)

74HC4051 8 bit8:1 1-channel analog mutliplexer
74HC4067 16 bit16:1 1-channel analog multiplexer

今回購入


ACEIRMC Pro Micro ATmega32U4 5V/16MHz Arduino用 互換マイクロコントローラ Micro USB 開発ボード (3個セット)
ASIN: B08HC9KHJC

KeeYees Pro Micro ATmega32U4 5V/16MHz 互換マイクロコントローラ Micro USB 開発ボード (3個)
ASIN: B07Q4VRT36

KKHMF 2個 Leonardo Pro Micro ATmega32U4 5V/16MHz ブートローダ マイクロ USB Pro Mini 開発ボード Arduinoに対応
ASIN: B081DY1NWW

VKLSVAN Pro Micro USB ATmega32U4 5V/16MHz マイクロコントローラ Micro USB 開発ボード Arduinoに対応
ASIN: B086GPX434

今回購入


8チャンネル74HC4051アナログマルチプレクサーデマルチプレクサーモジュールラズベリーパイ用単極オクタルスローアナログスイッチ
ASIN: B07ZCP69KS
今回購入


Ren He 3個セット CD74HC4067 高速 CMOS 16チャンネル デジタル アナログ マルチプレクサ 多重 ブレイクアウト ボード モジュール Arduinoと互換
ASIN: B0953LPVKJ

注意:黄色の接続ピンは付属しません

ACEIRMC CD74HC4067 16チャンネル アナログデジタルマルチプレクサー ブレークアウトボードモジュール Arduino 2V-6V マイクロコントローラー用 16デバイス RXライン 10個
ASIN: B08XV26WPS


● I2Cの GPIO拡張基板モジュール

 なお、I2Cで I/Oピンを拡張できる PCF8574(8本)、PCF8575(16本)、MCP23017(16本)、TCA9555(16本)、TCA6424(24本)等は使いません。理由は I2Cで制御するのが面倒だから。

 興味がある方は I2Cの方法をお試しください。OLEDの配線と共通化できるので消費する I/Oピンを実質 0本とみなせます。

 「面倒だから」と書きましたが技術的探究心に負けて作成しました。
 ページ上部の「I2C編」から飛べます。

PCF8574 8 bit8-bit I2C/SMBus I/O expander with interrupt
PCF8575 16 bit16-bit I2C/SMBus I/O expander with interrupt
TCA9555 16 bit16-bit I2C/SMBus I/O expander with interrupt weak pull-up & config registers
TCA6424 24 bit24-bit translating I2C/SMBus I/O expander with interrupt reset & config registers
MCP23017 16 bit16-Bit I2C I/O Expander with Serial Interface


3個セット PCF8574 IO拡張ボード I2C Arduino用 開発ボード
ASIN: B07BW3VL3C

GAOHOU新しいオープンスマートPCF8575 IO拡張ボードモジュールArduino TW用I2C?16IO
ASIN: B073XJ263Q

WINGONEER MCP23017-E/SS I2Cインターフェイス16チャンネルIO拡張モジュール互換 C51 IIC入力および出力拡張ボード
ASIN: B081ZYXW88

HiLetgo TCA9548A I2C IIC マルチプレクサ ブレークアウト ボード 8チャンネル 拡張ボード
ASIN: B078W4YLFG


● QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサしてみるテスト

FREEWING-JP / qmk_firmware / test_expand_io
 QMKで キーのマトリクス配線の I/Oピン拡張のテストのソースリスト一式。


● QMK firmwareで matrix.c

QMK - Custom Matrix
 Extra hardware between the keyboard's switches and MCU pins
 ・I/O multiplexer
 ・Line decoder

 QMKは元々 I/Oピンが足りない場合に I/O multiplexerや Line decoderを使う事を想定しています。

rules.mk
CUSTOM_MATRIX = lite
SRC += matrix.c

matrix.c
void matrix_init_custom(void) {
    // TODO: initialize hardware here
}

bool matrix_scan_custom(matrix_row_t current_matrix[]) {
    bool matrix_has_changed = false;
    // TODO: add matrix scanning routine here
    return matrix_has_changed;
}

● QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサの回路図

 今回は実装が簡単で動作原理の理解が単純明快なデコーダ、デマルチプレクサを使用します。

 74HC4051、74HC4067を使用して 8+16の I/Oを拡張しています。
 74HC4051で I/O 3本から GPIOを 8本に拡張(5本を得する)、Col出力のデマルチプレクサ(デコーダ)として使用
 74HC4067で I/O 5本から GPIOを 16本に拡張(11本を得する)、Row入力のマルチプレクサとして使用

 74HC4051に 3bitを入力して 8bitのどれか 1本が 'L'に成る様にデコーダとして使用しています。
 74HC4051を 'L'出力として使用し、74HC4067を 'L'アクティブの入力として使用しています。

 74HC4067に 4bitを入力して 16bitのどれかを選択して SIGに成る様にマルチプレクサとして使用しています。
 74HC4067の SIGを Pro Microの E6に接続して、E6は内部プルアップ有りの入力を指定しています。
 内部プルアップなので、キー入力が無い時は 'H'、キー入力が有る時は 'L'('L'アクティブ)になります。(74HC4051が Col出力として 'L'を出力しているから)

 ※ 74HC4051の入手性が悪い場合は 74HC138でも代用できます(ただし、74HC138場合は選択中以外のピンは 'H'出力になります。私はスイッチの複数押しで 'L'と 'H'がショートするのが嫌なので 74HC4051を選びました)

用語英語略称意味代表的なロジック IC
マルチプレクサmultiplexermuxセレクト入力に従い複数の入力のどれか1つを選択して出力する74HC4051や 74HC4067等で COM端子を出力で使用
デマルチプレクサdemultiplexerdemuxセレクト入力に従い1つの入力を複数の出力ラインのどれか 1つに出力する74HC4051や 74HC4067等で COM端子を入力で使用
デコーダdecoderdecセレクト入力に従い複数の出力ラインのどれか 1つをデコードする74HC138や 74HC154

・QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサの回路図
QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサの回路図



・QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ
QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


QMK firmwareでキーのマトリクス配線で I/Oピンが足りない場合の解決方法、デコーダ、デマルチプレクサ


・QMK firmware test expand I/O matrix keyboard、Multiplexer / Demultiplexer / Decoder
QMK firmware test expand I/O matrix keyboard、Multiplexer / Demultiplexer / Decoder



● 74HC4051 8-channel analog multiplexer / demultiplexerの使い方

 S0,S1,S2の 3bitの入力で Y0~Y7の 8本のどれか 1本を選択して Zに接続します。
 Y0~Y7と Zはそれぞれ入力と出力の両方に対応しています。
 Ynを入力に使う場合は Zが出力になる。
 Zを入力に使う場合は Ynが出力になる。
 /Eが 0(Low)の時だけ動作が有効(Ynと Zとが接続状態になる)で、1(High)の時は Ynと Zとは未接続になります。

 今回の場合は Zを Low固定の入力、Y0~Y7を出力にして使っています。
 つまり、Y0~Y7のどれか 1本が Lowになります。
 74HC4051を Col pinの出力として使用しています。

/E端子S0S1S2Zとの接続
0000Y0
0001Y1
0010Y2
0011Y3
0100Y4
0101Y5
0110Y6
0111Y7
1xxx無し
※ 0 = Low、1 = High

74HC4051 8-channel analog multiplexer/demultiplexer  から抜粋。
・74HC4051 8-channel analog multiplexer / demultiplexerの使い方
74HC4051 8-channel analog multiplexer / demultiplexerの使い方


74HC4051 8-channel analog multiplexer / demultiplexerの使い方



CD405xB CMOS Single 8-Channel Analog Multiplexer/Demultiplexer with Logic-Level Conversion datasheet (Rev. I)  から抜粋。
・74HC4051 8-channel analog multiplexer / demultiplexerの使い方
74HC4051 8-channel analog multiplexer / demultiplexerの使い方


 この上図だと動作のイメージが掴みやすいと思います。
 (中央の扇形の部分が選択スイッチになっています)

● 74HC4067 16-channel analog multiplexer / demultiplexerの使い方

 74HC4067も 74HC4051と同様の使い方をします。
 S0,S1,S2,S3の 4bitの入力で Y0~Y15の 16本のどれか 1本を選択して Zに接続します。

 今回の場合は Y0~Y15を入力、Zを出力にして使っています。
 つまり、Y0~Y15のどれか 1本の入力が Zに出力されます。
 74HC4067を Row pinの入力として使用しています。

 Z端子は Pro Microの E6に接続します。
 E6は内部プルアップ有りの入力を指定しています。
 内部プルアップなので、キー入力が無い時は 'H'、キー入力が有る時は 'L'('L'アクティブ)になります。


 下記のソースで動作確認済み

 デコーダ+マルチプレクサ構成で本当に動くのか不安だったので PoCとして 4x4のキーボードを接続して動作確認を行ないました。
 PoC = Proof of Concept、概念実証、試作開発の前段階における検証

matrix.c
// Copyright 2021 Y.Sakamoto (@FREEWING-JP)
// SPDX-License-Identifier: GPL-2.0-or-later

#include "matrix.h"
#include "gpio.h"

// Row Input selector I0-I15 16bit
// #define MATRIX_ROW_PINS { B6, B2, B3, B1 } = { E6 }
static void select_col(uint8_t col) {
    writePin(F5, (col & 1));
    writePin(F6, (col & 2));
    writePin(F7, (col & 4));
    matrix_io_delay();
}

// Row I0-I17 18bit
// { E6 } + { B4, B5 }
static void select_row(uint8_t row) {
    writePin(B6, (row & 1));
    writePin(B2, (row & 2));
    writePin(B3, (row & 4));
    writePin(B1, (row & 8));
}

// Row I0-I17 18bit
// { E6 } + { B4, B5 }
static matrix_row_t read_rows(uint8_t row) {
    int inputPin;

    if (row < 16) {
        // I0-I15
        select_row(row);
        inputPin = E6;
    } else
    if (row == 16) {
        // I16
        inputPin = B4;
    } else
    if (row == 17) {
         // I17
        inputPin = B5;
    }

    matrix_row_t rows = 0;
    for (uint8_t col = 0; col < MATRIX_COLS; ++col) {
        // MSB = col 7, LSB = col 0
        select_col(MATRIX_COLS - 1 - col);
        matrix_io_delay();

        rows <<= 1;
        rows |= (readPin(inputPin) ? 0 : 1);
    }

    return rows;
}

void matrix_init_custom(void) {
    /* Col pin configuration
     * 74HC138 3-to-8 line decoder/demultiplexer
     * 74HC4051 3-to-8 analog multiplexer/demultiplexer
     *  pin: xx  F7  F6  F5
     *    Z   1   x   x   x
     *  /Y0   0   0   0   0
     *  /Y1   0   0   0   1
     *  /Y2   0   0   1   0
     *  /Y3   0   0   1   1
     *  /Y4   0   1   0   0
     *  /Y5   0   1   0   1
     *  /Y6   0   1   1   0
     *  /Y7   0   1   1   1
     * 74HC4051 COM = GND = 'L'
     */
    setPinOutput(F5); // Bit0 1
    setPinOutput(F6); // Bit1 2
    setPinOutput(F7); // Bit2 4
    // setPinOutput(xx); // /Enable
    // writePinHigh(xx); // Disable

    /* Row pin configuration
     * 74HC4067 16-channel analog multiplexer/demultiplexer
     *  pin:  B1  B3  B2  B6
     *   I0    0   0   0   0
     *   I1    0   0   0   1
     *   I2    0   0   1   0
     *   I3    0   0   1   1
     *   I4    0   1   0   0
     *   I5    0   1   0   1
     *   I6    0   1   1   0
     *   I7    0   1   1   1
     *   I8    1   0   0   0
     *   I9    1   0   0   1
     *   I10   1   0   1   0
     *   I11   1   0   1   1
     *   I12   1   1   0   0
     *   I13   1   1   0   1
     *   I14   1   1   1   0
     *   I15   1   1   1   1
     */
    setPinOutput(B6); // Bit0 1
    setPinOutput(B2); // Bit1 2
    setPinOutput(B3); // Bit2 4
    setPinOutput(B1); // Bit3 8

    // Row pin Input I0-I15 74HC4067 Common 'L' active
    setPinInputHigh(E6);

    // Row pin Input I16 'L' active
    setPinInputHigh(B4);

    // Row pin Input I17 'L' active
    setPinInputHigh(B5);
}

// MATRIX_ROWS = 18
// MATRIX_COLS = 8
// matrix_row_t = uint8_t
bool matrix_scan_custom(matrix_row_t current_matrix[]) {
    bool matrix_has_changed = false;

    // writePinLow(xx); // Enable
    matrix_row_t* p = current_matrix;

    for (uint8_t row = 0; row < MATRIX_ROWS; ++row) {
        matrix_row_t now_rows = read_rows(row);
        if (*p != now_rows) {
            *p = now_rows;
            matrix_has_changed = true;
        }
        ++p;
    }
    // writePinHigh(xx); // Disable

    return matrix_has_changed;
}
 市販のフルキーボード改造用に MATRIX_ROWSを 18で定義していますが、余った 2本は直接 Pro Microの I/Oピン(B4、B5)に接続します。

config.h
 // Copyright 2021 Y.Sakamoto (@FREEWING-JP)
 // SPDX-License-Identifier: GPL-2.0-or-later

/* key matrix size */
#define MATRIX_ROWS 18
#define MATRIX_COLS 8

/*
 * Keyboard Matrix Assignments
 *
 * Change this to how you wired your keyboard
 * COLS: AVR pins used for columns, left to right
 * ROWS: AVR pins used for rows, top to bottom
 * DIODE_DIRECTION: COL2ROW = COL = Anode (+), ROW = Cathode (-, marked on diode)
 *                  ROW2COL = ROW = Anode (+), COL = Cathode (-, marked on diode)
 *
 */
#define MATRIX_ROW_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
#define MATRIX_COL_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
 // #define UNUSED_PINS

/* COL2ROW, ROW2COL */
 // #define DIODE_DIRECTION COL2ROW


● MATRIX_COLS is inconsistent with the size of MATRIX_COL_PINS: 0 != n

[Bug] Post-QMK update, split keyboard does not compile MATRIX_COLS is inconsistent with the size of MATRIX_COL_PINS #14968

info.py

☒ handwired/freewing/fcm084: MATRIX_COLS is inconsistent with the size of MATRIX_COL_PINS: 0 != 8
☒ handwired/freewing/fcm084: MATRIX_ROWS is inconsistent with the size of MATRIX_ROW_PINS: 0 != 18
Making handwired/freewing/fcm084 with keymap default

Solution Padding NO_PIN to MATRIX_ROW_PINS
/* key matrix size */
#define MATRIX_ROWS 18
#define MATRIX_COLS 8

#define MATRIX_ROW_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
#define MATRIX_COL_PINS { NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }


● error Dynamic keymaps are configured to use more EEPROM than is available

Solution Change DYNAMIC_KEYMAP_LAYER_COUNT 4 to 3

Compiling: quantum/dynamic_keymap.c
quantum/dynamic_keymap.c:75:6: error: #error Dynamic keymaps are configured to use more EEPROM than is available.
 #    error Dynamic keymaps are configured to use more EEPROM than is available.
      ^
 [ERRORS]

// #error Dynamic keymaps are configured to use more EEPROM than is available.
// Change 4 to 3
 // #define DYNAMIC_KEYMAP_LAYER_COUNT 4
#define DYNAMIC_KEYMAP_LAYER_COUNT 3


●市販のキーボードを QMK化する場合、キーのマトリクスの配線が 18+8の合計 26本必要です

 両方ともキーのマトリクスの配線が 18+8の合計 26本である事を確認しました。

 Dellのキーボード KB4021 KB212-Bを分解して確認
・Dellのキーボード KB4021 KB212-Bを分解して確認
Dellのキーボード KB4021 KB212-Bを分解して確認


Dellのキーボード KB4021 KB212-Bを分解して確認


Dellのキーボード KB4021 KB212-Bを分解して確認



 ELECOMのキーボード FCM084を分解して確認
・ELECOMのキーボード FCM084を分解して確認
ELECOMのキーボード FCM084を分解して確認


ELECOMのキーボード FCM084を分解して確認


ELECOMのキーボード FCM084を分解して確認




● QMKの同人キーボードでキーマトリクスが 1列しかないのにダイオードを入れている無意味な設計

 ダイオードを入れる理由を理解していないのかな?


● QMKの既存のキーボードでの I/O multiplexerや Line decoderの実装例

・keyboards\al1
・keyboards\bpiphany\kitten_paw
74HC154 4-to-16 line decoder/demultiplexer

・keyboards\dp60
74LVC138 3-Line to 8-Line Decoder/Demultiplexer datasheet

・keyboards\mechlovin\infinity87\rev2
74HC138 3-Line to 8-Line Decoder/Demultiplexer datasheet

・keyboards\duck\tcv3
・keyboards\evyd13\wasdat
74HC237D 3-to-8 line decoder, demultiplexer with address latches

・keyboards\ferris\0_1
MCP23017 16-Bit I/O Expander with Serial Interface

・keyboards\ergodox_ez
mcp23018 16-bit I/O expander
* Now it's only 317 scans/second, or about 3.15 msec/scan.

・keyboards\moon
PCA9555 16-bit I2C-bus and SMBus I/O port with interrupt

・keyboards\3w6\rev1
TCA9555 Low-Voltage 16-Bit I2C and SMBus I/O Expander with Interrupt Output and Configuration Registers

・keyboards\matrix\m20add
TCA6424 24-bit translating I2C/SMBus I/O expander



Tags: [電子工作], [QMK]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】
【自由工作】市販のキーボードを無改造で VIA QMK化する Keyboard Quantizerを自作する【夏休み】

  夏休みが明けたら 僕のキーボードが最強になって クラスのみんなから MMK 大作戦

BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法
BUFFALOの USB テンキーを Pro Microと QMKを使って VIAカスタマイズ キーボードに改造する方法

  BUFFALO USB 10-Key keyboard BSTK100 modification by Pro Micro and QMK firmware VIA

QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法
QMK firmwareの開発環境を ラズパイや Windows WSLにセットアップする方法

  ラズパイや Windows WSL環境でカスタマイズ キーボードのファームウェア QMK firmwareの開発環境を構築

QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法
QMK firmwareでプログラムのサイズを小さくするテクニック、ケチケチ プログラミングの方法

  QMK firmware How to Reduce Program Size、Reducing QMK firmware size

QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法
QMK firmwareで I/Oピンが足りない場合に I2Cの GPIOエキスパンダを使用して IOを拡張する解決方法

  QMK firmware expand I/O for many matrix keyboard、How to use I2C GPIO Expander PCF8574 and PCF8575

QMK firmwareで Audio機能を試してみる
QMK firmwareで Audio機能を試してみる

  QMK firmware test Audio function with Piezo buzzer

QMK firmwareで OLED機能で SSD1306を試してみる
QMK firmwareで OLED機能で SSD1306を試してみる

  QMK firmware test OLED Driver with SSD1306

QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる
QMK firmwareで Analog Stick機能で PSP2000用アナログ ジョイスティックを試してみる

  QMK firmware test Analog Joystick function with PSP2000 Analog Stick

最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法
最新の QMK firmwareで new_keyboard.shのコマンドが動かなくなったのを修正する方法

  QMK Bugfix Create New Keyboard new_keyboard.sh command No such file or directory Error

QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法
QMK firmwareの Githubを forkした自分のリモートに pushすると怒られて pushできない場合の対応方法

  refusing to allow an OAuth App to create or update workflow `.github/workflows/api.yml` without `workflow` scope

中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物
中華製の格安なプログラマブル USBキーボードを買ってみた QMK VIAとは別物

  中華製のプログラマブル USBキーボード KeyboardSetter.exe

社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応
社畜のキーボード「新入社員の同期」を購入してみた!! VIA、QMK、Remapでのカスタマイズに対応

  キー内容が Remap等でカスタマイズ可能な社畜のキーボード「新入社員の同期」を 3500円で購入




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2021 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/hardware/qmk_firmware_test_matrix_expand_io/