add input neopixel leds and fix stuck key

This commit is contained in:
interfisch 2025-05-20 23:41:01 +02:00
parent 80b4d1df3e
commit e8918d88e8
2 changed files with 56 additions and 11 deletions

View file

@ -24,10 +24,12 @@ lib_deps =
build_flags =
-D PIXELPIN=4
-D NUMPIXELS=600
-D PIXELPIN=10
-D NUMPIXELS=4
-D CHANNEL=1
-D PIN_IN1=14
-D PIN_IN2=13
-D PIN_IN3=12

View file

@ -16,6 +16,14 @@
Adafruit_NeoPixel statuspixel(1, PIN_NEOPIXEL, NEO_GRB + NEO_KHZ800);
#endif
#ifdef PIXELPIN
Adafruit_NeoPixel pixel(NUMPIXELS, PIXELPIN, NEO_GRB + NEO_KHZ800); //pixels for input channels
#endif
#ifndef ARDUINO_USB_MODE
#error This ESP32 SoC has no Native USB interface
@ -32,9 +40,9 @@ USBHIDKeyboard Keyboard;
uint32_t controllercolors[]={\
statuspixel.Color(255, 0,0),\
statuspixel.Color(0, 255,0),\
statuspixel.Color(0,0, 255),\
statuspixel.Color(255, 0,255)\
statuspixel.Color(0, 0,255),\
statuspixel.Color(255,255, 0),\
statuspixel.Color(100, 100,100)\
};
uint8_t keyassignments[NUM_CONTROLLERS][INPUT_SIZE];
@ -99,24 +107,55 @@ void setup() {
//Flash colors for debug
statuspixel.setPixelColor(0, statuspixel.Color(255, 0,0));
statuspixel.show();
delay(250);
delay(100);
statuspixel.setPixelColor(0, statuspixel.Color(0, 255,0));
statuspixel.show();
delay(250);
delay(100);
statuspixel.setPixelColor(0, statuspixel.Color(0, 0,255));
statuspixel.show();
delay(250);
delay(100);
statuspixel.clear();
statuspixel.show();
#endif
#ifdef PIXELPIN
pixel.begin();
pixel.setBrightness(100); // not so bright
pixel.clear();
//Flash colors for debug
for (uint8_t i=0;i<NUMPIXELS;i++) {
pixel.setPixelColor(i, pixel.Color(255, 255,255));
pixel.show();
delay(100);
pixel.clear();
}
pixel.clear();
pixel.show();
#endif
Serial.println("Started");
Keyboard.begin();
USB.begin();
bool usbresult=USB.begin();
if (!usbresult) {
for (uint8_t i=0;i<5;i++) {
statuspixel.setPixelColor(0, statuspixel.Color(255, 100,0));
statuspixel.show();
delay(100);
statuspixel.clear();
statuspixel.show();
delay(100);
}
}else{
statuspixel.setPixelColor(0, statuspixel.Color(0, 255,0));
statuspixel.show();
delay(500);
}
}
@ -135,12 +174,16 @@ void loop() {
if (in[i]!=in_last_wired[i] && loopmillis-last_in_time[i]>=DEBOUNCETIME_WIRED) { //changed?
if (!in[i]) {
Keyboard.pressRaw(keyassignmentsWired[i]);
pixel.setPixelColor(i, pixel.Color(0,0,0));
}else{
Keyboard.releaseRaw(keyassignmentsWired[i]);
pixel.setPixelColor(i, controllercolors[i]);
}
pixel.show();
last_in_time[i]=millis();
in_last_wired[i]=in[i];
}
in_last_wired[i]=in[i];
}
}