DIY keyboard : handwired #2 QMK firmware flash

keyboard

Purchase finished product

Write to the pro micro of the self-made keyboard created in DIY keyboard : handwired #1

install qmk_firmware

sudo pacman -S git

git clone --recurse-submodules https://github.com/qmk/qmk_firmware.git

cd qmk_firmware

sudo ./util/qmk_install.sh

Packages (15) compiler-rt-11.1.0-1  confuse-3.3-3  libftdi-1.5-1  libusb-compat-0.1.7-1  arm-none-eabi-binutils-2.36.1-2
              arm-none-eabi-gcc-10.2.0-1  arm-none-eabi-newlib-4.1.0-1  avr-binutils-2.36.1-2  avrdude-1:6.3-7  clang-11.1.0-1
              dfu-programmer-0.7.2-3  dfu-util-0.10-1  unzip-6.0-14  wget-1.21.1-1  zip-3.0-9

Install required files

Firmware creation

./util/new_keyboard.sh

Keyboard Name: protokey
Keyboard Type [avr]: Enter without entering anything
Your Name [Your Name]: prototype

qmkfirmware/keyboards/protokey/config.h

/* Copyright 2021 prototype */

#pragma once

#include "config_common.h"

/* USB Device descriptor parameter */
#define VENDOR_ID    0xFEED
#define PRODUCT_ID   0x0000
#define DEVICE_VER   0x0001
#define MANUFACTURER prototype
#define PRODUCT      protokey

/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12

/* Keyboard Matrix Assignments

D3  TXO ┌─■─┐ RAW RAW
D2  RX1 │o o│ GND GND
GND GND │o o│ RST RESET
GND GND │o o│ VCC VCC
D1    2 │o o│ A3   F4
D0    3 │o o│ A2   F5
D4    4 │o o│ A1   F6
C6    5 │o o│ A0   F7
D7    6 │o o│ 15   B1
E6    7 │o o│ 14   B3
B4    8 │o o│ 16   B2
B5    9 │o o│ 10   B6
        └───┘
  */
#define MATRIX_ROW_PINS { F4, F5, F6, F7 }
#define MATRIX_COL_PINS { D1, D0, D4, C6, D7, E6, B4, B5, B6, B2, B3, B1 }
#define UNUSED_PINS 

/* COL2ROW, ROW2COL */
#define DIODE_DIRECTION ROW2COL

/* Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. */
#define SOFT_SERIAL_PIN D0  // or D1, D2, D3, E6

//#define LED_NUM_LOCK_PIN B0
//#define LED_CAPS_LOCK_PIN B1
//#define LED_SCROLL_LOCK_PIN B2
//#define LED_COMPOSE_PIN B3
//#define LED_KANA_PIN B4

//#define BACKLIGHT_PIN B7
//#define BACKLIGHT_LEVELS 3
//#define BACKLIGHT_BREATHING

//#define RGB_DI_PIN E2
//#ifdef RGB_DI_PIN
//#    define RGBLED_NUM 16
//#    define RGBLIGHT_HUE_STEP 8
//#    define RGBLIGHT_SAT_STEP 8
//#    define RGBLIGHT_VAL_STEP 8
//#    define RGBLIGHT_LIMIT_VAL 255 /* The maximum brightness level */
//#    define RGBLIGHT_SLEEP  /* If defined, the RGB lighting will be switched off when the host goes to sleep */
/*== all animations enable ==*/
//#    define RGBLIGHT_ANIMATIONS
/*== or choose animations ==*/
//#    define RGBLIGHT_EFFECT_BREATHING
//#    define RGBLIGHT_EFFECT_RAINBOW_MOOD
//#    define RGBLIGHT_EFFECT_RAINBOW_SWIRL
//#    define RGBLIGHT_EFFECT_SNAKE
//#    define RGBLIGHT_EFFECT_KNIGHT
//#    define RGBLIGHT_EFFECT_CHRISTMAS
//#    define RGBLIGHT_EFFECT_STATIC_GRADIENT
//#    define RGBLIGHT_EFFECT_RGB_TEST
//#    define RGBLIGHT_EFFECT_ALTERNATING
/*== customize breathing effect ==*/
/*==== (DEFAULT) use fixed table instead of exp() and sin() ====*/
//#    define RGBLIGHT_BREATHE_TABLE_SIZE 256      // 256(default) or 128 or 64
/*==== use exp() and sin() ====*/
//#    define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85  // 1 to 2.7
//#    define RGBLIGHT_EFFECT_BREATHE_MAX    255   // 0 to 255
//#endif

/* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */
#define DEBOUNCE 5

/* define if matrix has ghost (lacks anti-ghosting diodes) */
//#define MATRIX_HAS_GHOST

/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

/* If defined, GRAVE_ESC will always act as ESC when CTRL is held.
 * This is useful for the Windows task manager shortcut (ctrl+shift+esc).
 */
//#define GRAVE_ESC_CTRL_OVERRIDE

/*
 * Force NKRO
 * Force NKRO (nKey Rollover) to be enabled by default, regardless of the saved
 * state in the bootmagic EEPROM settings. (Note that NKRO must be enabled in the
 * makefile for this to work.)
 *
 * If forced on, NKRO can be disabled via magic key (default = LShift+RShift+N)
 * until the next keyboard reset.
 *
 * NKRO may prevent your keystrokes from being detected in the BIOS, but it is
 * fully operational during normal computer usage.
 *
 * For a less heavy-handed approach, enable NKRO via magic key (LShift+RShift+N)
 * or via bootmagic (hold SPACE+N while plugging in the keyboard). Once set by
 * bootmagic, NKRO mode will always be enabled until it is toggled again during a
 * power-up.
 *
 */
//#define FORCE_NKRO

/*
 * Feature disable options
 *  These options are also useful to firmware size reduction.
 */

/* disable debug print */
//#define NO_DEBUG

/* disable print */
//#define NO_PRINT

/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

/* disable these deprecated features by default */
#define NO_ACTION_MACRO
#define NO_ACTION_FUNCTION

/* Bootmagic Lite key configuration */
//#define BOOTMAGIC_LITE_ROW 0
//#define BOOTMAGIC_LITE_COLUMN 0

Overwrite

qmkfirmware/keyboards/protokey/protokey.h

/* Copyright 2021 prototype */

#pragma once

#include "quantum.h"

/* This is a shortcut to help you visually see your layout. */
#define LAYOUT( \
    ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac, \
    kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc, \
    kc1, kc2, kc3, kc4, kc5, kc6, kc7, kc8, kc9, kca, kcb, kcc, \
    kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8, kd9, kda, kdb, kdc \
) { \
    { ka1, ka2, ka3, ka4, ka5, ka6, ka7, ka8, ka9, kaa, kab, kac }, \
    { kb1, kb2, kb3, kb4, kb5, kb6, kb7, kb8, kb9, kba, kbb, kbc }, \
    { kc1, kc2, kc3, kc4, kc5, kc6, kc7, kc8, kc9, kca, kcb, kcc }, \
    { kd1, kd2, kd3, kd4, kd5, kd6, kd7, kd8, kd9, kda, kdb, kdc } \
}

Overwrite

keyboards/protokey/keymaps/default/keymap.c

/* Copyright 2021 prototype */
// https://beta.docs.qmk.fm/using-qmk/simple-keycodes/keycodes
// https://github.com/qmk/qmk_firmware/blob/master/quantum/keymap_extras/keymap_jp.h


#include QMK_KEYBOARD_H
#include"keymap_jp.h"

// Defines names for use in layer keycodes and the keymap
enum layer_names {
    _PROTO,
    _QWERTY,
    _EX1,
    _EX2,
    _EX3,
    _LEFT,
    _P0,
    _P1,
    _P2,
    _P3
};

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
    /* Base
    ┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
    │ Tab  │   Q  │   W  │   D  │   F  │   -  │   /  │   L  │   G  │   K  │   P  │   `  │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │ Ctrl │   U  │   E  │   A  │   O  │   I  │   R  │   S  │   N  │   T  │   H  │Enter │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │ Shift│   Z  │   X  │   C  │   V  │  ,<  │  .>  │   M  │   B  │   Y  │   J  │   ?  │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │ Esc  │ Alt  │ GUI  │ EX1  │EX2/Mu│  BS  │Space │EX3/He│ Left │ Down │  Up  │Right │
    └──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_PROTO] = LAYOUT(
    KC_TAB,  KC_Q,    KC_W,    KC_D,     KC_F,              KC_MINS,   KC_SLSH, KC_L,              KC_G,    KC_K,    KC_P,  KC_GRV,
    KC_LCTL, KC_U,    KC_E,    KC_A,     KC_O,              KC_I,      KC_R,    KC_S,              KC_N,    KC_T,    KC_H,  KC_ENT,
    KC_LSFT, KC_Z,    KC_X,    KC_C,     KC_V,              KC_COMM,   KC_DOT,  KC_M,              KC_B,    KC_Y,    KC_J,  KC_QUES,
    KC_ESC,  KC_LALT, KC_LGUI, MO(_EX1), LT(_EX2, KC_MHEN), KC_BSPC,   KC_SPC,  LT(_EX3, KC_HENK), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
    ),
    /* QWER
    ┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
    │ Tab  │   Q  │   W  │   E  │   R  │   T  │   Y  │   U  │   I  │   O  │   P  │  @`  │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │ Ctrl │   A  │   S  │   D  │   F  │   G  │   H  │   J  │   K  │   L  │  -_  │ Enter│
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │ Shift│   Z  │   X  │   C  │   V  │   B  │   N  │   M  │   ,  │   .  │  /?  │  \_  │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │ ESC  │ Alt  │ GUI  │  F1  │LoMuhe│  BS  │Space │RaHenk│ Left │ Down │  Up  │Right │
    └──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_QWERTY] = LAYOUT( \
    _______, KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P,    KC_LBRC, \
    _______, KC_A,    KC_S,    KC_D,    KC_F,    KC_G,      KC_H,    KC_J,    KC_K,    KC_L,    KC_MINS, KC_ENT, \
    _______, KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,      KC_N,    KC_M,    KC_COMM, KC_DOT,  KC_SLSH, KC_BSLS, \
    _______, _______, _______, _______, _______, _______,   _______, _______, KC_LEFT, KC_DOWN, KC_UP,   KC_RIGHT \
    ),
    /* EX1
    ┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
    │      │Ctrl-S│Ctrl-Y│  ↑   │Ctrl-F│      │      │      │      │      │      │      │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │Ctrl-A│  ←   │  ↓   │  →   │      │      │Vol-DW│Vol-UP│Bli-DW│Bli-UP│      │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │Ctrl-Z│Ctrl-X│Ctrl-C│Ctrl-V│      │      │      │      │Left-H│QWERTY│Protok│
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │■■■■■■│      │ Del  │      │      │ Home │ PgDw │ PgUP │ End  │
    └──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_EX1] = LAYOUT(
    _______, C(KC_S), C(KC_Y), KC_UP,   C(KC_F), _______,   _______, _______, _______, _______,   _______,     _______, \
    _______, C(KC_A), KC_LEFT, KC_DOWN, KC_RGHT, _______,   _______, KC_VOLD, KC_VOLU, KC_BRID,   KC_BRIU,     _______, \
    _______, C(KC_Z), C(KC_X), C(KC_C), C(KC_V), _______,   _______, _______, _______, DF(_LEFT), DF(_QWERTY), DF(_PROTO), \
    _______, _______, _______, _______, _______, KC_DEL,    _______, _______, KC_HOME, KC_PGDN,   KC_PGUP,     KC_END \
    ),
    /* EX2
    ┌──────┬──────┬──────┬──────┬──────┬──────┼──────┬──────┬──────┬──────┬──────┬──────┐
    │      │      │  7   │  8   │  9   │PrintS│  F1  │  F2  │  F3  │  F4  │  F5  │  F6  │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │  4   │  5   │  6   │Insert│  F7  │  F8  │  F9  │  F10 │  F11 │  F12 │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  0   │  1   │  2   │  3   │ CAPS │半/全│無変換│ 変換 │ かな │      │      │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │      │■■■■■■│  Del │      │      │ Home │ PgDw │ PGUP │ End  │
    └──────┴──────┴──────┴──────┴──────┴──────┼──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_EX2] = LAYOUT(
    _______, _______, KC_7,    KC_8,    KC_9,    KC_PSCR,   KC_F1,    KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6, \
    _______, _______, KC_4,    KC_5,    KC_6,    KC_INS,    KC_F7,    KC_F8,   KC_F9,   KC_F10,  KC_F11,  KC_F12, \
    _______, KC_0,    KC_1,    KC_2,    KC_3,    KC_CAPS,   KC_LANG5, KC_MHEN, KC_HENK, KC_KANA, _______, _______, \
    _______, _______, _______, _______, _______, KC_DEL,    _______,  _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END \
    ),
    /* EX3
    ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐
    │      │  ,   │  &   │  ~   │  =   │  _   │  ?   │  (   │  )   │  '   │  "   │  @   │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  `   │  $   │  %   │  ^   │  %   │  #   │  [   │  ]   │  :   │  ;   │  |   │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  .   │  !   │  @   │  #   │  <   │  >   │  {   │  }   │  +   │  *   │  \   │
    ├──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │      │      │ Del  │      │■■■■■■│ Home │ PgDw │ PGUP │ End  │
    └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_EX3] = LAYOUT(
    _______, KC_COMM, KC_AMPR, KC_TILD, KC_EQL,  KC_UNDS,   KC_QUES, KC_LPRN, KC_LPRN,  KC_QUOT,  KC_DQUO, KC_AT, \
    _______, KC_GRV,  KC_DLR,  KC_PERC, KC_CIRC, KC_PERC,   KC_HASH, KC_LBRC, KC_RBRC,  KC_COLN,  KC_SCLN, KC_PIPE, \
    _______, KC_DOT,  KC_EXLM, KC_AT,   KC_HASH, KC_LABK,   KC_RABK, KC_LCBR, KC_RCBR,  KC_PLUS,  KC_ASTR, KC_BSLS, \
    _______, _______, _______, _______, _______, KC_DEL,    _______, _______, KC_HOME,  KC_PGDN,  KC_PGUP, KC_END \
    ),
    /* LEFT
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │ Tab  │   Q  │   W  │   D  │   F  │  BS  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │ Ctrl │   U  │   E  │   A  │   O  │   I  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │Shift │   Z  │   X  │   C  │   V  │Space │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │Esc/ 1│H/ZAlt│ GUI  │Hen/ 2│Mu / 3│ 4    │
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_LEFT] = LAYOUT(
    KC_TAB,          KC_Q,           KC_W,    KC_D,             KC_F,             KC_BSPC,   _______, _______, _______,  _______,  _______, _______, \
    KC_LCTL,         KC_U,           KC_E,    KC_A,             KC_O,             KC_I,      _______, _______, _______,  _______,  _______, _______, \
    KC_LSFT,         KC_Z,           KC_X,    KC_C,             KC_V,             KC_SPC,    _______, _______, _______,  _______,  _______, _______, \
    LT(_P1, KC_ESC), LALT(KC_LANG5), KC_LGUI, LT(_P2, KC_HENK), LT(_P3, KC_MHEN), MO(_P0),   _______, _______, _______,  _______,  _______, _______ \
    ),
    /* P0
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │      │   p  │   k  │   g  │   l  │ Del  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │   r  │   t  │   n  │   s  │   h  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │   j  │   y  │   b  │   m  │Enter │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │      │      │■■■■■■│
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_P0] = LAYOUT(
    _______, KC_P,    KC_K,    KC_G,    KC_L,    KC_DEL,    _______, _______, _______, _______, _______, _______, \
    _______, KC_H,    KC_T,    KC_N,    KC_S,    KC_R,      _______, _______, _______, _______, _______, _______, \
    _______, KC_J,    KC_Y,    KC_B,    KC_M,    KC_ENT,    _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______ \
    ),
    /* p1
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │  F1  │  F2  │  F3  │  F4  │  F5  │  F6  │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │  F7  │  F8  │  F9  │  F10 │  F11 │  F12 │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │Protok│QWERTY│      │      │PrintS│Insert│
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │■■■■■■│      │      │      │      │      │
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_P1] = LAYOUT(
    KC_F1,      KC_F2,       KC_F3,   KC_F4,   KC_F5,   KC_F6,     _______, _______, _______, _______, _______, _______, \
    KC_F7,      KC_F8,       KC_F9,   KC_F10,  KC_F11,  KC_F12,    _______, _______, _______, _______, _______, _______, \
    DF(_PROTO), DF(_QWERTY), _______, _______, KC_PSCR, KC_INS,    _______, _______, _______, _______, _______, _______, \
    _______,    _______,     _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______ \
    ),
    /* p2
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │  _   │  /   │  -   │  ↑   │  '   │  "   │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │  @   │  [   │  ←   │  ↓   │  →   │  ]   │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  ^~  │  \|  │  #   │  ,   │  .   │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │■■■■■■│      │      │
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_P2] = LAYOUT(
    KC_UNDS, KC_SLSH, KC_MINS, KC_UP,   KC_QUOT, KC_DQUO,   _______, _______, _______,  _______,  _______, _______, \
    KC_AT,   KC_LBRC, KC_LEFT, KC_DOWN, KC_RGHT, KC_RBRC,   _______, _______, _______,  _______,  _______, _______, \
    _______, KC_CIRC, KC_BSLS, KC_HASH, KC_COMM, KC_DOT,    _______, _______, _______,  _______,  _______, _______, \
    _______, _______, _______, _______, _______, _______,   _______, _______, _______,  _______,  _______, _______ \
    ),
    /* p3
    ┌──────┬──────┬──────┬──────┬──────┬──────┐
    │      │  +   │  7   │  8   │  9   │  `   │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  =   │  4   │  5   │  6   │  :   │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │  0   │  1   │  2   │  3   │  ;   │
    ├──────┼──────┼──────┼──────┼──────┼──────┤
    │      │      │      │      │■■■■■■│      │
    └──────┴──────┴──────┴──────┴──────┴──────┘
    */
    [_P3] = LAYOUT(
    _______, KC_PLUS, KC_7,    KC_8,    KC_9,    KC_GRV,    _______, _______, _______, _______, _______, _______, \
    _______, KC_EQL,  KC_4,    KC_5,    KC_6,    KC_COLN,   _______, _______, _______, _______, _______, _______, \
    _______, KC_0,    KC_1,    KC_2,    KC_3,    KC_SCLN,   _______, _______, _______, _______, _______, _______, \
    _______, _______, _______, _______, _______, _______,   _______, _______, _______, _______, _______, _______ \
    )
};

Overwrite

Test

sudo make protokey:default

Flash promicro

Connect promicro to PC with USB cable

sudo make protokey:default:avrdude

Short the RST GRD of Pro micro with tweezers etc.

avrdude: safemode: Fuses OK (E:FB, H:D8, L:FF)

avrdude done.  Thank you.

Connection with pro micro

key key

The numbers on the top and right of the image are printed on the board of the pro micro. Insert the wire into the number on the board and solder it.

key key

In the image, it is connected to the breadboard using a cable, but there is no problem if you insert the cable directly into the pro micro and solder it directly.

Purchase finished product

thank you

Thank you for watching until the end. I'm glad if you can use it as a reference.

Thank you for Helping

Give money to us for Amazon gift

We will continue to update useful information. I am delighted to jump to your help. Thank you very much.