From 971a39a1aa18f50b25f57830fbd9002e0c2186d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A1s=20Kun?= Date: Fri, 22 Dec 2017 21:23:12 +0100 Subject: [PATCH] fix 2-button mode for Stardust [BUGFIX]: 2 button mode for Stardust works now, problem was that the D11 used for aux switch was pulled low in the rogrammable kill key and also the switch pins needs to be declared as inputs with pullup --- Config_HW.h | 6 +++--- FX-SaberOS.ino | 2 ++ Light.cpp | 42 +++++++++++++++++++++++++++++------------- 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/Config_HW.h b/Config_HW.h index 1135861..a3d9786 100644 --- a/Config_HW.h +++ b/Config_HW.h @@ -36,7 +36,7 @@ // If your saber has only a single button to interact with the electronics, uncomment the next line // in case you have 2 buttons (referred to as main and aux buttons) leave this line commented out -#define SINGLEBUTTON +//#define SINGLEBUTTON #ifdef DIYINO_PRIME #define MAIN_BUTTON 12 @@ -60,8 +60,8 @@ * blocks from compile *************************************/ //#define LEDSTRINGS -#define STAR_LED -//#define PIXELBLADE +//#define STAR_LED +#define PIXELBLADE //#define ADF_PIXIE_BLADE /************************************/ diff --git a/FX-SaberOS.ino b/FX-SaberOS.ino index d85f32b..6ebf3e8 100644 --- a/FX-SaberOS.ino +++ b/FX-SaberOS.ino @@ -417,6 +417,7 @@ Serial.println(configAdress); /***** BUTTONS INITIALISATION *****/ // link the Main button functions. + pinMode(MAIN_BUTTON, INPUT_PULLUP); mainButton.setClickTicks(CLICK); mainButton.setPressTicks(PRESS_CONFIG); mainButton.attachClick(mainClick); @@ -427,6 +428,7 @@ Serial.println(configAdress); #ifndef SINGLEBUTTON // link the Lockup button functions. + pinMode(AUX_BUTTON, INPUT_PULLUP); lockupButton.setClickTicks(CLICK); lockupButton.setPressTicks(PRESS_CONFIG); lockupButton.attachClick(lockupClick); diff --git a/Light.cpp b/Light.cpp index 1c96450..6a2f38f 100644 --- a/Light.cpp +++ b/Light.cpp @@ -41,7 +41,7 @@ extern struct StoreStruct { }storage; extern SoundFont soundFont; - +extern uint8_t ledPins[]; # if defined ACCENT_LED unsigned long lastAccent = millis(); #endif @@ -881,12 +881,20 @@ void lightBlasterEffect(uint8_t ledPins[], uint8_t pixel, uint8_t range, cRGB Sn void pixelblade_KillKey_Enable() { #if defined PIXELBLADE or defined ADF_PIXIE_BLADE // cut power to the neopixels stripes by disconnecting their GND signal using the LS pins - digitalWrite(3, LOW); - digitalWrite(5, LOW); - digitalWrite(6, LOW); - digitalWrite(9, LOW); - digitalWrite(10, LOW); - digitalWrite(11, LOW); + #ifdef DIYINO_STARDUST + for (uint8_t j = 0; j < 3; j++) { + #endif + #ifdef DIYINO_PRIME + for (uint8_t j = 0; j < 6; j++) { + #endif + digitalWrite(ledPins[j], LOW); + } + //digitalWrite(3, LOW); + //digitalWrite(5, LOW); + //digitalWrite(6, LOW); + //digitalWrite(9, LOW); + //digitalWrite(10, LOW); + //digitalWrite(11, LOW); #ifdef PIXELBLADE digitalWrite(DATA_PIN,HIGH); // in order not to back-connect GND over the Data pin to the stripes when the Low-Sides disconnect it #else if ADF_PIXIE_BLADE @@ -898,12 +906,20 @@ void pixelblade_KillKey_Enable() { void pixelblade_KillKey_Disable() { #if defined PIXELBLADE or defined ADF_PIXIE_BLADE // cut power to the neopixels stripes by disconnecting their GND signal using the LS pins - digitalWrite(3, HIGH); - digitalWrite(5, HIGH); - digitalWrite(6, HIGH); - digitalWrite(9, HIGH); - digitalWrite(10, HIGH); - digitalWrite(11, HIGH); + #ifdef DIYINO_STARDUST + for (uint8_t j = 0; j < 3; j++) { + #endif + #ifdef DIYINO_PRIME + for (uint8_t j = 0; j < 6; j++) { + #endif + digitalWrite(ledPins[j], HIGH); + } + //digitalWrite(3, HIGH); + //digitalWrite(5, HIGH); + //digitalWrite(6, HIGH); + //digitalWrite(9, HIGH); + //digitalWrite(10, HIGH); + //digitalWrite(11, HIGH); #endif }