97 lines
2.1 KiB
C++
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);
|
|
}
|