.. | ||
config.h | ||
keymap.c | ||
README.md |
RGB Underglow Strip on the Zeal60: A Guide
Requirements
- WS2812B RGB strip, preferably 60 LEDs/meter
- Wire, solder
- Tape, hot glue, or some sort of adhesive
A. Connecting the strip
You might find the full PCB image helpful. Ignore the red boxes!
-
Connect V+ to the receiving end of the thermistor labeled F1; connect GND to the board's GND pin. (Avoid connecting +V to the board's +5V pin - you will likely overload the thermistor, and you will limit your maximum brightness.)
-
Connect DI to PB0.
-
Should look something like this when finished:
Optional: To allow considerably more light to escape, consider angling the strip outwards by using some sort of fulcrum under the strip. (I used a thick wire.)
B. Enabling the strip
-
If it is not present already, add the following to your keymap's
Makefile
:RGBLIGHT_ENABLE = yes AUDIO_ENABLE = no #Underglow animations cannot be used with audio.
-
If it is not present already, add the following to your keymap's
config.h
, and edit the values as necessary:// Set up RGB underglow. #define RGB_DI_PIN B0 // The pin your RGB strip is wired to #define RGBLIGHT_ANIMATIONS // Require for fancier stuff (not compatible with audio) #define RGBLED_NUM 35 // Number of LEDs #define RGBLIGHT_HUE_STEP 5 // How much each press of rgb_hue changes hue #define RGBLIGHT_SAT_STEP 10 // How much each press of rgb_sat changes sat #define RGBLIGHT_VAL_STEP 10 // How much each press of rgb_val changes val
-
If they are not present already, add the following keycodes to your keymap to control the RGB strip:
RGB_TOG
(on/off),RGB_MOD
(step through modes),RGB_HUI
,RGB_HUD
,RGB_SAI
,RGB_SAD
,RGB_VAI
,RGB_VAD
(HSV increase/decrease). Add these to your keymap.
C. Dealing with current limits
USB 2.0 ports on laptops provide up to 500mA max, but USB 3.0 ports can provide up to 900mA; USB 3.1 up to 1.5A; and powered USB hubs even more. We can run our keyboard at a higher brightness if we draw more power. The Zeal60 uses 500mA at max brightness. This means that you have about 400mA remaining for the strip to use on a USB 3.0 port; 1000mA free on a USB 3.1 port, so on and so forth.
Warning: This means you will need to turn off your RGB strip before connecting to a USB 2.0 port, as USB 2.0 cannot sustain the current necessary!
-
If not present already, add the following to your keymap's
config.h
. Change the numbers based on your needs. The ones below are safe underestimates.// Enable current limiting for RGB underglow. #define RGBSTRIP_CURRENT_LIMIT 400 // Strip current limit in mA. (USB amperage - 500mA for keyboard) #define RGBSTRIP_MAX_CURRENT_PER_LIGHT 50 // mA per light when at max brightness.
Example: I use a USB port capable of providing 1800 mA. The keyboard uses 500mA, so my personal value (in the
tusing
keymap) forRGBSTRIP_CURRENT_LIMIT
is 1300. The particular WS2812B RGB strip I have uses a maximum of 60 mA per LED, so that is my personal value forRGBSTRIP_MAX_CURRENT_PER_LIGHT
. -
Toggle on the LED strip (
RGB_TOG
) and step through animations (RGB_MOD
) to test it out!
D. Sources and resources
A. Connecting the strip.
- In-depth description of connecting an RGB strip to the GH60
- 32U4 Pinout
- Redditor describes connecting RGB strips on his Satan GH60
- Another Redditor on RGB with the Satan GH60
B. Enabling the strip.
- QMK Wiki portion on underglow
- Planck
Makefile
,config.h
, andkeymap.c
config example - Video demonstrating keycode functions and RGB modes on a KC60
C. Dealing with current limits.
- Discussion of cutting jumpers and adding resistors to lower current from Zeal60
- A selection of 900mA-1.5A current hold fuses - look for an SMD 0805-sized fuse.
- Video detailing technique to solder 0805 resistors
- QMK feature request to implement max power draw limits in
config.h
- Commit enabling max power draw limits in
config.h