Files
2025-10-12 09:13:56 +02:00

97 lines
2.1 KiB
C++

/*
* 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);
}