First init.
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
#include "Adafruit_seesaw.h"
|
||||
|
||||
// creates seesaw on I2C0 port
|
||||
Adafruit_seesaw ss = Adafruit_seesaw(&Wire);
|
||||
// uncomment this for using I2C1, such as STEMMA port on QT Py RP2040
|
||||
// Adafruit_seesaw ss = Adafruit_seesaw(&Wire1);
|
||||
|
||||
#define BUTTON_1 3
|
||||
#define BUTTON_2 13
|
||||
#define BUTTON_3 2
|
||||
#define BUTTON_4 14
|
||||
uint32_t button_mask = (1UL << BUTTON_1) | (1UL << BUTTON_2) |
|
||||
(1UL << BUTTON_3) | (1UL << BUTTON_4);
|
||||
#define JOY1_X 1
|
||||
#define JOY1_Y 15
|
||||
#define JOY2_X 0
|
||||
#define JOY2_Y 16
|
||||
|
||||
//#define IRQ_PIN 5
|
||||
|
||||
void setup() {
|
||||
Serial.begin(115200);
|
||||
|
||||
while(!Serial) {
|
||||
delay(10);
|
||||
}
|
||||
|
||||
Serial.println("PC Joystick QT example!");
|
||||
ss.begin(0x49);
|
||||
Serial.println("seesaw started");
|
||||
uint32_t version = ((ss.getVersion() >> 16) & 0xFFFF);
|
||||
if (version != 5753) {
|
||||
Serial.print("Wrong firmware loaded? ");
|
||||
Serial.println(version);
|
||||
while(1) delay(10);
|
||||
}
|
||||
Serial.println("Found Product 5753");
|
||||
|
||||
ss.pinModeBulk(button_mask, INPUT_PULLUP);
|
||||
ss.setGPIOInterrupts(button_mask, 1);
|
||||
|
||||
#if defined(IRQ_PIN)
|
||||
pinMode(IRQ_PIN, INPUT);
|
||||
#endif
|
||||
}
|
||||
|
||||
float last_x = 0, last_y = 0;
|
||||
|
||||
void loop() {
|
||||
delay(10); // delay in loop to slow serial output
|
||||
|
||||
float x = 0, y = 0;
|
||||
// These joysticks are really jittery so lets take 4 samples of each axis
|
||||
for (int s=0; s<4; s++) {
|
||||
x += ss.analogRead(JOY1_X);
|
||||
y += ss.analogRead(JOY1_Y);
|
||||
}
|
||||
x /= 4.0; // Take the average of the 4 samples
|
||||
y /= 4.0;
|
||||
// PC joysticks aren't "true" voltage divider, because we have a fixed 10K
|
||||
// we dont know the 'normalized' value so we're just going to give you
|
||||
// the result in 'Kohms' for easier printing
|
||||
x = (1024.0/(float)x - 1);
|
||||
y = (1024.0/(float)y - 1);
|
||||
|
||||
if ( (fabs(x - last_x) > 0.1) || (fabs(y - last_y) > 0.1)) {
|
||||
Serial.print(x); Serial.print(", "); Serial.println(y);
|
||||
last_x = x;
|
||||
last_y = y;
|
||||
}
|
||||
|
||||
#if defined(IRQ_PIN)
|
||||
if(!digitalRead(IRQ_PIN)) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
uint32_t buttons = ss.digitalReadBulk(button_mask);
|
||||
//Serial.println(buttons, BIN);
|
||||
|
||||
if (! (buttons & (1UL << BUTTON_1))) {
|
||||
Serial.println("Button 1 pressed");
|
||||
}
|
||||
if (! (buttons & (1UL << BUTTON_2))) {
|
||||
Serial.println("Button 2 pressed");
|
||||
}
|
||||
if (! (buttons & (1UL << BUTTON_3))) {
|
||||
Serial.println("Button 3 pressed");
|
||||
}
|
||||
if (! (buttons & (1UL << BUTTON_4))) {
|
||||
Serial.println("Button 4 pressed");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user