The Adafruit LED Arcade Button 1x4 STEMMA QT breakout uses a seesaw chip. To use the Arcade QT with Arduino, you'll use the Adafruit Seesaw library. With the STEMMA QT connectors, you can easily get started with no soldering necessary!
I2C Wiring
Here is how to wire up the breakout using one of the STEMMA QT connectors. The examples show a Metro but wiring will work the same for an Arduino or other compatible board.
- Connect board VIN (red wire) to Arduino 5V if you are running a 5V board Arduino (Uno, etc.). If your board is 3V, connect to that instead.
- Connect board GND (black wire) to Arduino GND
- Connect board SCL (yellow wire) to Arduino SCL
- Connect board SDA (blue wire) to Arduino SDA
Here is how to wire the breakout to a board using a solderless breadboard. To do this, you must solder header pins to the breakout.
- Connect board VIN (red wire) to Arduino 5V if you are running a 5V board Arduino (Uno, etc.). If your board is 3V, connect to that instead.
- Connect board GND (black wire) to Arduino GND
- Connect board SCL (yellow wire) to Arduino SCL
- Connect board SDA (blue wire) to Arduino SDA
Library Installation
You can install the Adafruit Seesaw library for Arduino using the Library Manager in the Arduino IDE.
Click the Manage Libraries ... menu item, search for seesaw , and select the Adafruit seesaw library:
When asked to install the Adafruit Seesaw library dependencies, click Install all.
/* * This example shows how read arcade buttons and PWM the LEDs on the Adafruit Arcade QT! */ #include "Adafruit_seesaw.h" #include <seesaw_neopixel.h> #define DEFAULT_I2C_ADDR 0x3A #define SWITCH1 18 // PA01 #define SWITCH2 19 // PA02 #define SWITCH3 20 // PA03 #define SWITCH4 2 // PA06 #define PWM1 12 // PC00 #define PWM2 13 // PC01 #define PWM3 0 // PA04 #define PWM4 1 // PA05 Adafruit_seesaw ss; void setup() { Serial.begin(115200); while (!Serial) delay(10); // wait until serial port is opened Serial.println(F("Adafruit PID 5296 I2C QT 4x LED Arcade Buttons test!")); if (!ss.begin(DEFAULT_I2C_ADDR)) { Serial.println(F("seesaw not found!")); while(1) delay(10); } uint16_t pid; uint8_t year, mon, day; ss.getProdDatecode(&pid, &year, &mon, &day); Serial.print("seesaw found PID: "); Serial.print(pid); Serial.print(" datecode: "); Serial.print(2000+year); Serial.print("/"); Serial.print(mon); Serial.print("/"); Serial.println(day); if (pid != 5296) { Serial.println(F("Wrong seesaw PID")); while (1) delay(10); } Serial.println(F("seesaw started OK!")); ss.pinMode(SWITCH1, INPUT_PULLUP); ss.pinMode(SWITCH2, INPUT_PULLUP); ss.pinMode(SWITCH3, INPUT_PULLUP); ss.pinMode(SWITCH4, INPUT_PULLUP); ss.analogWrite(PWM1, 127); ss.analogWrite(PWM2, 127); ss.analogWrite(PWM3, 127); ss.analogWrite(PWM4, 127); } uint8_t incr = 0; void loop() { if (! ss.digitalRead(SWITCH1)) { Serial.println("Switch 1 pressed"); ss.analogWrite(PWM1, incr); incr += 5; } else { ss.analogWrite(PWM1, 0); } if (! ss.digitalRead(SWITCH2)) { Serial.println("Switch 2 pressed"); ss.analogWrite(PWM2, incr); incr += 5; } else { ss.analogWrite(PWM2, 0); } if (! ss.digitalRead(SWITCH3)) { Serial.println("Switch 3 pressed"); ss.analogWrite(PWM3, incr); incr += 5; } else { ss.analogWrite(PWM3, 0); } if (! ss.digitalRead(SWITCH4)) { Serial.println("Switch 4 pressed"); ss.analogWrite(PWM4, incr); incr += 5; } else { ss.analogWrite(PWM4, 0); } delay(10); }
Press each button to see that button's LED pulse!
That's all there is to using the Arcade QT with Arduino!
Page last edited January 21, 2025
Text editor powered by tinymce.