We are still shipping! However, order processing may take longer than usual and we cannot guarantee same day shipments due to staffing guidelines from the CDC. Please see all COVID-19 updates here. Thank you for your continued support.

SparkFun Qwiic Keypad - 12 Button

Keypads are very handy input devices, but who wants to tie up seven GPIO pins, wire up a handful of pull-up resistors, and write firmware that wastes valuable processing time scanning the keys for inputs? The SparkFun Qwiic Keypad comes fully assembled and makes the development process for adding a 12 button keypad easy. No voltage translation or figuring out which I2C pin is SDA or SCL, just plug and go! 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.

Each of the keypad's 12 buttons has been labeled 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, *, and # and has been formatted to into the same layout as a telephone keypad with each keypress resistance ranging between 10 and 150 Ohms. The Qwiic Keypad reads and stores the last 15 button presses in a First-In, First-Out (FIFO) stack, so you don’t need to constantly poll the keypad from your microcontroller. This information, then, is accessible through the Qwiic interface. The SparkFun Qwiic Keypad even has a software configurable I2C address so you can have multiple I2C devices on the same bus.

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.

  • Software Selectable Slave Address
  • Low Power ATtiny85 controller
  • Button Presses w/ Time Stamp
  • Default I2C Address: 0x4B
  • 2x Qwiic Connector

SparkFun Qwiic Keypad - 12 Button Product Help and Resources

Qwiic Keypad Hookup Guide

April 25, 2019

If you are tired of taking up GPIO pins, wiring a bunch of pull up resistors, and using firmware that scans the keys taking up valuable processing time... check out the new Qwiic Keypad.

Keyboard Shortcut, Qwiic Keypad

April 25, 2019

A simple project using the Qwiic Keypad and the RedBoard Turbo to create your own custom hotkey-pad.

Qwiic Pro Micro USB-C (ATmega32U4) Hookup Guide

February 6, 2020

An overview of the ATmega32U4-based Qwiic Pro Micro USB-C, how to install it, and how to use it with Arduino.

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.

2 Electrical Prototyping

Skill Level: Rookie - You may be required to know a bit more about the component, such as orientation, or how to hook it up, in addition to power requirements. You will need to understand polarized components.
See all skill levels


Looking for answers to technical questions?

We welcome your comments and suggestions below. However, if you are looking for solutions to technical questions please see our Technical Assistance page.

  • There is a CircuitPython library now available for the Qwiic Keypad and the Raspberry Pi. The source code, examples, installation information and documentation are available on GitHub.


  • Is the source code for the firmware available? I checked the github page and saw the compiled hex. I want to adapt this concept to a 4x4 keypad such as https://cdn.sparkfun.com//assets/parts/1/3/1/6/0/14881-Keypad_-_16_Button-04.jpg I figure I would do away with the pin devoted to address select and hard-code the address in and use that pin to cover the additional column. ...Or if SparkFun wants to offer what I am proposing as a product, I'd gladly purchase it. Either way, I am trying to integrate a 4x4 in to my project and I have limited I/O available especially after the OLD on the 8266 that I am using, so i2C seems the perfect solution..... https://i.imgur.com/c1jCWzw.png

    • Hi Damage, Sounds cool. The source code is available here:


      To compile, you will need to install the keypad library, located at link below (but you can also find it in library manager if you search "keypad" and scroll down to find the one "by Mark Stanley, Alexander Brevig"


      Thanks for reaching out and good luck. FWW, during the release of this product, we did consider creating a 4x4 version to work with our 16 button keypad, but unfortunately, we are not planning on continuing to sell the 4x4 button keypad. (It was actually sent to us by accident from our supplier).

      Let us know how it goes!

      • Hey Again, I just added a link in the source code for easily finding the correct keypad library and installing it (via library manager). Hope this helps!


        • Thanks Pete, This is perfect. I had been messing with the keypad library previously, so getting this up and running should be pretty easy. I have a busy couple of weeks, but once I get it up and running, I'll post back. Thanks again!

  • Useful product at the right price. Really easy way to add a keypad to an Arduino project without using up input pins and processor time and space.

  • I'd really like to see actual documentation for these Qwiic boards. I'm trying to interface with them from a non-arduino processor and writing my own (non C) libraries is difficult based on the barely commented arduino libs. Every other i2c IC comes with good register lists, state machines, ... and so on.

    Spoiler alert, the register list from the arduino lib for this keypad is wrong and I had to read the (user supplied) python lib below to find the real values. The sparkfun library lists them as 0x01,2,4,5,6,7,8 but the actual registers (not surprisingly) are 0x01,2,3,4,5,6,7.

    It's fine, I figured it out.... It's not like it doesn't work. I just... expected more from sparkfun. Pretty unprofessional on this front.

    • Unfortunately, we probably haven't created a "true" datasheet as most of our customers wouldn't utilize it. That being said, I think you are the first customer to actually request such documentation and I will pass it along to the engineering department.

      Just as a heads up, the I2C registers are usually listed in the hookup guide under the Hardware Overview section. Also, you can use the link in the banner above to get started with posting a topic in our forums to request for technical assistance with getting a register map.

      Thanks for pointing out the typo in the library's commentation. That part of the library auto-increments, so it is easy to miss the typo in the comments.

Customer Reviews

3.8 out of 5

Based on 4 ratings:

Currently viewing all customer reviews.

0 of 2 found this helpful:

No documentation and incorrect libraries

This is pitched as a "easy to integrate" board, but it is anything but! You're probably better off finding any of the other keypads on the market and using the abundant documentation to connect them to your project. The documentation for this project is wrong in important ways and incomplete in others.

Look elsewhere.

Hello, and thanks for your review. We've reviewed the hookup guide and everything there seems to be correct and functional. If you're still having trouble, please reach out to our technical assistance department to see if they can help.

Qwiic makes use incredibly easy

It probably took three minutes to go from opening the package to having keypad input in my project. I just wish there was a Qwiic version of the 16x2 LCD!

Great Keypad

Example code makes it easy to get up and going quick!! Qwiic connection is convenient

Very Good

I'm a newbe but have done some code many years ago. I was looking for a solution for i2c keypads. I already had a key pad with a i2c module hook to it. When I saw this I thought WOW this has everything. After I got it going I was surprised that it slowed down my sketch considerably. Now I understand that with the buffer I don't need to poll this as often, but apples to apples my sketch lost 18 minutes / 12hrs. I know this can be overcome, but for my project I returned to the previous keypad. However after I get a little more time I will re investigate this again. Bob