keychron_qmk_firmware/keyboards/zeal60/keymaps/tusing
..
config.h
keymap.c
Makefile
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!

  1. 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.)

  2. Connect DI to PB0.

  3. 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

  1. 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.
    
  2. 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
    
  3. 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!

  1. 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) for RGBSTRIP_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 for RGBSTRIP_MAX_CURRENT_PER_LIGHT.

  2. 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.

B. Enabling the strip.

C. Dealing with current limits.