SparkFun Qwiic Twist - RGB Rotary Encoder Breakout

The SparkFun Qwiic Twist is a digital RGB rotary encoder breakout that is also able to connect to our Qwiic Connect System. The Twist takes care of all the various interrupts, switches, PWM'ing of LEDs, and presents all those features over an easy-to-use I2C interface. The Qwiic Twist was designed to get rid of the large mass of wires that are needed to implement an RGB encoder in a breadboard enabling you to stop messing around with interrupt debugging and get back to your project! Utilizing our handy Qwiic system, no soldering is required to connect it to the rest of your system. However, we still have broken out 0.1"-spaced pins in case you prefer to use a breadboard.

One rotation in the clockwise direction for the rotary encoder increases the overall count by 24 and -24 in the counter-clockwise direction. The number of ‘ticks’ or steps you have turned the knob are all transmitted over I2C. The red, green, and blue LEDs are all set via software commands and can be digitally mixed to achieve over 16 million colors!

We designed Qwiic Twist with an indent encoder which gives the user a great ‘clicky’ feel. Additionally, the encoder has a built in button so the user can select an GUI menu or element by pressing down on the it. The Qwiic Twist uses a 6mm shaft and works great with our Clear Plastic Knob listed in the Hookup Accessories below or any other 6mm knob.

We’ve also written an Arduino library for the Qwiic Twist showing off all the different features of the Twist and for easy interfacing to the breakout including a litany of examples!


The SparkFun Qwiic Connect System is an ecosystem of I2C sensors, actuators, shields and cables that make prototyping faster and less prone to error. All Qwiic-enabled boards use a common 1mm pitch, 4-pin JST connector. This reduces the amount of required PCB space, and polarized connections mean you can’t hook it up wrong.


Get Started With the SparkFun Qwiic Twist Guide

  • Voltage: 3.3V
  • Current:
    • Approximately 2.8mA LEDs off
    • Approximately 40.6mA with LEDs on 100%
  • 24 ticks per rotation
  • Clockwise and counterclockwise direction is detected
  • Software configurable I2C address - up to 111 devices on a single bus
  • Built-in momentary button
  • RGB LED controlled via PWM allowing for up to 16M colors
  • Up to 400kHz I2C communication
  • Jumpers for address selection, interrupt pull up disable, and I2C pull up disable
  • I2C Address: 0x3F (Jumper Open, Default), 0x3E (Jumper Closed)
  • 2x Qwiic Connectors

SparkFun Qwiic Twist - RGB Rotary Encoder Breakout Product Help and Resources

Qwiic Twist Hookup Guide

December 13, 2018

Take your volume knob beyond 11 with the Qwiic Twist digital RGB LED encoder via I2C!

Core Skill: Programming

If a board needs code or communicates somehow, you're going to need to know how to program or interface with it. The programming skill is all about communication and code.

2 Programming

Skill Level: Rookie - You will need a better fundamental understand of what code is, and how it works. You will be using beginner-level software and development tools like Arduino. You will be dealing directly with code, but numerous examples and libraries are available. Sensors or shields will communicate with serial or TTL.
See all skill levels


Core Skill: Electrical Prototyping

If it requires power, you need to know how much, what all the pins do, and how to hook it up. You may need to reference datasheets, schematics, and know the ins and outs of electronics.

3 Electrical Prototyping

Skill Level: Competent - You will be required to reference a datasheet or schematic to know how to use a component. Your knowledge of a datasheet will only require basic features like power requirements, pinouts, or communications type. Also, you may need a power supply that?s greater than 12V or more than 1A worth of current.
See all skill levels


Customer Comments

  • I’m not that happy with this product. Even though it works to some extent it misses counts and has switch bounce issues I haven’t been able to resolve yet. I have 4 of them chained together and being run using a Teensy 3.5. Even the most basic example provided has issues with it constantly non-stop firing off interrupts. Seems like this is due to I2C communication which when you perform a “GET” command in your loop it will non-stop perform an interrupt. This seems to be creating problems reading the encoder accurately and the push switch also. Is interrupts really needed for Ic2 communications? You can see this by my forum post here https://forum.sparkfun.com/viewtopic.php?f=14&t=49095 The ATTINY84 is suppose to, on idle go into a sleep mode but it looks like it never does. There is a very similar product offered on tindie. It uses a PIC microcontroller instead of an ATTINY84 and looking at the firmware code does not perform an interrupt on every I2C command that gets requested data. Here is that device to compare to https://www.tindie.com/products/Saimon/i2c-encoder-v2/ it is very similar. Actually this one was developed several years ago. I might try these out and see how well they work. Or at least prototype the circuit for testing.

    • Thanks for reporting the issue! To answer one of your questions: No, you shouldn’t need interrupts at all. I prefer to poll each Twist I’ve got on the bus when I need input from the user. We’re working to recreate your interrupt issue as well.

      • Briansw / last week / 1

        Well, after fiddling around with my code I seem to have it working pretty good now. Thank you.

  • I’m very happy this product finally exists. I ended up having to make my own version of this for a current project that uses 19 RGB encoders. I also went with the attiny84, but I discovered that there’s quite a bit of variance in color (full white) from one to another. I’m using 1% resistors. Have you all at sparkfun found this to be true? I assumed it was because I’m not using constant current.

    • Thanks! We too use 1% resistors. It will depend on a few things, mainly where you get the encoder from. If the luminosity or forward voltage drop of the LEDs varies significantly you will see variance. For obvious cost reasons we went with a simple current limiter approach and haven’t noticed much variability between production units. That said, ‘white’ is never really white because of the perceived brightness of green vs red vs blue.

  • This seems like a really cool device. But I am wondering, are there any plans to offer this exact same thing but without the LED?

    I can envision quite a few applications where this would be really handy. But the price is a bit high if you don’t need/want the LED.

    Thanks, Joe

    • Good idea. We designed the hardware to support a normal, non-RGB encoder (with built in switch). I’ll see if I can get a product put together for it.

      Btw - does anyone have a preference for encoders with indents (the clicky feel as you twist) versus encoders without? The non-illuminated encoder market is quite large so we have lots of options.

      • I prefer the indents. I like the tactile feedback, they give. The clicky feeling is just so re-assuring.

      • That is a tough question for me to answer. It seems that just about every application in which I have seen encoders like this use indents. But I suppose there might be applications in which these would not be preferable. Maybe you can find two encoders that have the exact same footprint and mechanical specs but one has indents and the other doesn’t? That would mean you could design one board (or perhaps use the board you already have) and just change the BOM.

Customer Reviews

No reviews yet.