Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save graphis/9bf7dea51ca5cd35d16e83f63a961f81 to your computer and use it in GitHub Desktop.
Save graphis/9bf7dea51ca5cd35d16e83f63a961f81 to your computer and use it in GitHub Desktop.
A guide detailing how to enable underglow on the Zeal60 with WS2812 LEDs.

RGB Underglow Strip on the Zeal60: A Guide

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:

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:

    #define RGBLIGHT_ANIMATIONS    // Underglow animations. 
    #define RGB_DI_PIN B0          // The pin your RGB strip is wired to
    #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 variable definitions based on your needs.

    // Current limiting.
    #define USB_MAX_POWER_CONSUMPTION 900     // Limit device max power consumption.
    #define RGBSTRIP_CURRENT_LIMIT 400        // Strip current limit in mA.
    #define RGBSTRIP_MAX_CURRENT_PER_LIGHT 60 // mA per light when at max brightness.
  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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment