Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Meridian LED update #15329

Merged
merged 3 commits into from
Nov 28, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions keyboards/primekb/meridian/ktr1010/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/*
Copyright 2020 Holten Campbell
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

/* USB Device descriptor parameter */
#define VENDOR_ID 0x5052
#define PRODUCT_ID 0x004D
#define DEVICE_VER 0x0001
#define MANUFACTURER Prime Keyboards
#define PRODUCT Meridian

/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14

#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, B9, B8, B7, B6, B5, B4, B3, A15 }
#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 }
#define DIODE_DIRECTION COL2ROW

#define RGB_DI_PIN B15
#define RGBLED_NUM 3
// Special timing definitions for KTR101
#define WS2812_TIMING 1325
#define WS2812_T0H 350
#define WS2812_T1H 975
#define WS2812_T0L 975
#define WS2812_T1L 350
#define WS2812_RES_US 100

/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5

/* 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
1 change: 1 addition & 0 deletions keyboards/primekb/meridian/ktr1010/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WS2812_DRIVER = bitbang
24 changes: 22 additions & 2 deletions keyboards/primekb/meridian/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,28 @@
* Keyboard Maintainer: [Holten Campbell](https://github.com/holtenc)
* Hardware Supported: STM32F072CBT6

Make example for this keyboard (after setting up your build environment):
## Compiling firmware and flashing

make primekb/meridian:default
### Enter bootloader

The DFU state in the bootloader can be accessed in 3 ways:

* **Bootmagic reset**: hold down the key at (0,0) in the matrix (usually Escape) and plug in the keyboard; or
* **Physical reset button**: press the button on the bottom of the PCB; or
* **Keycode in layout**: press the key mapped to `RESET` if it is available (Escape key on layer 1 in the default layout).

### Compile firmware

The Meridian PCB was delivered in two variants, equal in design but using different RGB LED models: one using WS2812 and another using KTR1010 LEDs. Both can be compiled using

make primekb/meridian/ws1812:default
make primekb/meridian/ktr1010:default

After compiling, enter bootloader in the PCB and flash the firmware using `dfu-util` or QMK Toolbox. For direct compile-and-flashing, put the PCB in DFU state and use

make primekb/meridian/ws1812:default:flash
make primekb/meridian/ktr1010:default:flash

VIA-supported firmwares are also available.

See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
1 change: 0 additions & 1 deletion keyboards/primekb/meridian/rules.mk
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ NKRO_ENABLE = yes # USB Nkey Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
WS2812_DRIVER = spi

# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
48 changes: 48 additions & 0 deletions keyboards/primekb/meridian/ws2812/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
Copyright 2020 Holten Campbell
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

/* USB Device descriptor parameter */
#define VENDOR_ID 0x5052
#define PRODUCT_ID 0x004D
#define DEVICE_VER 0x0001
#define MANUFACTURER Prime Keyboards
#define PRODUCT Meridian

/* key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 14

#define MATRIX_COL_PINS { B11, B10, B2, B1, B0, A7, B9, B8, B7, B6, B5, B4, B3, A15 }
#define MATRIX_ROW_PINS { A6, A5, A4, A3, A2 }
#define DIODE_DIRECTION COL2ROW

#define RGB_DI_PIN B15
#define RGBLED_NUM 3
#define WS2812_SPI SPID2
#define WS2812_SPI_MOSI_PAL_MODE 0
#define WS2812_SPI_SCK_PAL_MODE 0
#define WS2812_SPI_SCK_PIN B13

/* Set 0 if debouncing isn't needed */
#define DEBOUNCE 5

/* 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
1 change: 1 addition & 0 deletions keyboards/primekb/meridian/ws2812/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
WS2812_DRIVER = spi