Code even for ESP32 too long? (can't be compiled)

Hello, i have a problem compiling my code for my ESP32... It's a long code (2763 lignes) and it can't be compiled by Arduino IDE (it sais that e.g. functions are not declared that are actually written in the code, so the compiler complaines for nothing..)
Is it possible that it is simply just too long or sth ? (The code worked fine for a long time)

one example of the long error message is in the picture below

Read the compiler's messages, fix the bugs and code will compile fine. 3000 lines is not long
(you probably have missing brackets or double quote etc... try to indent the code to see what it looks like)

Are you really using interrupts to read human actuated switches?

Please do not post screenshots of code. Read the forum guidelines to see how to properly post code and some good information on making a good post.
Use the IDE autoformat tool (ctrl-t or Tools, Auto format) before posting code in code tags.

Please include the entire error message. It is easy to do. There is a button (lower right of the IDE window) called "copy error message". Copy the error and paste into a post in code tags. Paraphrasing the error message leaves out important information.

There are no missing brackets or sth... But let me check... I just dont get it why it tells me that the function is not declared even if it is there

post the code
(if all feels right, you might be a victim of the IDE trying to be smart)

//---<include>---------------------------------------------------------------------------------------------------------------------------
//acceleration:
#include "A_acceleration.h"
A_acceleration Accelerometer;
double acceleration;


//NeoPixels
#include <Adafruit_NeoPixel.h>
#define PIN 33
int NUMPIXELS = 144;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//WiFi
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>


//---<define_ButtonPINS>-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//normale Taster
#define BTN_MENU 13
#define BTN_ON 4
#define BTN_CH 0
#define BTN_BP 2
#define BTN_MELT 15

//Potis
#define crystalPOTI 35

//---<ctrl_Variables>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
String saberMode = "Lightsaber";  //MP3-Player; Taschenlampe; Lightsaber
String saberState = "SETUP"; //kontrolliert allgemein was es gerade macht
String saberSoundMODE; //kontrolliert was mit den sounds gemacht werden soll ->kein Sound|normaler Sound (evt auch ohne smoothswing machen!)|Musik (wenn 3 MP3-plaer reingehen dann auch gleichzeitig!)
                       // -> um jeden sound command drum rum
String interruptState;
boolean bladeON = false;

boolean WiFiMODE = true; //!!!!!!!!!!

char lightningParryCtrl = 'f';
char meltCtrl = 'f';
char tipDragCtrl = 'f'; //f bedeutet false, bedeutet, dass der Saberstate vorher nicht melt oder tipDrag war!
//---<system_Interne_Variablen>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//WiFi:
const char* ssid = "vyzecSabers";
const char* password = "HelloThere!";
AsyncWebServer server(80);

//Timer:
unsigned long currentMillis = millis();
unsigned long previousMillis = 0;

unsigned long debounce_currentMillis = millis();
unsigned long debounce_previousMillis = 0;

//Buttons:
/**/int shortPress = 180;
int debounceTime = 150;

String menu_btnState = "high";
String bP_btnState = "high";
String melt_btnState = "high";

int menu_btnCounter = -1;
/**/int menu_btnTime = 1000;

//potentiometer:
int crystal_potiVal;

//DELAY:
int DELAY_VAL = 10;




//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-NEOPIXEL->>>=======================================================================================================================================================================================================================
/**/int startLength = 15;

/*!!!*/int L_modifiers_color_R = 250; 
/*!!!*/int L_modifiers_color_G = 112;//112;//70
/*!!!*/int L_modifiers_color_B = 0;

int L_modifiers_Color_R = L_modifiers_color_R;
int L_modifiers_Color_G = L_modifiers_color_G;
int L_modifiers_Color_B = L_modifiers_color_B;

/*!!!*/int L_modifiers_blinkColor_R = 255;
/*!!!*/int L_modifiers_blinkColor_G = 170;
/*!!!*/int L_modifiers_blinkColor_B = 130;

/*!!!*/int L_modifiers_meltColor_R = 255;
/*!!!*/int L_modifiers_meltColor_G = 170;
/*!!!*/int L_modifiers_meltColor_B = 130;

volatile int bC_fadeBuffer_R[101]; //bC = blinkColor 
volatile int bC_fadeBuffer_G[101]; //Feld fĂĽr Fadestufen zwischen R und blinkColorR
volatile int bC_fadeBuffer_B[101];

//---<driveOut>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String driveOut_animation = "default"; //"slowGlow"
/*!!!*/int driveOut_Speed = 8;
/*!!!*/int driveOut_Steps = 2;

//slowGlow:
/*!*/int slowGlow_color_R = 0;//0;
/*!*/int slowGlow_color_G = 0;//0;
/*!*/int slowGlow_color_B = 250;//250;
/*!*/int slowGlow_color_Rx = 0;//0;
/*!*/int slowGlow_color_Gx = 0;
/*!*/int slowGlow_color_Bx = 220;//220;

/**/int startSpeed = 5;
/**/int rdmPixelCount = 3;


//---<driveIn>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String driveIn_animation = "default";
/*!!!*/int driveIn_Speed = 8;
/*!!!*/int driveIn_Steps = 2;


//---<crystal>--------------------------------------------------------------------------------------------------------------------------------------------------
//stripes:
/*!!!*/int L_modifiers_blinkColor_R2 = 100;        //Farbe der Stripes
/*!!!*/int L_modifiers_blinkColor_G2 = 45;//45;
/*!!!*/int L_modifiers_blinkColor_B2 = 0;

volatile int fadeBuffer_R[101];         //Felder in denen Fade-Stufen zwischen R und R2 z.B gespeichert werden, damit sie nicht immer nue berechnet werden mĂĽssen
volatile int fadeBuffer_G[101];
volatile int fadeBuffer_B[101];

int stripes[180];//x, y, ctrlPin, z

/**/int crystalStripesSetup_x1 = 13;
/**/int crystalStripesSetup_x2 = 13;
/**/int crystalStripesSetup_y1 = 7;
/**/int crystalStripesSetup_y2 = 7;
/**/int crystalStripesSetup_z1 = 12;
/**/int crystalStripesSetup_z2 = 12;
/**/int crystalStripesSetup_additionalStripes = 120;

/*!!!*/int crystal_stripeSpeed = +2;
/**/int crystal_fadeBrightness1 = 180;
/**/int crystal_fadeBrightness2 = 230;
/**/int crystal_wholeFadeSteps = 10;


//whole:
/*!!!*/int stripeBrightness = 255;
int fadeBrightness;
int wholeCounter = 0;
String wholeState = "new";
int fadeSpeed1;
int fadeSpeed2;


//---<blasterProtect>---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String blasterProtect_animation = "default";

/**/int blasterProtect_posMIN =30;
/**/int blasterProtect_posMAX =110;

/**/int blasterProtect_xMIN =5;
/**/int blasterProtect_xMAX =15;
/**/int blasterProtect_yMIN =5;
/**/int blasterProtect_yMAX =15;

/**/int blasterProtect_fadeSteps =3;
/**/int blasterProtect_brightness =100;
/**/boolean blasterProtect_flash = true;


//default:
int bP_ctrlPin;
String bP_displayState = "new";
int bP_Counter = 0;
int bP_x;
int bP_y;


//---<clash>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String clash_animation = "clash_precise";

String clashState = "new";

//precise:
/**/int clash_precise_animation = 4;
/**/int clash_precise_groesseMIN = 3;
/**/int clash_precise_groesseMAX = 7;
/**/int clash_precise_fadeSteps = 3;
/**/boolean clash_precise_delay = false;

int clash_precise_size;


//---<clashHold>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String clashHold_animation = "default";
/*!!!*/String clashHold_fadeOut_animation = "default";

//default:
/**/int clashHold_default_brightnessMIN = 60;
/**/int clashHold_default_brightnessMAX = 150;
/**/int clashHold_default_pixlBright = 1.5;
/**/int clashHold_default_pixlAnzahl = 15;

//--fadeOut:
//default:
/**/int clashHold_fadeOut_default_Steps = 2;

//---<lightningParry>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String lightningParry_animation = "default";

String lightningParryState = "new";

int lightningParry_stripeAnzahl = 0;
int lightningParry_Count = 0;
int lightningParry_data[101];
//kommentar für mich: bei der funktion sobald sie gestartet wird zufällig position und anzahl der einzelnen Streifen anlegen im Feld (-> einsteööbar durch Übergabepararmeter)

//---<tipDrag>---------------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String tipDrag_animation = "default";
/*!!!*/String tipDrag_fadeOut_animation = "default";
/*!!!*/int tipDrag_crossingColor_R = 230;
/*!!!*/int tipDrag_crossingColor_G = 20;
/*!!!*/int tipDrag_crossingColor_B = 0;
String tipDrag_state = "new";

int tipDrag_xLength;
int tipDrag_yLength;
int tipDrag_zLength;

/*!!!*/int tipDrag_x_Length = 15;
/**/int tipDrag_y_Length = 2;
/**/int tipDrag_z_Length = 2;

/**/int tipDrag_fadeIn_Out_Steps = 3;

//default:
int tipDrag_deault_counter = 0;

//---<melt>------------------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String melt_animation = "default";
/*!!!*/String melt_fadeOut_animation = "default";

/*!!!*/int melt_meltColor_R = 255;//255
/*!!!*/int melt_meltColor_G = 60;//180
/*!!!*/int melt_meltColor_B = 0;//120
/*!!!*/int melt_meltColor_R2 = 190;//135
/*!!!*/int melt_meltColor_G2 = 10;//36
/*!!!*/int melt_meltColor_B2 = 0;//0

/*!!!*/int melt_crossingColor_R = 230;
/*!!!*/int melt_crossingColor_G = 20;
/*!!!*/int melt_crossingColor_B = 0;

String melt_state = "new";

int melt_xLength;
int melt_yLength;
int melt_zLength;

/*!!!*/int melt_x_Length = 120;  //"geschmolzenes"
/**/int melt_y_Length = 3;   //crossingColor-abschnitt (zwischen normaler Klinge und dem "geschmolzenen")
/**/int melt_z_Length = 2;   //fade

/**/int melt_fadeIn_Out_Steps = 3;

//default:
int melt_deault_counter = 0;



//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-FUNCTIONS [preset]->>>=======================================================================================================================================================================================================================
/*
  void saber_driveOut(String animation){}
  void saber_driveIn(String animation){}
  void crystal(int stripeSpeed, int fadeBrightness1, int fadeBrightness2, int wholeFadeSteps){}
  void saber_blasterProtect(String animation, int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash){}
  void saber_lightningParry(String animation){}
  void saber_clash(String animation){}
  void saber_clashHold(String animation, String fadeOut_animation){}
  void saber_tipDrag(String animation, String fadeOut_animation){}
  void saber_melt(String animation, String fadeOut_animation){}
  int calculateColorVal(int xcolorOld, int xcolorNew, int xproportion, int xpropFact){}
  void fadeWhole(int newBrightnessMIN, int newBrightnessMAX, int fadeSpeedMIN, int fadeSpeedMAX, int fadeSpeedMIN2, int fadeSpeedMAX2, int Steps, boolean sD){}
  void displayStripes(int brightness){}
  void moveStripes(int bewegungsfaktor){}
  void newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){}
  void loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){}
  void loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){}
  void crystalStripesSetup(int xa, int xb, int ya, int yb, int za, int zb, int additionalStripes, boolean sD){}
  void blasterProtect(int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash, int delaySideSpan){}
  void bC_newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){}
  void bC_loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){}
  void bC_loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){}
  void clash_precise(boolean delaySideSpan, int fadeSteps){}
  void clash_precise_XS(int delaySidespan, int fadeSpeps){}
  void clash_precise_S(int delaySidespan, int fadeSpeps){}
  void clash_precise_M(int delaySidespan, int fadeSpeps){}
  void clash_precise_L(int delaySidespan, int fadeSpeps){}
  void clash_precise_XL(int delaySidespan, int fadeSpeps){}
  void clash_precise_XXL(int delaySidespan, int fadeSpeps){}
  void clash_precise_XXXL(int delaySidespan, int fadeSpeps){}
  void clashHold_default(int brMIN, int brMAX, float pixlBright, int pixlAnzahl){}
  void clashHold_default_fadeOut(int steps){}
  void lightningParry_default(int anzahlMIN,int anzahlMAX,  int xMIN,int xMAX,  int yMIN,int yMAX,  int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){}
  void lightningParry_default_displayStripes(int xBrightness){}
  void lightningParry_default_fadeOut(int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){}
  void tipDrag_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){}
  void tipDrag_default_stop(int xfadeIn_Out_Steps){}
  void melt_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){}
  void melt_default_stop(int xfadeIn_Out_Steps){}
  void driveOut_default(int Speed, int Steps){}
  void driveOut_slowGlow(int startLength, int startSpeed, int rdmPixelCount, int Speed, int Steps){}
  void slowGlow_rdm_pixels(int startLengthX){}
  void driveIn_default(int Speed, int Steps){}
  void btnSetup(){}
  void interrupt_on(){}
  void interrupt_cH(){}
  void interrupt_bP(){}
  void interrupt_melt(){}
  void interrupt_menu(){}
  void checkBTNmenu(){}
  void checkBTNmenu_counting(){}
  void checkBTNblasterProtect(){}
  void checkBTNmelt(){}
  void lightsaberSetup(){}
  void startTimer(){}
  unsigned long stopTimer(){}
  void debounce_startTimer(){}
  unsigned long debounce_stopTimer(){}
*/


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-WIFI-SERVER->>>=======================================================================================================================================================================================================================
//---<HTML>--------------------------------------------------------------------------------------------------------------------------------------------------------

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
      <!--=== topNav ===========================================================================================================================================================================================================================================-->
      <div class="topnav">
        <a class="active" href="/index.html">Home</a>
        <a href="/instructions.html">Instructions</a>
        <a href="/about.html">About</a>
        <a href="/edit.html">Edit</a>
      </div>
    </header>

    <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
    <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
      Top
    </button>

    <h1>vyzecSaber</h1>

    <script>
      //put post & get requests here!
    </script>
    <script>
      //to make the website work smoothly
      //=== scrollToTop_btn =====================================================================================================================================================================================
      var mybutton = document.getElementById("scrollToTop_btn");
      window.onscroll = function () {
        scrollFunction();
      };

      function scrollFunction() {
        if (
          document.body.scrollTop > 20 ||
          document.documentElement.scrollTop > 20
        ) {
          mybutton.style.display = "block";
        } else {
          mybutton.style.display = "none";
        }
      }
      function topFunction() {
        document.body.scrollTop = 0;
        document.documentElement.scrollTop = 0;
      }
    </script>
  </body>
</html>
)rawliteral";

const char instructions_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a class="active" href="/instructions.html">Instructions</a>
          <a href="/about.html">About</a>
          <a href="/edit.html">Edit</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>

    
    <section>
        <!--=== Links zu den einzelnen Profilen ====================================================================================================================================================================================================================================================================================-->
        <a
          href="https://www.youtube.com/watch?v=kYtGl1dX5qI&list=RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVMNFNQEPcgsmA&index=4"
        >
          <button class="splitBtn">Turorials on YouTube</button></a
        >
        <div class="dropdown">
          <button
            class="splitBtn"
            style="border-left: 3px solid #0d8bf2"
          ></button>
          <div class="dropdown-content">
            <a href="#">How to: getting started</a>
            <a href="#">How to: advanced saber settings</a>
            <a href="#">How to: repair & change parts</a>
            <a href="#">How to: write own code 4 it</a>
          </div>
        </div>
      </section>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";

const char about_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a href="/instructions.html"">Instructions</a>
          <a class="active" href="/about.html">About</a>
          <a href="/edit.html">Edit</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    
      <h1>The Saber & parts:</h1>
      <p>processor: ESP32-DevKit-C</p>
      <h2>sensors:</h2>
      <p>acceleration: MPU6050</p>
      <p>settings: 2x 10k potentiometer</p>
      <h2>sound:</h2>
      <p>speaker: MPU6050</p>
      <p>playing sound: DF-PlayerMini</p>
      <h2>hilt:</h2>
      <br>
      <h1>Time & coder:</h1>
      <p>project started: 24.7.2021</p>
      <p>project completed: -||-</p>
      <br>
      <h1>The Code:</h1>
      <p></p>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";

const char edit_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a href="/instructions.html">Instructions</a>
          <a href="/about.html">About</a>
          <a class="active" href="/edit.html">Edit</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>

    
      <section>
        <!--=== Links zu den einzelnen Profilen ====================================================================================================================================================================================================================================================================================-->
        <a
          href="e_profile1.html"
        >
          <button class="splitBtn">Profile 1</button></a
        >
        <div class="dropdown">
          <button
            class="splitBtn"
            style="border-left: 3px solid #0d8bf2"
          ></button>
          <div class="dropdown-content">
            <a href="e_profile1_sound.html">Sound</a>
            <a href="e_profile1_crystal.html">Crystal</a>
          </div>
        </div>
      </section>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";

const char e_profile1_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
            <a href="/index.html">Home</a>
            <a href="/edit.html">>>Edit</a>
            <a class = "active" href="/e_profile1.html">Profile 1</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    <h2>current Profile-Settings:</h2>
    <p>display variables here!</p>
    
    <section>
        <!--=== Links zu den einzelnen Einstellungs-Seiten ====================================================================================================================================================================================================================================================================================-->
        <a
          href="e_profile1_sound.html"
        >
          <button class="splitBtn">Sound-Settings</button></a
        >
    </section>

    <section>
        <!--=== Links zu den einzelnen Einstellungs-Seiten ====================================================================================================================================================================================================================================================================================-->
        <a
          href="e_profile1_crystal.html"
        >
          <button class="splitBtn">Crystal-Settings</button></a
        >
    </section>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>  
)rawliteral";
const char e_profile1_crystal_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
            <a href="/index.html">Home</a>
            <a href="/edit.html">>>Edit</a>
            <a href="/e_profile1.html">>>Profile 1</a>
            <a class = "active" href="/e_profile1_crystal.html">Crystal Settings</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    <h2>current Crystal-Settings:</h2>
    


  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";
const char e_profile1_sound_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a href="/edit.html">>>Edit</a>
          <a href="/e_profile1.html">>>Profile 1</a>
          <a class = "active" href="/e_profile1_sound.html">Sound Settings</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    <h2>current Sound-Settings:</h2>
    


  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";
//---<processor>--------------------------------------------------------------------------------------------------------------------------------------------------------

//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-SETUP/ASYNC->>>=====================================================================================================================================================================================================SETUP
void setup() {
  Serial.begin(115200);
  pixels.begin();pixels.clear();pixels.setBrightness(stripeBrightness);pixels.show();

  

  btnSetup();
  Accelerometer.Setup();
  pinMode(crystalPOTI, INPUT);
  
  if(saberState == "SETUP" || "editSaber"){
    Serial.println("initialize CyberCrystal");
    lightsaberSetup();
    Serial.println("initialized CyberCrystal");

    //SETUP //fĂĽr ALLES
    //  -> erst technische Komponente wie SD etc etc
    //  -> dann Variablen deklarieren (-> aktives Profil checken
    //                                 -> textfiles aus dem Ordner lesen und so die variablen deklarieren)
    //                                 und buffer laden etc etc
  }

  if(WiFiMODE == true){
  //---<<<-WIFI-SERVER->>>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //WiFi-Einstellungen nur fĂĽrs Lichtschwert geeignet
  //  WEBSERVER!
  //   -> bei jeder Variablenänderung Wert direkt in File auf der SD speichern! (jede Variable braucht einzelnes .txt file!!!!)
  //   -> SAVE/übernehmen Knopf!!! => wenn der gedrückt wird werden die Einstellungen übernommen und buffer etc gefüllt, sofern das editierte als aktiver Körper ausgewählt ist
  //   -> wenn profil geändert wird Variablen neu deklarieren und buffer laden!

  //WiFi:
  
  
  Serial.println("setUp Webserver..");

  WiFi.softAP(ssid, password);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);
  

  //---<server.on>-----------------------------------------------------------------------------------------------------------------------------
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html);
  });
  server.on("/index.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html);
  });
  
  server.on("/instructions.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", instructions_html);
  });
  server.on("/about.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", about_html);
  });

  server.on("/edit.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", edit_html);
  });
  server.on("/e_profile1.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_html);
  });
  server.on("/e_profile1_crystal.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_crystal_html);
  });
  server.on("/e_profile1_sound.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_sound_html);
  });
  

  
  server.begin();
  }


  Serial.println("Setup completed!");
}


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-LOOP->>>=============================================================================================================================================================================================================LOOP
void loop() {
  //while(saberState == "ready"){} //schleife in der Er sich fängt wenn die Klinge aus ist -> hier auch gleich schon edit mode evt ? 

  //===-Lightsaber-====================================================================================================================================================================================================Lightsaber
  while(saberMode == "Lightsaber"){
    if(saberState == "driveOut"){
      saber_driveOut(driveOut_animation);
      //saber_driveOut("slowGlow", sonstige Parameter);sound(); //1x abspielen => saberState = on;
      Serial.println("driveOut");
    }
    if(saberState == "driveIn"){
      saber_driveIn(driveIn_animation);
      //saber_driveOut("default", sonstige Parameter);sound(); //1x abspielen => saberState = ready;
      Serial.println("driveIn");
    }

    //---<bladeON-Funktionen>-----------------------------------------------------------------------------------------------------
    if(bladeON == true){
      //---<timed_Interrupts>-----------------------------------------------------------------------------------
      checkBTNmenu();
      checkBTNmenu_counting();
      checkBTNblasterProtect();
      checkBTNmelt();

      //---<Accelerometer>-----------------------------------------------------------------------------------------------------------
      if(saberState != "melt"){
        acceleration = Accelerometer.beschleunigungLesen(0.05);
        if(Accelerometer.detectClash()>0.3){saberState = "clash"; clashState = "new"; bP_displayState = "new";}//wenn hier bP = "new" steht heiĂźt das, dass die clash precise animation unterbrochen werden kann   bP_displayState = "new";
      }
      
      if(saberState == "on" || "blasterProtect" || "tipDrag" || "melt" || "menĂĽBTN" || "clash"){// immer dann wenn die Aktion des schwertes nicht die ganze Kling bedeckt
        //[if(!sound){sound} //default sounds spielen sobald sie nicht mehr gespielt werden -> aber nur wenn saberState == on!
        //[beschleunigung.messen //nicht zu oft! 
        //crystal
        //normales Zeug :D
        //Serial.println("on");
        
        crystal(crystal_stripeSpeed,
                crystal_fadeBrightness1,
                crystal_fadeBrightness2,
                crystal_wholeFadeSteps);
      }
      if(saberState == "blasterProtect"){saber_blasterProtect(blasterProtect_animation, 
                                                              blasterProtect_posMIN,
                                                              blasterProtect_posMAX,
                                                              blasterProtect_xMIN,
                                                              blasterProtect_xMAX,
                                                              blasterProtect_yMIN,
                                                              blasterProtect_yMAX,
                                                              blasterProtect_fadeSteps,
                                                              blasterProtect_brightness,
                                                              blasterProtect_flash);}  //-> hier überall den jeweils benötigten sound 1x spielen!! -> solange der gespielt wird, unabhängig von saber State keinen neuen anfangen!!!!
      if(saberState == "lightningParry"){saber_lightningParry(lightningParry_animation); lightningParryCtrl = 't';}
      if(saberState == "clash"){saber_clash(clash_animation);}
      if(saberState == "clashHold"){saber_clashHold(clashHold_animation, clashHold_fadeOut_animation);}
      if(saberState == "tipDrag"){saber_tipDrag(tipDrag_animation, tipDrag_fadeOut_animation); tipDragCtrl = 't';}
      if(saberState == "melt"){saber_melt(melt_animation, melt_fadeOut_animation); meltCtrl = 't';}

      //um Fehler zusätzlich zu vermeiden:    
      if(lightningParryCtrl == 't' && saberState != "lightningParry"){
        saber_lightningParry(lightningParry_animation);
        lightningParryCtrl = 'f';
      }    
      if(meltCtrl == 't' && saberState != "melt"){
        saber_melt(melt_animation,melt_fadeOut_animation);
        meltCtrl = 'f';
      }
      if(tipDragCtrl == 't' && saberState != "tipDrag"){
        saber_tipDrag(tipDrag_animation, tipDrag_fadeOut_animation);
        tipDragCtrl = 'f';
      }

      //Serial.println(saberState);

      pixels.show();
      delay(DELAY_VAL);
    }
  }
  //===-Taschenlampe-===================================================================================================================================================================================================Taschenlampe
  while(saberMode == "Taschenlampe"){
  }
  //===-MP3-Player-=====================================================================================================================================================================================================MP3-Player
  while(saberMode == "MP3-Player"){
  }
}


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-BLADE->>>=====================================================================================================================================================================================================SABER_BLADE
//---<final_Functions>-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------final-Functions
//wechsel von saberState etc durch Interrupts! (auch bei acceleration wegen clash und so :D => Variable als interrupt !)
void saber_driveOut(String animation){
  if(animation == "default"){driveOut_default(driveOut_Speed,
                                              driveOut_Steps);}
  if(animation == "slowGlow"){driveOut_slowGlow(startLength,
                                                startSpeed,
                                                rdmPixelCount,
                                                driveOut_Speed,
                                                driveOut_Steps);}                                            
  
  saberState = "on";
  bladeON = true;
}
void saber_driveIn(String animation){
  if(animation == "default"){driveIn_default(driveIn_Speed,
                                             driveIn_Steps);}
  
  saberState = "editSaber";
  bladeON = false;
}


void crystal(int stripeSpeed, int fadeBrightness1, int fadeBrightness2, int wholeFadeSteps){
  crystal_potiVal = round((float)((float)analogRead(crystalPOTI)/(float)4095)*(float)100);
  if(crystal_potiVal != 0){
    displayStripes(crystal_potiVal);
    fadeWhole(fadeBrightness1-crystal_potiVal,fadeBrightness2-crystal_potiVal, 0,0, 0,0, wholeFadeSteps, false);
    moveStripes(stripeSpeed);
  }
  else{pixels.fill(pixels.Color(L_modifiers_color_R,L_modifiers_color_G,L_modifiers_color_B),0,NUMPIXELS);}
}//macht einfach all das was die Klinge stabil bzw instabil macht (-> durch Poti einstellbar)

void saber_blasterProtect(String animation, int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash){
  if(animation == "default"){blasterProtect(posMIN,posMAX, xMIN, xMAX, yMIN, yMAX, fadeSteps, brightness, flash, 0);}
}
void saber_lightningParry(String animation){
  if(animation == "default"){
    if(digitalRead(BTN_BP) == LOW){
      lightningParry_default(4,7, 2,4, 3,5,  10,90, 50,NUMPIXELS);
    }else{
      lightningParry_default_fadeOut(10,90, 50,NUMPIXELS); saberState = "on";
    }
  }
}
void saber_clash(String animation){
  if(animation == "clash_precise"){clash_precise(clash_precise_delay, clash_precise_fadeSteps);}
}
void saber_clashHold(String animation, String fadeOut_animation){
  if(animation == "default"){
    if(digitalRead(BTN_CH) == LOW){
        clashHold_default(clashHold_default_brightnessMIN,
                          clashHold_default_brightnessMAX,
                          clashHold_default_pixlBright, 
                          clashHold_default_pixlAnzahl);
      }else{if(fadeOut_animation == "default"){clashHold_default_fadeOut(clashHold_fadeOut_default_Steps);} saberState = "on";}//
    }
  }
void saber_tipDrag(String animation, String fadeOut_animation){
  if(saberState == "tipDrag"){
    if(animation == "default"){
      if(digitalRead(BTN_MELT) == LOW){
          tipDrag_default(tipDrag_x_Length,tipDrag_y_Length,tipDrag_z_Length, tipDrag_fadeIn_Out_Steps);
      }
    }
  }
  else{
    if(fadeOut_animation == "default"){tipDrag_default_stop(tipDrag_fadeIn_Out_Steps); tipDrag_state="new"; saberState = "on";}
  }
}

void saber_melt(String animation, String fadeOut_animation){
  if(saberState == "melt"){
    if(animation == "default"){
     melt_default(melt_x_Length,melt_y_Length,melt_z_Length, melt_fadeIn_Out_Steps);
    }
  }
  else{
    if(fadeOut_animation == "default"){melt_default_stop(melt_fadeIn_Out_Steps+1); melt_state="new"; saberState = "on";}
  }
}



//---<calculationFunctions>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------calculateFunctions
int calculateColorVal(int xcolorOld, int xcolorNew, int xproportion, int xpropFact){ //old = Basefarbe auf die New angenähert wird. für:[1 = 100% New; 0 = 0% New usw.]  
  int difference;                                                                    //z.B 100, 200, 10, 100 -> 10/100 also 10% der neuen Farbe
  double proportion;
  int newValue;
  if(xcolorOld == 0 && xcolorNew == 0){return(0);}else{
    proportion = (double)xproportion / (double)xpropFact;
    if(proportion <= 0){return(xcolorOld);}else{
      difference = xcolorNew - xcolorOld;
      newValue = round((double)difference * (double)proportion) + xcolorOld; 
      //Serial.print("proportion: ");Serial.println(proportion);
      //Serial.print("difference: ");Serial.println(difference);
      return( newValue);
    } 
  }
}


//---<Crystal>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Crystal
void fadeWhole(int newBrightnessMIN, int newBrightnessMAX, int fadeSpeedMIN, int fadeSpeedMAX, int fadeSpeedMIN2, int fadeSpeedMAX2, int Steps, boolean sD){
  
  if(wholeState == "new"){
    fadeBrightness = random(newBrightnessMIN, newBrightnessMAX);
    fadeSpeed1 = random(fadeSpeedMIN, fadeSpeedMAX);
    fadeSpeed2 = random(fadeSpeedMIN2, fadeSpeedMAX2);
    wholeCounter = stripeBrightness;
    wholeState = "down";
    
    if(sD==true){Serial.print("new: ");Serial.println(fadeBrightness);}
  }

  if(wholeState == "down"){
    pixels.setBrightness(wholeCounter);
    wholeCounter-=Steps;
    
    if(sD==true){Serial.println(wholeCounter);}
    if(wholeCounter <= fadeBrightness){wholeState = "up";}
    delay(fadeSpeed1);
  }
  
  if(wholeState == "up"){
    pixels.setBrightness(wholeCounter);
    wholeCounter+=Steps;
    
    if(sD==true){Serial.println(wholeCounter);}
    if(wholeCounter >= stripeBrightness){wholeState = "new";}
    delay(fadeSpeed2);
  }
}
void displayStripes(int brightness){
  pixels.fill(pixels.Color(L_modifiers_color_R, L_modifiers_color_G, L_modifiers_color_B),0,NUMPIXELS);//displayed alle Streifen
  for(int i = 2; i <= 180 && stripes[i] != -1000; i+=4){
    newStripe(stripes[i], stripes[i-2], stripes[i-1], 0,brightness);
    //delay(0);
  }
}
void moveStripes(int bewegungsfaktor){
  if(bewegungsfaktor >= 1){
    for(int i = 2; i <= 180 && stripes[i] != -1000; i+=4){//verschiebt alle Streifen um bewegungsfaktor nach oben
      if(stripes[i] <= NUMPIXELS){stripes[i] += bewegungsfaktor;}
      else{
        stripes[i] = -(stripes[i-2]+2*stripes[i-1]+stripes[i+1]);//setzt Streifen wieder nach unten/an den Anfang (! nicht an den anfangswert!!!)
      }
    }//~0ms Dauer bei 0ms delay! (x=5; y=6)
  }
  if(bewegungsfaktor <= -1){
    for(int i = 2; i <= 180 && stripes[i] != -1000; i+=4){//verschiebt alle Streifen um bewegungsfaktor nach oben
      if(stripes[i] >= 0-(stripes[i-2]+2*stripes[i-1]+stripes[i+1])){stripes[i] += bewegungsfaktor;}
      else{
        stripes[i] = NUMPIXELS;//setzt Streifen wieder nach unten/an den Anfang (! nicht an den anfangswert!!!)
      }
    }//~0ms Dauer bei 0ms delay! (x=5; y=6)
  }
}


void newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){
  if(brightness > 1){ //warum nicht 0? bug bei brightness 1 D:
    int k = 100;
    if(brightness !=100){k = brightness;}
    int z;
    pixels.fill(pixels.Color(fadeBuffer_R[k],fadeBuffer_G[k],fadeBuffer_B[k]),xctrlPin+y,x);
    //Serial.println(k);
    if(y != 0){
      if(delaySideSpan != 0){
        for(int i = y; i>=0; i--){
          if(brightness == 100){z = round((float)((float)i/(float)y)*(float)100);}else{
            z = round(((float)((float)i/(float)y))*(float)brightness);}
          if(z <= 0){
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
            pixels.show();
          }else{
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
            pixels.show();
          }
          //Serial.print(fadeBuffer_R[z]);Serial.print(" | ");Serial.print(fadeBuffer_G[z]);Serial.print(" | ");Serial.println(fadeBuffer_B[z]);
          delay(delaySideSpan);
        }
      }else{
        for(int i = y; i>=0; i--){
          if(brightness == 1){z = round((float)((float)i/(float)y)*(float)100);}else{
            z = round(((float)((float)i/(float)y))*(float)brightness);}
          if(z <= 0){
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
          }else{
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
          }
        }
      }
    }
  }
}
void loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){
  switch(xbufferSelection){
    case 'R':for(int i = 0; i <= 101; i++){
      fadeBuffer_R[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" buffVal_R: ");Serial.println(fadeBuffer_R[i]);}
    }break;
      
    case 'G':for(int i = 0; i <= 101; i++){
      fadeBuffer_G[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" buffVal_G: ");Serial.println(fadeBuffer_G[i]);}
    }break;
    
    case 'B':for(int i = 0; i <= 101; i++){
      fadeBuffer_B[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" buffVal_B: ");Serial.println(fadeBuffer_B[i]);}
    }break;
  }
}
void loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){
  
  if(sD == true){Serial.println("loading Buffer...");}
  
  loadBuffer('R', xcolorOldR, xcolorNewR, sD); 
  loadBuffer('G', xcolorOldG, xcolorNewG, sD);
  loadBuffer('B', xcolorOldB, xcolorNewB, sD);

  fadeBuffer_R[0]=xcolorOldR;
  fadeBuffer_G[0]=xcolorOldG;
  fadeBuffer_B[0]=xcolorOldB;

  fadeBuffer_R[100]=xcolorNewR;
  fadeBuffer_G[100]=xcolorNewG;
  fadeBuffer_B[100]=xcolorNewB;

  if(sD == true){
  Serial.println("<--Buffer loaded!--------->");
  Serial.println("Bufferval 100: ");
  Serial.println(fadeBuffer_R[100]);
  Serial.println(fadeBuffer_G[100]);
  Serial.println(fadeBuffer_B[100]);
  Serial.println("Bufferval 0: ");
  Serial.println(fadeBuffer_R[0]);
  Serial.println(fadeBuffer_G[0]);
  Serial.println(fadeBuffer_B[0]);
  Serial.println("<------------------------->");
  }
}
void crystalStripesSetup(int xa, int xb, int ya, int yb, int za, int zb, int additionalStripes, boolean sD){
  if(sD == true){Serial.println("setup new Crystal-Stripes...");Serial.println("<--write ctrlPin---------->");}
  int zaehler = -2;
  int q;
  int r;
  int s;
   
  for(int i = 0; i <= 180; i+=4){stripes[i] = random(xa, xb);}//definiert x (=Span-)Werte der Streifen
  for(int i = 1; i <= 180; i+=4){stripes[i] = random(ya, yb);}//definiert y (=sideSpan-)Werte der Streifen
  for(int i = 3; i <= 180; i+=4){stripes[i] = random(za, zb);}//definiert z (=Abstands-)Werte der Streifen
  for(int i = 2; i <= 180; i+=4){
    zaehler++;
    
    q =stripes[i-2];
    r =stripes[i-1];
    s =stripes[i+1];
    
    if(zaehler == -1){stripes[i] = -(q+2*r+s);}else{
      if(((q+2*r+s)*zaehler)<NUMPIXELS+additionalStripes){stripes[i] = stripes[i-4]+stripes[i-6]+2*stripes[i-5]+stripes[i-3];}//stripes[i] berĂĽcksichtigt hier die Werte des vorhergegangenen Streifens
      else{stripes[i] = -1000;};
    }

    if(sD == true){
    Serial.print(zaehler);Serial.print("x= ");Serial.print(stripes[i-2]);Serial.print("y= ");Serial.print(stripes[i-1]);Serial.print("ctrlPin= ");Serial.print(stripes[i]);Serial.print("z= ");Serial.println(stripes[i+1]);
    }
  }
  if(sD == true){Serial.println("<------------------------->");} 
}



//---<blasterProtect>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------blasterProtect
void blasterProtect(int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash, int delaySideSpan){

  if(bP_displayState == "2"){
    int g = brightness -  bP_Counter+1;
    
    bC_newStripe(bP_ctrlPin, bP_x, bP_y, 0,g);
    bP_Counter+=fadeSteps;
    
    if(bP_Counter >= brightness){bP_displayState = "new"; saberState = "on";} //saberState fĂĽr Interrupt
  }
  if(bP_displayState == "flash"){
    if(flash == true){
      bC_newStripe(bP_ctrlPin-bP_y-bP_x, 2*bP_x, 2*bP_y, 0,brightness);pixels.show();
      delay(8);
      pixels.fill(pixels.Color(L_modifiers_color_R, L_modifiers_color_G, L_modifiers_color_B), 1, NUMPIXELS);
    }
    bC_newStripe(bP_ctrlPin, bP_x, bP_y, delaySideSpan,brightness);
    bP_displayState = "2";
  }
  if(bP_displayState == "new"){
    bP_Counter = 0;
    bP_ctrlPin = random(posMIN, posMAX);
    bP_x = random(xMIN, xMAX);
    bP_y = random(yMIN, yMAX);
    bP_displayState = "flash";
  }
}

//brightness von 0 - 100 angeben
void bC_newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){
  int k = 100;
  if(brightness !=100){k = brightness;}
  int z;
  pixels.fill(pixels.Color(bC_fadeBuffer_R[k],bC_fadeBuffer_G[k],bC_fadeBuffer_B[k]),xctrlPin+y,x);
  //Serial.println(k);
  if(y != 0){
    if(delaySideSpan != 0){
      for(int i = y; i>=0; i--){
        if(brightness == 100){z = round((float)((float)i/(float)y)*(float)100);}else{
          z = round(((float)((float)i/(float)y))*(float)brightness);}
        if(z <= 0){
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
          pixels.show();
        }else{
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
          pixels.show();
        }
        //Serial.print(cP_fadeBuffer_R[z]);Serial.print(" | ");Serial.print(cP_fadeBuffer_G[z]);Serial.print(" | ");Serial.println(cP_fadeBuffer_B[z]);
        delay(delaySideSpan);
      }
    }else{
      for(int i = y; i>=0; i--){
        if(brightness == 1){z = round((float)((float)i/(float)y)*(float)100);}else{
          z = round(((float)((float)i/(float)y))*(float)brightness);}
        if(z <= 0){
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
        }else{
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
        }
      }
    }
  }
}
void bC_loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){
  switch(xbufferSelection){
    case 'R':for(int i = 0; i <= 101; i++){
      bC_fadeBuffer_R[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" bC_buffVal_R: ");Serial.println(bC_fadeBuffer_R[i]);}
    }break;
      
    case 'G':for(int i = 0; i <= 101; i++){
      bC_fadeBuffer_G[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" bC_buffVal_G: ");Serial.println(bC_fadeBuffer_G[i]);}
    }break;
    
    case 'B':for(int i = 0; i <= 101; i++){
      bC_fadeBuffer_B[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" bC_buffVal_B: ");Serial.println(bC_fadeBuffer_B[i]);}
    }break;
  }
}
void bC_loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){
  
  if(sD == true){Serial.println("loading bC_Buffer...");}
  
  bC_loadBuffer('R', xcolorOldR, xcolorNewR, sD); 
  bC_loadBuffer('G', xcolorOldG, xcolorNewG, sD);
  bC_loadBuffer('B', xcolorOldB, xcolorNewB, sD);

  bC_fadeBuffer_R[0]=xcolorOldR;
  bC_fadeBuffer_G[0]=xcolorOldG;
  bC_fadeBuffer_B[0]=xcolorOldB;

  bC_fadeBuffer_R[100]=xcolorNewR;
  bC_fadeBuffer_G[100]=xcolorNewG;
  bC_fadeBuffer_B[100]=xcolorNewB;

  if(sD == true){
  Serial.println("<--bC_Buffer loaded!--------->");
  Serial.println("bC_Bufferval 100: ");
  Serial.println(bC_fadeBuffer_R[100]);
  Serial.println(bC_fadeBuffer_G[100]);
  Serial.println(bC_fadeBuffer_B[100]);
  Serial.println("bC_Bufferval 0: ");
  Serial.println(bC_fadeBuffer_R[0]);
  Serial.println(bC_fadeBuffer_G[0]);
  Serial.println(bC_fadeBuffer_B[0]);
  Serial.println("<---------------------------->");
  }
}



//---<clash>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------clash
//precise:
void clash_precise(boolean delaySideSpan, int fadeSteps){//groesse von 1-7 (gibt an ob XS, S, M etc etc)
  if(clashState == "new"){
    clash_precise_size = random(clash_precise_groesseMIN, clash_precise_groesseMAX);
    clashState = "go";
  }
  if(clashState == "go"){
    if(delaySideSpan == false){
      if(clash_precise_size == 1){clash_precise_XS(0, fadeSteps);}
      if(clash_precise_size == 2){clash_precise_S(0, fadeSteps);}
      if(clash_precise_size == 3){clash_precise_M(0, fadeSteps);}
      if(clash_precise_size == 4){clash_precise_L(0, fadeSteps);}
      if(clash_precise_size == 5){clash_precise_XL(0, fadeSteps);}
      if(clash_precise_size == 6){clash_precise_XXL(0, fadeSteps);}
      if(clash_precise_size == 7){clash_precise_XXXL(0, fadeSteps);}
    }
    if(delaySideSpan == true){
      if(clash_precise_size == 1){clash_precise_XS(2, fadeSteps);}
      if(clash_precise_size == 2){clash_precise_S(2, fadeSteps);}
      if(clash_precise_size == 3){clash_precise_M(2, fadeSteps);}
      if(clash_precise_size == 4){clash_precise_L(2, fadeSteps);}
      if(clash_precise_size == 5){clash_precise_XL(2, fadeSteps);}
      if(clash_precise_size == 6){clash_precise_XXL(2, fadeSteps);}
      if(clash_precise_size == 7){clash_precise_XXXL(2, fadeSteps);}
    }
  }
}

void clash_precise_XS(int delaySidespan, int fadeSpeps){
  blasterProtect(0,0, 10,10, 10,10, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_S(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 22,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 22, 15,15, 15,15, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_M(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 30,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 30, 20,20, 20,20, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_L(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 37,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 37, 25,25, 25,25, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_XL(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 45,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 45, 30,30, 30,30, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_XXL(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 53,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 53, 35,35, 35,35, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_XXXL(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 60,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 60, 40,40, 40,40, fadeSpeps, 100, true, delaySidespan);
}


//---<clashHold>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------clashHold
//default:
void clashHold_default(int brMIN, int brMAX, float pixlBright, int pixlAnzahl){
  pixels.fill(pixels.Color(L_modifiers_blinkColor_R,
                           L_modifiers_blinkColor_G,
                           L_modifiers_blinkColor_B),0,NUMPIXELS);
  for(int i = 0; i <= pixlAnzahl; i++){
    pixels.fill(pixels.Color(L_modifiers_blinkColor_R-round((float)50*(float)pixlBright),
                             L_modifiers_blinkColor_G-round((float)40*(float)pixlBright),
                             L_modifiers_blinkColor_B-round((float)30*(float)pixlBright)),random(0,NUMPIXELS), random(1,7));
  }
  fadeWhole(brMIN,brMAX, 0,0, 0,0, 12, false);
  pixels.show();
}

//--fadeOut:
//default:
void clashHold_default_fadeOut(int steps){
  for(int i = 100; i >= 0; i -= steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);
    pixels.fill(pixels.Color(bC_fadeBuffer_R[i],
                             bC_fadeBuffer_G[i],
                             bC_fadeBuffer_B[i]),0+(100-i),NUMPIXELS-(100-i)+1);
  pixels.show();
  delay(2);
  }
}


//---<lightningParry>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------lightningParry
//default:
void lightningParry_default(int anzahlMIN,int anzahlMAX,  int xMIN,int xMAX,  int yMIN,int yMAX,  int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){
  if(lightningParryState == "new"){
    lightningParry_stripeAnzahl = random(anzahlMIN, anzahlMAX);
    lightningParry_Count = 0;
    for(int i = 0; i < lightningParry_stripeAnzahl*7; i+=7){
      lightningParry_data[i] = random(startLength, NUMPIXELS - 10);  //position
      lightningParry_data[i + 1] = random(xMIN, xMAX);               //x
      lightningParry_data[i + 2] = random(yMIN, yMAX);               //y
      lightningParry_data[i + 3] = random(5, 9);                     //"fadeSpan" --> Speed
      lightningParry_data[i + 4] = random(0, 1);                     // up / down

      lightningParry_data[i + 5] = random(xMinMIN, xMinMAX);         //MIN
      lightningParry_data[i + 6] = random(xMaxMIN, xMaxMAX);         //MAX
    }
    lightningParryState = "start";
  }
  
  if(lightningParryState == "start"){
    for(int i = 0; i <= lightningParry_stripeAnzahl; i+=3){
      //Eckpunkte:
      if(lightningParry_data[i*7] < lightningParry_data[i*7 + 5]){lightningParry_data[i*7 + 4] = 1; lightningParry_data[i*7 + 5] = random(xMinMIN, xMinMAX);}
      if(lightningParry_data[i*7] > lightningParry_data[i*7 + 6]){lightningParry_data[i*7 + 4] = 0; lightningParry_data[i*7 + 6] = random(xMaxMIN, xMaxMAX);}

      if(lightningParry_data[i*7 + 4] == 1){
        lightningParry_data[i*7] += lightningParry_data[i*7 + 3];
      }else{
        lightningParry_data[i*7] -= lightningParry_data[i*7 + 3];
      }
    }
    lightningParry_default_displayStripes(lightningParry_Count);

    if(lightningParry_Count < 100){lightningParry_Count+=6;}
    else{lightningParryState = "on"; lightningParry_Count = 100;}
  }

  if(lightningParryState == "on"){
    for(int i = 0; i <= lightningParry_stripeAnzahl; i++){
      //Eckpunkte:
      if(lightningParry_data[i*7] < lightningParry_data[i*7 + 5]){lightningParry_data[i*7 + 4] = 1; lightningParry_data[i*7 + 5] = random(xMinMIN, xMinMAX); Serial.println(lightningParry_data[i*7 + 5]);}
      if(lightningParry_data[i*7] > lightningParry_data[i*7 + 6]){lightningParry_data[i*7 + 4] = 0; lightningParry_data[i*7 + 6] = random(xMaxMIN, xMaxMAX); Serial.println(lightningParry_data[i*7 + 6]);}

      if(lightningParry_data[i*7 + 4] == 1){
        lightningParry_data[i*7] += lightningParry_data[i*7 + 3];
      }else{
        lightningParry_data[i*7] -= lightningParry_data[i*7 + 3];
      }
    }
    lightningParry_default_displayStripes(100);
  }
}
void lightningParry_default_displayStripes(int xBrightness){
  for(int i = 0; i < 101 - 7 && lightningParry_data[i] != 0; i +=7){ //Länge
        bC_newStripe(lightningParry_data[i],
                     lightningParry_data[i + 1],
                     lightningParry_data[i + 2], 0, xBrightness);
  }
}
void lightningParry_default_fadeOut(int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){
    for(int z = 100; z > 1; z-=5){
      crystal(crystal_stripeSpeed,
              crystal_fadeBrightness1,
              crystal_fadeBrightness2,
              crystal_wholeFadeSteps);
    for(int i = 0; i <= lightningParry_stripeAnzahl; i++){
      //Eckpunkte:
      if(lightningParry_data[i*7] < lightningParry_data[i*7 + 5]){lightningParry_data[i*7 + 4] = 1; lightningParry_data[i*7 + 5] = random(xMinMIN, xMinMAX); Serial.println(lightningParry_data[i*7 + 5]);}
      if(lightningParry_data[i*7] > lightningParry_data[i*7 + 6]){lightningParry_data[i*7 + 4] = 0; lightningParry_data[i*7 + 6] = random(xMaxMIN, xMaxMAX); Serial.println(lightningParry_data[i*7 + 6]);}

      if(lightningParry_data[i*7 + 4] == 1){
        lightningParry_data[i*7] += lightningParry_data[i*7 + 3];
      }else{
        lightningParry_data[i*7] -= lightningParry_data[i*7 + 3];
      }
    }
    lightningParry_default_displayStripes(z);
    pixels.show();
    delay(DELAY_VAL);
    }
    lightningParryState = "new";
}

//---<tipDrag>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------tipDrag
//default:
void tipDrag_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){
  if(tipDrag_state == "new"){
    tipDrag_xLength = xLength;
    tipDrag_yLength = yLength;
    tipDrag_zLength = zLength;
    tipDrag_deault_counter = tipDrag_xLength+tipDrag_yLength+2*tipDrag_zLength + 3;//20;
    tipDrag_state = "start";
  }
  if(tipDrag_state == "start"){
    
    if(tipDrag_deault_counter >= 0){
      for(int i = 0; i < tipDrag_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,tipDrag_crossingColor_R,i,tipDrag_zLength),
                                 calculateColorVal(L_modifiers_color_G,tipDrag_crossingColor_G,i,tipDrag_zLength),
                                 calculateColorVal(L_modifiers_color_B,tipDrag_crossingColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                            -tipDrag_zLength
                                                                                                                            -tipDrag_yLength
                                                                                                                            -tipDrag_zLength+i+ tipDrag_deault_counter,1);
        pixels.fill(pixels.Color(calculateColorVal(tipDrag_crossingColor_R,L_modifiers_meltColor_R,i,tipDrag_zLength),
                                 calculateColorVal(tipDrag_crossingColor_G,L_modifiers_meltColor_G,i,tipDrag_zLength),
                                 calculateColorVal(tipDrag_crossingColor_B,L_modifiers_meltColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                                -tipDrag_zLength+i+ tipDrag_deault_counter,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(tipDrag_crossingColor_R,
                               tipDrag_crossingColor_G,
                               tipDrag_crossingColor_B),NUMPIXELS-tipDrag_xLength
                                                                 -tipDrag_zLength
                                                                 -tipDrag_yLength+ tipDrag_deault_counter,tipDrag_yLength);
      pixels.fill(pixels.Color(L_modifiers_meltColor_R,
                               L_modifiers_meltColor_G,
                               L_modifiers_meltColor_B),NUMPIXELS-tipDrag_xLength+ tipDrag_deault_counter,tipDrag_xLength);

      tipDrag_deault_counter-=xfadeIn_Out_Steps;
    }else{
      tipDrag_state = "on";
      //tipDrag_deault_counter=0;
    }
  }
  if(tipDrag_state == "on"){
    for(int i = 0; i < tipDrag_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,tipDrag_crossingColor_R,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_G,tipDrag_crossingColor_G,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_B,tipDrag_crossingColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                          -tipDrag_zLength
                                                                                                                          -tipDrag_yLength
                                                                                                                          -tipDrag_zLength+i,1);
      pixels.fill(pixels.Color(calculateColorVal(tipDrag_crossingColor_R,L_modifiers_meltColor_R,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_G,L_modifiers_meltColor_G,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_B,L_modifiers_meltColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                              -tipDrag_zLength+i,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(tipDrag_crossingColor_R,
                             tipDrag_crossingColor_G,
                             tipDrag_crossingColor_B),NUMPIXELS-tipDrag_xLength
                                                               -tipDrag_zLength
                                                               -tipDrag_yLength,tipDrag_yLength);
    pixels.fill(pixels.Color(L_modifiers_meltColor_R,
                             L_modifiers_meltColor_G,
                             L_modifiers_meltColor_B),NUMPIXELS-tipDrag_xLength,tipDrag_xLength);  
    //Funken:
    int Tobi = random(0,100);
    if(Tobi < 20){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,L_modifiers_meltColor_R,10,100),
                                           calculateColorVal(L_modifiers_color_G,L_modifiers_meltColor_G,10,100),
                                           calculateColorVal(L_modifiers_color_B,L_modifiers_meltColor_B,10,100)),random(0,NUMPIXELS-tipDrag_xLength),random(1,3));}else{
    if(Tobi > 50){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,L_modifiers_meltColor_R,100,100),
                                           calculateColorVal(L_modifiers_color_G,L_modifiers_meltColor_G,100,100),
                                           calculateColorVal(L_modifiers_color_B,L_modifiers_meltColor_B,100,100)),random(NUMPIXELS-tipDrag_xLength - 10,NUMPIXELS-tipDrag_xLength),random(1,3));}else{                                         
    pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,L_modifiers_meltColor_R,60,100),
                             calculateColorVal(L_modifiers_color_G,L_modifiers_meltColor_G,60,100),
                             calculateColorVal(L_modifiers_color_B,L_modifiers_meltColor_B,60,100)),random(NUMPIXELS-tipDrag_xLength - 40,NUMPIXELS-tipDrag_xLength),random(1,3));}}
  }
}
void tipDrag_default_stop(int xfadeIn_Out_Steps){
  for(int a = tipDrag_deault_counter; a <= tipDrag_xLength+tipDrag_yLength+2*tipDrag_zLength; a+=xfadeIn_Out_Steps){//0
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    for(int i = 0; i < tipDrag_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,tipDrag_crossingColor_R,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_G,tipDrag_crossingColor_G,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_B,tipDrag_crossingColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                          -tipDrag_zLength
                                                                                                                          -tipDrag_yLength
                                                                                                                          -tipDrag_zLength+i+ a,1);
      pixels.fill(pixels.Color(calculateColorVal(tipDrag_crossingColor_R,L_modifiers_meltColor_R,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_G,L_modifiers_meltColor_G,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_B,L_modifiers_meltColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                              -tipDrag_zLength+i+ a,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(tipDrag_crossingColor_R,
                             tipDrag_crossingColor_G,
                             tipDrag_crossingColor_B),NUMPIXELS-tipDrag_xLength
                                                               -tipDrag_zLength
                                                               -tipDrag_yLength+ a,tipDrag_yLength);
    pixels.fill(pixels.Color(L_modifiers_meltColor_R,
                             L_modifiers_meltColor_G,
                             L_modifiers_meltColor_B),NUMPIXELS-tipDrag_xLength+ a,tipDrag_xLength);
    pixels.show();
    delay(DELAY_VAL);
  }
    
}



//---<melt>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------melt
//default:
void melt_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){
  int q = 3;
  if(melt_state == "new"){
    melt_xLength = xLength;
    melt_yLength = yLength;
    melt_zLength = zLength;
    melt_deault_counter = melt_xLength+melt_yLength+2*melt_zLength + 3;//20;
    melt_state = "start";
  }
  if(melt_state == "start"){
    int angle = round(Accelerometer.getAngle(1,1000));
    if(melt_deault_counter >= 0){
      int angle = round(Accelerometer.getAngle(1,1000));
      for(int i = 0; i < melt_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_G,melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_B,melt_crossingColor_R,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                      -melt_zLength
                                                                                                                      -melt_yLength
                                                                                                                      -melt_zLength+i+ melt_deault_counter+q,1);
        pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_G,calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_B,calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360),i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                                                                    -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(melt_crossingColor_R,
                               melt_crossingColor_G,
                               melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                              -melt_zLength
                                                              -melt_yLength+ melt_deault_counter+q,melt_yLength);
      pixels.fill(pixels.Color(calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),
                               calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),
                               calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360)),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength);

      melt_deault_counter-=xfadeIn_Out_Steps;
    }else{
      melt_state = "on";
      //melt_deault_counter=0;
    }
  }
  if(melt_state == "on"){
    int angle = round(Accelerometer.getAngle(1,1000));
    for(int i = 0; i < melt_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R, melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_G, melt_crossingColor_G,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_B, melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                       -melt_zLength
                                                                                                                       -melt_yLength
                                                                                                                       -melt_zLength+i+ melt_deault_counter+q,1);
        pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_G,calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_B,calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360),i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                                                                    -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(melt_crossingColor_R,
                               melt_crossingColor_G,
                               melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                              -melt_zLength
                                                              -melt_yLength+ melt_deault_counter+q,melt_yLength);
      pixels.fill(pixels.Color(calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),
                               calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),
                               calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360)),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength);
    //Funken:
    int Tobi = random(0,100);
    if(Tobi < 20){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,10,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,10,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,10,100)),random(0,NUMPIXELS-melt_xLength),random(1,3));}else{
    if(Tobi > 50){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,100,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,100,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,100,100)),random(NUMPIXELS-melt_xLength - 10,NUMPIXELS-melt_xLength),random(1,3));}else{                                         
    pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,60,100),
                             calculateColorVal(L_modifiers_color_G,melt_meltColor_G,60,100),
                             calculateColorVal(L_modifiers_color_B,melt_meltColor_B,60,100)),random(NUMPIXELS-melt_xLength - 40,NUMPIXELS-melt_xLength),random(1,3));}}
  //Serial.println(angle);
  }
}
void melt_default_stop(int xfadeIn_Out_Steps){
  for(int a = melt_deault_counter; a <= melt_xLength+melt_yLength+2*melt_zLength; a+=xfadeIn_Out_Steps){//0
  int angle = round(Accelerometer.getAngle(1,1000));
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    for(int i = 0; i < melt_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                    -melt_zLength
                                                                                                                    -melt_yLength
                                                                                                                    -melt_zLength+i+ a,1);
      pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),i,melt_zLength),
                               calculateColorVal(melt_crossingColor_G,calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),i,melt_zLength),
                               calculateColorVal(melt_crossingColor_B,calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360),i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                 -melt_zLength+i+ a,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(melt_crossingColor_R,
                             melt_crossingColor_G,
                             melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                            -melt_zLength
                                                            -melt_yLength+ a,melt_yLength);
    pixels.fill(pixels.Color(calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),
                             calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),
                             calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360)),NUMPIXELS-melt_xLength+ a,melt_xLength);
    pixels.show();
    delay(DELAY_VAL);
  }
}
/* //ohne durch drehung farbe ändern:
void melt_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){
  int q = 3;
  if(melt_state == "new"){
    melt_xLength = xLength;
    melt_yLength = yLength;
    melt_zLength = zLength;
    melt_deault_counter = melt_xLength+melt_yLength+2*melt_zLength + 3;//20;
    melt_state = "start";
  }
  if(melt_state == "start"){
    
    if(melt_deault_counter >= 0){
      for(int i = 0; i < melt_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                      -melt_zLength
                                                                                                                      -melt_yLength
                                                                                                                      -melt_zLength+i+ melt_deault_counter+q,1);
        pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,melt_meltColor_R,i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_G,melt_meltColor_G,i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_B,melt_meltColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                   -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(melt_crossingColor_R,
                               melt_crossingColor_G,
                               melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                              -melt_zLength
                                                              -melt_yLength+ melt_deault_counter+q,melt_yLength);
      pixels.fill(pixels.Color(melt_meltColor_R,
                               melt_meltColor_G,
                               melt_meltColor_B),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength);

      melt_deault_counter-=xfadeIn_Out_Steps;
    }else{
      melt_state = "on";
      //melt_deault_counter=0;
    }
  }
  if(melt_state == "on"){
    for(int i = 0; i < melt_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                    -melt_zLength
                                                                                                                    -melt_yLength
                                                                                                                    -melt_zLength+i+ melt_deault_counter+q,1);
      pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,melt_meltColor_R,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_G,melt_meltColor_G,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_B,melt_meltColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                 -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(melt_crossingColor_R,
                             melt_crossingColor_G,
                             melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                            -melt_zLength
                                                            -melt_yLength+ melt_deault_counter+q,melt_yLength);
    pixels.fill(pixels.Color(melt_meltColor_R,
                             melt_meltColor_G,
                             melt_meltColor_B),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength); 
    //Funken:
    int Tobi = random(0,100);
    if(Tobi < 20){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,10,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,10,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,10,100)),random(0,NUMPIXELS-melt_xLength),random(1,3));}else{
    if(Tobi > 50){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,100,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,100,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,100,100)),random(NUMPIXELS-melt_xLength - 10,NUMPIXELS-melt_xLength),random(1,3));}else{                                         
    pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,60,100),
                             calculateColorVal(L_modifiers_color_G,melt_meltColor_G,60,100),
                             calculateColorVal(L_modifiers_color_B,melt_meltColor_B,60,100)),random(NUMPIXELS-melt_xLength - 40,NUMPIXELS-melt_xLength),random(1,3));}}
  }
}
void melt_default_stop(int xfadeIn_Out_Steps){
  for(int a = melt_deault_counter; a <= melt_xLength+melt_yLength+2*melt_zLength; a+=xfadeIn_Out_Steps){//0
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    for(int i = 0; i < melt_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                    -melt_zLength
                                                                                                                    -melt_yLength
                                                                                                                    -melt_zLength+i+ a,1);
      pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,melt_meltColor_R,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_G,melt_meltColor_G,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_B,melt_meltColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                 -melt_zLength+i+ a,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(melt_crossingColor_R,
                             melt_crossingColor_G,
                             melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                            -melt_zLength
                                                            -melt_yLength+ a,melt_yLength);
    pixels.fill(pixels.Color(melt_meltColor_R,
                             melt_meltColor_G,
                             melt_meltColor_B),NUMPIXELS-melt_xLength+ a,melt_xLength);
    pixels.show();
    delay(DELAY_VAL);
  }
}
*/


//---<driveOut>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------driveOut
//default:
void driveOut_default(int Speed, int Steps){
  for(int i = 0; i <= NUMPIXELS; i+=Steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);
    pixels.fill(pixels.Color(0,0,0), i, NUMPIXELS-i);
    pixels.show();  
    delay(Speed);
  }
}
//slowGlow:
void driveOut_slowGlow(int startLength, int startSpeed, int rdmPixelCount, int Speed, int Steps){
  driveOut_Speed;
  for(int i = 0; i <= 255; i+=3){
    pixels.setBrightness(i);
    pixels.fill(pixels.Color(slowGlow_color_R,
                             slowGlow_color_G,
                             slowGlow_color_B),0,startLength);
    
    for(int a = 1; a <= rdmPixelCount; a++){
      slowGlow_rdm_pixels(startLength);
    }

    pixels.show();
    delay(startSpeed + round((double)i / (double)6));
  }
  
  for(int i = 255; i >= 50; i-=4){
    pixels.setBrightness(i);
    pixels.fill(pixels.Color(slowGlow_color_R,
                             slowGlow_color_G,
                             slowGlow_color_B),0,startLength);
    
    for(int a = 1; a <= rdmPixelCount; a++){
      slowGlow_rdm_pixels(startLength);
    }

    pixels.show();
    if(startSpeed > 2){delay(startSpeed - 2);}
  }

  for(int i = 0; i <= NUMPIXELS; i+=Steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    if(i < startLength){
    pixels.fill(pixels.Color(slowGlow_color_R,
                             slowGlow_color_G,
                             slowGlow_color_B),i,startLength);
    }
    pixels.fill(pixels.Color(0,0,0), i, NUMPIXELS-i);
    pixels.show();  
    delay(Speed);
  }

  
}
void slowGlow_rdm_pixels(int startLengthX){
  int a = random(5,50);
  int b = random(7,53);
  int c = random(9,55);

  int x = slowGlow_color_Rx;
  int y = slowGlow_color_Gx;
  int z = slowGlow_color_Bx;

  if(slowGlow_color_Rx - a > 0){x = slowGlow_color_Rx - a;}
  if(slowGlow_color_Gx - b > 0){y = slowGlow_color_Gx - b;}
  if(slowGlow_color_Bx - c > 0){z = slowGlow_color_Bx - c;}

  pixels.fill(pixels.Color(x,y,z),random(1,startLengthX),random(1,3));
}


//---<driveIn>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------driveIn
//default:
void driveIn_default(int Speed, int Steps){
  for(int i = NUMPIXELS; i >= 0; i-=Steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);
    pixels.fill(pixels.Color(0,0,0), i, NUMPIXELS-i);
    pixels.show();  
    delay(Speed);
  }
}



//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-BUTTONS->>>=======================================================================================================================================================================================================BUTTONS
void btnSetup(){
  pinMode(BTN_MENU, INPUT_PULLUP);
  pinMode(BTN_ON, INPUT_PULLUP);
  pinMode(BTN_CH, INPUT_PULLUP);
  pinMode(BTN_BP, INPUT_PULLUP);
  pinMode(BTN_MELT, INPUT_PULLUP);
  
  attachInterrupt(digitalPinToInterrupt(BTN_MENU), interrupt_menu, FALLING); //LOW, HIGH, CHANGE, FALLING, RISING   => 2:06 https://www.youtube.com/watch?v=PcqiKy_rb24&list=PLP0aj0TqeBaeJaech7jdZMYyGYEsvIoKI&index=35
  attachInterrupt(digitalPinToInterrupt(BTN_ON), interrupt_on, FALLING);
  attachInterrupt(digitalPinToInterrupt(BTN_CH), interrupt_cH, FALLING);
  attachInterrupt(digitalPinToInterrupt(BTN_BP), interrupt_bP, FALLING);
  attachInterrupt(digitalPinToInterrupt(BTN_MELT), interrupt_melt, FALLING);
}

//---<INTERRUPTS>-------------------------------------------------------------------------------------------------------------
void interrupt_on(){
  if(bladeON == true && debounce_stopTimer() > 500){saberState = "driveIn"; debounce_startTimer();}else{
  if(bladeON == false && debounce_stopTimer() > 500){saberState = "driveOut"; debounce_startTimer();}}
}
void interrupt_cH(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){saberState = "clashHold";}
    startTimer();
  }
}
void interrupt_bP(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){interruptState = "blasterProtect";}
    startTimer();
  }
}
void interrupt_melt(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){interruptState = "melt";}
    startTimer();
  }
}
void interrupt_menu(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){interruptState = "menĂĽ";}
    startTimer();
  }
}

//---<timedBUTTONS>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void checkBTNmenu(){
  if(interruptState == "menĂĽ" || menu_btnState == "low"){
    if(stopTimer() > shortPress && digitalRead(BTN_MENU) == LOW){if(interruptState != "default"){Serial.println("M_HOLD"); menu_btnCounter = -1; saberState = "menĂĽBTN"; interruptState = "default"; menu_btnState = "low";}}else
    if(stopTimer() < shortPress && digitalRead(BTN_MENU) == HIGH && menu_btnState == "high"){Serial.println("M_SHORT"); interruptState = "default";}
    if(digitalRead(BTN_MENU) == HIGH && menu_btnState == "low"){
      switch(menu_btnCounter){
        case 1: Serial.println("höhö du hast ne 1... achievement get!");
                //WiFiMODE = true;
          break;
        case 2: Serial.println("du hast ne 2 :)");
          break;
        case 3: Serial.println("nur ne 3 :/");
          break;
        case 4: Serial.println("ne 4 :(");
          break;
        case 5: Serial.println("was war denn da los... eine 5 ?!");
          break;
        case 6: Serial.println("Das gibt ne 6 noich");
          break;
        case 7: Serial.println("7 :)");
          break;
        case 8: Serial.println("8 :)");
          break;
        case 9: Serial.println("9 :)");
          break;
        case 10: Serial.println("highground 10 :)");
          break;
      }
      debounce_startTimer();menu_btnState = "high"; interruptState = "default"; Serial.println("stopped Countin V2"); Serial.println(saberState);
    }
  }
}
void checkBTNmenu_counting(){//menu_btnCounter gibt an wie lange der menĂĽ knopf schon gedrĂĽckt wurde (-> Blinken beim alten Lichtshwert)
  if(menu_btnCounter == -1 && saberState == "menĂĽBTN" && digitalRead(BTN_MENU) == LOW){menu_btnCounter++; startTimer(); Serial.println("start Timer"); Serial.println(menu_btnCounter);}
  else if(saberState == "menĂĽBTN" && stopTimer() > menu_btnTime && digitalRead(BTN_MENU) == LOW){startTimer(); menu_btnCounter++; Serial.println(menu_btnCounter); pixels.fill(pixels.Color(255,210,150), 0, NUMPIXELS); pixels.show(); delay(100);}
  if(saberState == "menĂĽBTN" && digitalRead(BTN_MENU) == HIGH){}//saberState = "on";}
}
void checkBTNblasterProtect(){
  if(interruptState == "blasterProtect" || bP_btnState == "low"){
    if(stopTimer() > shortPress && digitalRead(BTN_BP) == LOW){if(interruptState != "default"){saberState = "lightningParry"; interruptState = "default"; bP_btnState = "low";}}else
    if(stopTimer() < shortPress && digitalRead(BTN_BP) == HIGH && bP_btnState == "high"){saberState = "blasterProtect"; interruptState = "default"; bP_displayState = "new";}
    if(digitalRead(BTN_BP) == HIGH && bP_btnState == "low"){debounce_startTimer();bP_btnState = "high"; saberState = "on"; interruptState = "default";}
  }
}
void checkBTNmelt(){
  if(interruptState == "melt" || melt_btnState == "low"){
    if(stopTimer() > shortPress && digitalRead(BTN_MELT) == LOW){if(interruptState != "default"){saberState = "tipDrag"; interruptState = "default"; melt_btnState = "low";}}else
    if(stopTimer() < shortPress && digitalRead(BTN_MELT) == HIGH && melt_btnState == "high"){if(saberState == "melt"){saberState = "on";}else{saberState = "melt";} interruptState = "default";}
    if(digitalRead(BTN_MELT) == HIGH && melt_btnState == "low"){debounce_startTimer(); melt_btnState = "high"; saberState = "on"; interruptState = "default";}
  }
}


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-ESP32-Functions->>>========================================================================================================================================================================================ESP32-Functions
void lightsaberSetup(){
  pixels.setBrightness(stripeBrightness);

  //stripes:
    loadBufferRGB(L_modifiers_color_R,
                  L_modifiers_color_G,
                  L_modifiers_color_B,
                  L_modifiers_blinkColor_R2,
                  L_modifiers_blinkColor_G2,
                  L_modifiers_blinkColor_B2, false);
    crystalStripesSetup(crystalStripesSetup_x1,
                        crystalStripesSetup_x2,
                        crystalStripesSetup_y1,
                        crystalStripesSetup_y2,
                        crystalStripesSetup_z1,
                        crystalStripesSetup_z2,
                        crystalStripesSetup_additionalStripes,false);
  crystal_potiVal = round((float)((float)analogRead(crystalPOTI)/(float)4095)*(float)100);
  
  //bC:
    bC_loadBufferRGB(L_modifiers_color_R,
                     L_modifiers_color_G,
                     L_modifiers_color_B,  
                     L_modifiers_blinkColor_R,
                     L_modifiers_blinkColor_G,
                     L_modifiers_blinkColor_B, false);
}

void startTimer(){
  currentMillis = millis();
  previousMillis = currentMillis;
  //if(sD == true){Serial.println("Start Timer");}
}
unsigned long stopTimer(){
  currentMillis = millis();
  //if(sD == true){Serial.print("Stopped Timer at:");Serial.println(currentMillis - previousMillis);}
  return(currentMillis - previousMillis);
}

void debounce_startTimer(){
  debounce_currentMillis = millis();
  debounce_previousMillis = debounce_currentMillis;
  //if(sD == true){Serial.println("Start Timer");}
}
unsigned long debounce_stopTimer(){
  debounce_currentMillis = millis();
  //if(sD == true){Serial.print("Stopped Timer at:");Serial.println(currentMillis - previousMillis);}
  return(debounce_currentMillis - debounce_previousMillis);
}

It is probably because the function is called outside of a function because of mismatched or misplaced brackets. Auto format will often show where the mistake is (as suggested by @J-M-L).

Post the entire error message.

Arduino: 1.8.12 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

In file included from sketch\A_acceleration.cpp:4:0:

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h: In member function 'double A_acceleration::beschleunigungLesen(double)':

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:102:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)

     uint8_t requestFrom(int address, int size, int sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:97:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)

     uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:102:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)

     uint8_t requestFrom(int address, int size, int sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:97:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)

     uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h: In member function 'double A_acceleration::getAngle(int, int)':

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:102:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)

     uint8_t requestFrom(int address, int size, int sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:97:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)

     uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:102:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)

     uint8_t requestFrom(int address, int size, int sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:97:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)

     uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h: In member function 'int A_acceleration::temperaturLesen()':

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:102:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)

     uint8_t requestFrom(int address, int size, int sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:97:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)

     uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:102:13: note: candidate 1: uint8_t TwoWire::requestFrom(int, int, int)

     uint8_t requestFrom(int address, int size, int sendStop);

             ^

C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\Wire\src/Wire.h:97:13: note: candidate 2: uint8_t TwoWire::requestFrom(uint16_t, uint8_t, bool)

     uint8_t requestFrom(uint16_t address, uint8_t size, bool sendStop);

             ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void setup()':

lightsaber:1465:12: error: 'btnSetup' was not declared in this scope

     Serial.println("initialize CyberCrystal");

            ^

lightsaber:1471:21: error: 'lightsaberSetup' was not declared in this scope

     //  -> dann Variablen deklarieren (-> aktives Profil checken

                     ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void loop()':

lightsaber:1546:40: error: 'saber_driveOut' was not declared in this scope

lightsaber:1551:38: error: 'saber_driveIn' was not declared in this scope

     //---<bladeON-Funktionen>-----------------------------------------------------------------------------------------------------

                                      ^

lightsaber:1559:20: error: 'checkBTNmenu' was not declared in this scope

       //---<Accelerometer>-----------------------------------------------------------------------------------------------------------

                    ^

lightsaber:1560:29: error: 'checkBTNmenu_counting' was not declared in this scope

       if(saberState != "melt"){

                             ^

lightsaber:1561:30: error: 'checkBTNblasterProtect' was not declared in this scope

         acceleration = Accelerometer.beschleunigungLesen(0.05);

                              ^

lightsaber:1562:20: error: 'checkBTNmelt' was not declared in this scope

         if(Accelerometer.detectClash()>0.3){saberState = "clash"; clashState = "new"; bP_displayState = "new";}//wenn hier bP = "new" steht heiĂźt das, dass die clash precise animation unterbrochen werden kann   bP_displayState = "new";

                    ^

lightsaber:1580:39: error: 'crystal' was not declared in this scope

                                                               blasterProtect_xMIN,

                                       ^

lightsaber:1591:83: error: 'saber_blasterProtect' was not declared in this scope

       if(saberState == "melt"){saber_melt(melt_animation, melt_fadeOut_animation); meltCtrl = 't';}

                                                                                   ^

lightsaber:1592:87: error: 'saber_lightningParry' was not declared in this scope

lightsaber:1593:60: error: 'saber_clash' was not declared in this scope

lightsaber:1594:101: error: 'saber_clashHold' was not declared in this scope

lightsaber:1595:93: error: 'saber_tipDrag' was not declared in this scope

lightsaber:1596:81: error: 'saber_melt' was not declared in this scope

lightsaber:1600:54: error: 'saber_lightningParry' was not declared in this scope

lightsaber:1604:57: error: 'saber_melt' was not declared in this scope

lightsaber:1608:67: error: 'saber_tipDrag' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_driveOut(String)':

lightsaber:1633:61: error: 'driveOut_default' was not declared in this scope

                                                 driveOut_Steps);}                                            

                                                             ^

lightsaber:1638:63: error: 'driveOut_slowGlow' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_driveIn(String)':

lightsaber:1645:59: error: 'driveIn_default' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void crystal(int, int, int, int)':

lightsaber:1655:35: error: 'displayStripes' was not declared in this scope

 }//macht einfach all das was die Klinge stabil bzw instabil macht (-> durch Poti einstellbar)

                                   ^

lightsaber:1656:111: error: 'fadeWhole' was not declared in this scope

lightsaber:1657:28: error: 'moveStripes' was not declared in this scope

 void saber_blasterProtect(String animation, int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash){

                            ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_blasterProtect(String, int, int, int, int, int, int, int, int, boolean)':

lightsaber:1663:115: error: 'blasterProtect' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_lightningParry(String)':

lightsaber:1668:65: error: 'lightningParry_default' was not declared in this scope

lightsaber:1670:57: error: 'lightningParry_default_fadeOut' was not declared in this scope

   if(animation == "clash_precise"){clash_precise(clash_precise_delay, clash_precise_fadeSteps);}

                                                         ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_clash(String)':

lightsaber:1675:94: error: 'clash_precise' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_clashHold(String, String)':

lightsaber:1683:55: error: 'clashHold_default' was not declared in this scope

lightsaber:1684:105: error: 'clashHold_default_fadeOut' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_tipDrag(String, String)':

lightsaber:1691:103: error: 'tipDrag_default' was not declared in this scope

     if(fadeOut_animation == "default"){tipDrag_default_stop(tipDrag_fadeIn_Out_Steps); tipDrag_state="new"; saberState = "on";}

                                                                                                       ^

lightsaber:1696:85: error: 'tipDrag_default_stop' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_melt(String, String)':

lightsaber:1703:83: error: 'melt_default' was not declared in this scope

lightsaber:1707:81: error: 'melt_default_stop' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void displayStripes(int)':

lightsaber:1765:67: error: 'newStripe' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void blasterProtect(int, int, int, int, int, int, int, int, boolean, int)':

lightsaber:1913:45: error: 'bC_newStripe' was not declared in this scope

lightsaber:1920:70: error: 'bC_newStripe' was not declared in this scope

lightsaber:1924:66: error: 'bC_newStripe' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void clash_precise(boolean, int)':

lightsaber:2034:64: error: 'clash_precise_XS' was not declared in this scope

       if(clash_precise_size == 6){clash_precise_XXL(0, fadeSteps);}

                                                                ^

lightsaber:2035:63: error: 'clash_precise_S' was not declared in this scope

       if(clash_precise_size == 7){clash_precise_XXXL(0, fadeSteps);}

                                                               ^

lightsaber:2036:63: error: 'clash_precise_M' was not declared in this scope

lightsaber:2037:63: error: 'clash_precise_L' was not declared in this scope

lightsaber:2038:64: error: 'clash_precise_XL' was not declared in this scope

       if(clash_precise_size == 1){clash_precise_XS(2, fadeSteps);}

                                                                ^

lightsaber:2039:65: error: 'clash_precise_XXL' was not declared in this scope

       if(clash_precise_size == 2){clash_precise_S(2, fadeSteps);}

                                                                 ^

lightsaber:2040:66: error: 'clash_precise_XXXL' was not declared in this scope

lightsaber:2043:64: error: 'clash_precise_XS' was not declared in this scope

       if(clash_precise_size == 6){clash_precise_XXL(2, fadeSteps);}

                                                                ^

lightsaber:2044:63: error: 'clash_precise_S' was not declared in this scope

       if(clash_precise_size == 7){clash_precise_XXXL(2, fadeSteps);}

                                                               ^

lightsaber:2045:63: error: 'clash_precise_M' was not declared in this scope

lightsaber:2046:63: error: 'clash_precise_L' was not declared in this scope

lightsaber:2047:64: error: 'clash_precise_XL' was not declared in this scope

lightsaber:2048:65: error: 'clash_precise_XXL' was not declared in this scope

lightsaber:2049:66: error: 'clash_precise_XXXL' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void lightningParry_default(int, int, int, int, int, int, int, int, int, int)':

lightsaber:2140:63: error: 'lightningParry_default_displayStripes' was not declared in this scope

lightsaber:2158:46: error: 'lightningParry_default_displayStripes' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void driveOut_slowGlow(int, int, int, int, int)':

lightsaber:2542:38: error: 'slowGlow_rdm_pixels' was not declared in this scope

lightsaber:2556:38: error: 'slowGlow_rdm_pixels' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void btnSetup()':

lightsaber:2623:52: error: 'interrupt_menu' was not declared in this scope

lightsaber:2624:50: error: 'interrupt_on' was not declared in this scope

lightsaber:2625:50: error: 'interrupt_cH' was not declared in this scope

 //---<INTERRUPTS>-------------------------------------------------------------------------------------------------------------

                                                  ^

lightsaber:2626:50: error: 'interrupt_bP' was not declared in this scope

lightsaber:2627:52: error: 'interrupt_melt' was not declared in this scope

   if(bladeON == true && debounce_stopTimer() > 500){saberState = "driveIn"; debounce_startTimer();}else{

                                                    ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_on()':

lightsaber:2632:44: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2632:97: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2633:99: error: 'debounce_startTimer' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_cH()':

lightsaber:2636:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2637:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2639:16: error: 'startTimer' was not declared in this scope

     debounce_startTimer();

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_bP()':

lightsaber:2643:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2644:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2646:16: error: 'startTimer' was not declared in this scope

     debounce_startTimer();

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_melt()':

lightsaber:2650:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2651:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2653:16: error: 'startTimer' was not declared in this scope

     debounce_startTimer();

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_menu()':

lightsaber:2657:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2658:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2660:16: error: 'startTimer' was not declared in this scope

 void checkBTNmenu(){

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNmenu()':

lightsaber:2667:18: error: 'stopTimer' was not declared in this scope

                 //WiFiMODE = true;

                  ^

lightsaber:2693:27: error: 'debounce_startTimer' was not declared in this scope

   if(menu_btnCounter == -1 && saberState == "menĂĽBTN" && digitalRead(BTN_MENU) == LOW){menu_btnCounter++; startTimer(); Serial.println("start Timer"); Serial.println(menu_btnCounter);}

                           ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNmenu_counting()':

lightsaber:2698:119: error: 'startTimer' was not declared in this scope

lightsaber:2699:49: error: 'stopTimer' was not declared in this scope

     if(stopTimer() > shortPress && digitalRead(BTN_BP) == LOW){if(interruptState != "default"){saberState = "lightningParry"; interruptState = "default"; bP_btnState = "low";}}else

                                                 ^

lightsaber:2699:110: error: 'startTimer' was not declared in this scope

     if(stopTimer() > shortPress && digitalRead(BTN_BP) == LOW){if(interruptState != "default"){saberState = "lightningParry"; interruptState = "default"; bP_btnState = "low";}}else

                                                                                                              ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNblasterProtect()':

lightsaber:2704:18: error: 'stopTimer' was not declared in this scope

 void checkBTNmelt(){

                  ^

lightsaber:2706:81: error: 'debounce_startTimer' was not declared in this scope

     if(stopTimer() > shortPress && digitalRead(BTN_MELT) == LOW){if(interruptState != "default"){saberState = "tipDrag"; interruptState = "default"; melt_btnState = "low";}}else

                                                                                 ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNmelt()':

lightsaber:2711:18: error: 'stopTimer' was not declared in this scope

lightsaber:2713:85: error: 'debounce_startTimer' was not declared in this scope

 //_______________________________________________________________________________________________________________________________________________________________________________________________________________________________

                                                                                     ^

Mehrere Bibliotheken wurden fĂĽr "WiFi.h" gefunden
 Benutzt: C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
exit status 1
'btnSetup' was not declared in this scope

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

I checked the code but can't find anything wrong with it.. The code worked actually, until i pasted the "html - files" in it if that helps

First thing I can suggest is that you update the package to the latest version using the IDE boards manager.

/*!!!*/

What is that? I have never seen that before.

oh thats just some orientation marks for me haha (they're all over the code just that it reminds me of sth i want to add etc)

The problem seems to be in the Wire library. That is why I suggest updating to the latest version to make sure that the wire library for the ESP32 is the latest.

still getting an error message but it got shorter i guess, thank you for the hint :wink:

Arduino: 1.8.12 (Windows 10), Board: "ESP32 Dev Module, Disabled, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void setup()':

lightsaber:1465:12: error: 'btnSetup' was not declared in this scope

     Serial.println("initialize CyberCrystal");

            ^

lightsaber:1471:21: error: 'lightsaberSetup' was not declared in this scope

     //  -> dann Variablen deklarieren (-> aktives Profil checken

                     ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void loop()':

lightsaber:1546:40: error: 'saber_driveOut' was not declared in this scope

lightsaber:1551:38: error: 'saber_driveIn' was not declared in this scope

     //---<bladeON-Funktionen>-----------------------------------------------------------------------------------------------------

                                      ^

lightsaber:1559:20: error: 'checkBTNmenu' was not declared in this scope

       //---<Accelerometer>-----------------------------------------------------------------------------------------------------------

                    ^

lightsaber:1560:29: error: 'checkBTNmenu_counting' was not declared in this scope

       if(saberState != "melt"){

                             ^

lightsaber:1561:30: error: 'checkBTNblasterProtect' was not declared in this scope

         acceleration = Accelerometer.beschleunigungLesen(0.05);

                              ^

lightsaber:1562:20: error: 'checkBTNmelt' was not declared in this scope

         if(Accelerometer.detectClash()>0.3){saberState = "clash"; clashState = "new"; bP_displayState = "new";}//wenn hier bP = "new" steht heiĂźt das, dass die clash precise animation unterbrochen werden kann   bP_displayState = "new";

                    ^

lightsaber:1580:39: error: 'crystal' was not declared in this scope

                                                               blasterProtect_xMIN,

                                       ^

lightsaber:1591:83: error: 'saber_blasterProtect' was not declared in this scope

       if(saberState == "melt"){saber_melt(melt_animation, melt_fadeOut_animation); meltCtrl = 't';}

                                                                                   ^

lightsaber:1592:87: error: 'saber_lightningParry' was not declared in this scope

lightsaber:1593:60: error: 'saber_clash' was not declared in this scope

lightsaber:1594:101: error: 'saber_clashHold' was not declared in this scope

lightsaber:1595:93: error: 'saber_tipDrag' was not declared in this scope

lightsaber:1596:81: error: 'saber_melt' was not declared in this scope

lightsaber:1600:54: error: 'saber_lightningParry' was not declared in this scope

lightsaber:1604:57: error: 'saber_melt' was not declared in this scope

lightsaber:1608:67: error: 'saber_tipDrag' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_driveOut(String)':

lightsaber:1633:61: error: 'driveOut_default' was not declared in this scope

                                                 driveOut_Steps);}                                            

                                                             ^

lightsaber:1638:63: error: 'driveOut_slowGlow' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_driveIn(String)':

lightsaber:1645:59: error: 'driveIn_default' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void crystal(int, int, int, int)':

lightsaber:1655:35: error: 'displayStripes' was not declared in this scope

 }//macht einfach all das was die Klinge stabil bzw instabil macht (-> durch Poti einstellbar)

                                   ^

lightsaber:1656:111: error: 'fadeWhole' was not declared in this scope

lightsaber:1657:28: error: 'moveStripes' was not declared in this scope

 void saber_blasterProtect(String animation, int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash){

                            ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_blasterProtect(String, int, int, int, int, int, int, int, int, boolean)':

lightsaber:1663:115: error: 'blasterProtect' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_lightningParry(String)':

lightsaber:1668:65: error: 'lightningParry_default' was not declared in this scope

lightsaber:1670:57: error: 'lightningParry_default_fadeOut' was not declared in this scope

   if(animation == "clash_precise"){clash_precise(clash_precise_delay, clash_precise_fadeSteps);}

                                                         ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_clash(String)':

lightsaber:1675:94: error: 'clash_precise' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_clashHold(String, String)':

lightsaber:1683:55: error: 'clashHold_default' was not declared in this scope

lightsaber:1684:105: error: 'clashHold_default_fadeOut' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_tipDrag(String, String)':

lightsaber:1691:103: error: 'tipDrag_default' was not declared in this scope

     if(fadeOut_animation == "default"){tipDrag_default_stop(tipDrag_fadeIn_Out_Steps); tipDrag_state="new"; saberState = "on";}

                                                                                                       ^

lightsaber:1696:85: error: 'tipDrag_default_stop' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void saber_melt(String, String)':

lightsaber:1703:83: error: 'melt_default' was not declared in this scope

lightsaber:1707:81: error: 'melt_default_stop' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void displayStripes(int)':

lightsaber:1765:67: error: 'newStripe' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void blasterProtect(int, int, int, int, int, int, int, int, boolean, int)':

lightsaber:1913:45: error: 'bC_newStripe' was not declared in this scope

lightsaber:1920:70: error: 'bC_newStripe' was not declared in this scope

lightsaber:1924:66: error: 'bC_newStripe' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void clash_precise(boolean, int)':

lightsaber:2034:64: error: 'clash_precise_XS' was not declared in this scope

       if(clash_precise_size == 6){clash_precise_XXL(0, fadeSteps);}

                                                                ^

lightsaber:2035:63: error: 'clash_precise_S' was not declared in this scope

       if(clash_precise_size == 7){clash_precise_XXXL(0, fadeSteps);}

                                                               ^

lightsaber:2036:63: error: 'clash_precise_M' was not declared in this scope

lightsaber:2037:63: error: 'clash_precise_L' was not declared in this scope

lightsaber:2038:64: error: 'clash_precise_XL' was not declared in this scope

       if(clash_precise_size == 1){clash_precise_XS(2, fadeSteps);}

                                                                ^

lightsaber:2039:65: error: 'clash_precise_XXL' was not declared in this scope

       if(clash_precise_size == 2){clash_precise_S(2, fadeSteps);}

                                                                 ^

lightsaber:2040:66: error: 'clash_precise_XXXL' was not declared in this scope

lightsaber:2043:64: error: 'clash_precise_XS' was not declared in this scope

       if(clash_precise_size == 6){clash_precise_XXL(2, fadeSteps);}

                                                                ^

lightsaber:2044:63: error: 'clash_precise_S' was not declared in this scope

       if(clash_precise_size == 7){clash_precise_XXXL(2, fadeSteps);}

                                                               ^

lightsaber:2045:63: error: 'clash_precise_M' was not declared in this scope

lightsaber:2046:63: error: 'clash_precise_L' was not declared in this scope

lightsaber:2047:64: error: 'clash_precise_XL' was not declared in this scope

lightsaber:2048:65: error: 'clash_precise_XXL' was not declared in this scope

lightsaber:2049:66: error: 'clash_precise_XXXL' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void lightningParry_default(int, int, int, int, int, int, int, int, int, int)':

lightsaber:2140:63: error: 'lightningParry_default_displayStripes' was not declared in this scope

lightsaber:2158:46: error: 'lightningParry_default_displayStripes' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void driveOut_slowGlow(int, int, int, int, int)':

lightsaber:2542:38: error: 'slowGlow_rdm_pixels' was not declared in this scope

lightsaber:2556:38: error: 'slowGlow_rdm_pixels' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void btnSetup()':

lightsaber:2623:52: error: 'interrupt_menu' was not declared in this scope

lightsaber:2624:50: error: 'interrupt_on' was not declared in this scope

lightsaber:2625:50: error: 'interrupt_cH' was not declared in this scope

 //---<INTERRUPTS>-------------------------------------------------------------------------------------------------------------

                                                  ^

lightsaber:2626:50: error: 'interrupt_bP' was not declared in this scope

lightsaber:2627:52: error: 'interrupt_melt' was not declared in this scope

   if(bladeON == true && debounce_stopTimer() > 500){saberState = "driveIn"; debounce_startTimer();}else{

                                                    ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_on()':

lightsaber:2632:44: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2632:97: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2633:99: error: 'debounce_startTimer' was not declared in this scope

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_cH()':

lightsaber:2636:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2637:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2639:16: error: 'startTimer' was not declared in this scope

     debounce_startTimer();

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_bP()':

lightsaber:2643:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2644:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2646:16: error: 'startTimer' was not declared in this scope

     debounce_startTimer();

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_melt()':

lightsaber:2650:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2651:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2653:16: error: 'startTimer' was not declared in this scope

     debounce_startTimer();

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void interrupt_menu()':

lightsaber:2657:25: error: 'debounce_stopTimer' was not declared in this scope

lightsaber:2658:25: error: 'debounce_startTimer' was not declared in this scope

lightsaber:2660:16: error: 'startTimer' was not declared in this scope

 void checkBTNmenu(){

                ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNmenu()':

lightsaber:2667:18: error: 'stopTimer' was not declared in this scope

                 //WiFiMODE = true;

                  ^

lightsaber:2693:27: error: 'debounce_startTimer' was not declared in this scope

   if(menu_btnCounter == -1 && saberState == "menĂĽBTN" && digitalRead(BTN_MENU) == LOW){menu_btnCounter++; startTimer(); Serial.println("start Timer"); Serial.println(menu_btnCounter);}

                           ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNmenu_counting()':

lightsaber:2698:119: error: 'startTimer' was not declared in this scope

lightsaber:2699:49: error: 'stopTimer' was not declared in this scope

     if(stopTimer() > shortPress && digitalRead(BTN_BP) == LOW){if(interruptState != "default"){saberState = "lightningParry"; interruptState = "default"; bP_btnState = "low";}}else

                                                 ^

lightsaber:2699:110: error: 'startTimer' was not declared in this scope

     if(stopTimer() > shortPress && digitalRead(BTN_BP) == LOW){if(interruptState != "default"){saberState = "lightningParry"; interruptState = "default"; bP_btnState = "low";}}else

                                                                                                              ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNblasterProtect()':

lightsaber:2704:18: error: 'stopTimer' was not declared in this scope

 void checkBTNmelt(){

                  ^

lightsaber:2706:81: error: 'debounce_startTimer' was not declared in this scope

     if(stopTimer() > shortPress && digitalRead(BTN_MELT) == LOW){if(interruptState != "default"){saberState = "tipDrag"; interruptState = "default"; melt_btnState = "low";}}else

                                                                                 ^

E:\-!!!ORDNER!!!-\!!!TECHNIK!!!\Lightsaber On My Own\zFINAL CODE\lightsaber\lightsaber.ino: In function 'void checkBTNmelt()':

lightsaber:2711:18: error: 'stopTimer' was not declared in this scope

lightsaber:2713:85: error: 'debounce_startTimer' was not declared in this scope

 //_______________________________________________________________________________________________________________________________________________________________________________________________________________________________

                                                                                     ^

Mehrere Bibliotheken wurden fĂĽr "WiFi.h" gefunden
 Benutzt: C:\Users\NoAdmin\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.6\libraries\WiFi
 Nicht benutzt: C:\Program Files (x86)\Arduino\libraries\WiFi
exit status 1
'btnSetup' was not declared in this scope

Dieser Bericht wäre detaillierter, wenn die Option
"Ausführliche Ausgabe während der Kompilierung"
in Datei -> Voreinstellungen aktiviert wäre.

One might comment out large sections of code, then slowly add back in sections to see what sections produce the error when added back in, fix those sections then move onto the next section.

So... The Arduino can't compile it when i put more than one "html-file" in my code.

Here the same code but without the "html" (works perfectly):

//---<include>---------------------------------------------------------------------------------------------------------------------------
//acceleration:
#include "A_acceleration.h"
A_acceleration Accelerometer;
double acceleration;


//NeoPixels
#include <Adafruit_NeoPixel.h>
#define PIN 33
int NUMPIXELS = 144;
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

//WiFi
#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>


//---<define_ButtonPINS>-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//normale Taster
#define BTN_MENU 13
#define BTN_ON 4
#define BTN_CH 0
#define BTN_BP 2
#define BTN_MELT 15

//Potis
#define crystalPOTI 35

//---<ctrl_Variables>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
String saberMode = "Lightsaber";  //MP3-Player; Taschenlampe; Lightsaber
String saberState = "SETUP"; //kontrolliert allgemein was es gerade macht
String saberSoundMODE; //kontrolliert was mit den sounds gemacht werden soll ->kein Sound|normaler Sound (evt auch ohne smoothswing machen!)|Musik (wenn 3 MP3-plaer reingehen dann auch gleichzeitig!)
// -> um jeden sound command drum rum
String interruptState;
boolean bladeON = false;

boolean WiFiMODE = true; //!!!!!!!!!!

char lightningParryCtrl = 'f';
char meltCtrl = 'f';
char tipDragCtrl = 'f'; //f bedeutet false, bedeutet, dass der Saberstate vorher nicht melt oder tipDrag war!
//---<system_Interne_Variablen>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//WiFi:
const char* ssid = "vyzecSabers";
const char* password = "HelloThere!";
AsyncWebServer server(80);

//Timer:
unsigned long currentMillis = millis();
unsigned long previousMillis = 0;

unsigned long debounce_currentMillis = millis();
unsigned long debounce_previousMillis = 0;

//Buttons:
/**/int shortPress = 180;
int debounceTime = 150;

String menu_btnState = "high";
String bP_btnState = "high";
String melt_btnState = "high";

int menu_btnCounter = -1;
/**/int menu_btnTime = 1000;

//potentiometer:
int crystal_potiVal;

//DELAY:
int DELAY_VAL = 10;




//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-NEOPIXEL->>>=======================================================================================================================================================================================================================
/**/int startLength = 15;

/*!!!*/int L_modifiers_color_R = 250;
/*!!!*/int L_modifiers_color_G = 112;//112;//70
/*!!!*/int L_modifiers_color_B = 0;

int L_modifiers_Color_R = L_modifiers_color_R;
int L_modifiers_Color_G = L_modifiers_color_G;
int L_modifiers_Color_B = L_modifiers_color_B;

/*!!!*/int L_modifiers_blinkColor_R = 255;
/*!!!*/int L_modifiers_blinkColor_G = 170;
/*!!!*/int L_modifiers_blinkColor_B = 130;

/*!!!*/int L_modifiers_meltColor_R = 255;
/*!!!*/int L_modifiers_meltColor_G = 170;
/*!!!*/int L_modifiers_meltColor_B = 130;

volatile int bC_fadeBuffer_R[101]; //bC = blinkColor
volatile int bC_fadeBuffer_G[101]; //Feld fĂĽr Fadestufen zwischen R und blinkColorR
volatile int bC_fadeBuffer_B[101];

//---<driveOut>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String driveOut_animation = "default"; //"slowGlow"
/*!!!*/int driveOut_Speed = 8;
/*!!!*/int driveOut_Steps = 2;

//slowGlow:
/*!*/int slowGlow_color_R = 0;//0;
/*!*/int slowGlow_color_G = 0;//0;
/*!*/int slowGlow_color_B = 250;//250;
/*!*/int slowGlow_color_Rx = 0;//0;
/*!*/int slowGlow_color_Gx = 0;
/*!*/int slowGlow_color_Bx = 220;//220;

/**/int startSpeed = 5;
/**/int rdmPixelCount = 3;


//---<driveIn>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String driveIn_animation = "default";
/*!!!*/int driveIn_Speed = 8;
/*!!!*/int driveIn_Steps = 2;


//---<crystal>--------------------------------------------------------------------------------------------------------------------------------------------------
//stripes:
/*!!!*/int L_modifiers_blinkColor_R2 = 100;        //Farbe der Stripes
/*!!!*/int L_modifiers_blinkColor_G2 = 45;//45;
/*!!!*/int L_modifiers_blinkColor_B2 = 0;

volatile int fadeBuffer_R[101];         //Felder in denen Fade-Stufen zwischen R und R2 z.B gespeichert werden, damit sie nicht immer nue berechnet werden mĂĽssen
volatile int fadeBuffer_G[101];
volatile int fadeBuffer_B[101];

int stripes[180];//x, y, ctrlPin, z

/**/int crystalStripesSetup_x1 = 13;
/**/int crystalStripesSetup_x2 = 13;
/**/int crystalStripesSetup_y1 = 7;
/**/int crystalStripesSetup_y2 = 7;
/**/int crystalStripesSetup_z1 = 12;
/**/int crystalStripesSetup_z2 = 12;
/**/int crystalStripesSetup_additionalStripes = 120;

/*!!!*/int crystal_stripeSpeed = +2;
/**/int crystal_fadeBrightness1 = 180;
/**/int crystal_fadeBrightness2 = 230;
/**/int crystal_wholeFadeSteps = 10;


//whole:
/*!!!*/int stripeBrightness = 255;
int fadeBrightness;
int wholeCounter = 0;
String wholeState = "new";
int fadeSpeed1;
int fadeSpeed2;


//---<blasterProtect>---------------------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String blasterProtect_animation = "default";

/**/int blasterProtect_posMIN = 30;
/**/int blasterProtect_posMAX = 110;

/**/int blasterProtect_xMIN = 5;
/**/int blasterProtect_xMAX = 15;
/**/int blasterProtect_yMIN = 5;
/**/int blasterProtect_yMAX = 15;

/**/int blasterProtect_fadeSteps = 3;
/**/int blasterProtect_brightness = 100;
/**/boolean blasterProtect_flash = true;


//default:
int bP_ctrlPin;
String bP_displayState = "new";
int bP_Counter = 0;
int bP_x;
int bP_y;


//---<clash>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String clash_animation = "clash_precise";

String clashState = "new";

//precise:
/**/int clash_precise_animation = 4;
/**/int clash_precise_groesseMIN = 3;
/**/int clash_precise_groesseMAX = 7;
/**/int clash_precise_fadeSteps = 3;
/**/boolean clash_precise_delay = false;

int clash_precise_size;


//---<clashHold>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String clashHold_animation = "default";
/*!!!*/String clashHold_fadeOut_animation = "default";

//default:
/**/int clashHold_default_brightnessMIN = 60;
/**/int clashHold_default_brightnessMAX = 150;
/**/int clashHold_default_pixlBright = 1.5;
/**/int clashHold_default_pixlAnzahl = 15;

//--fadeOut:
//default:
/**/int clashHold_fadeOut_default_Steps = 2;

//---<lightningParry>--------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String lightningParry_animation = "default";

String lightningParryState = "new";

int lightningParry_stripeAnzahl = 0;
int lightningParry_Count = 0;
int lightningParry_data[101];
//kommentar für mich: bei der funktion sobald sie gestartet wird zufällig position und anzahl der einzelnen Streifen anlegen im Feld (-> einsteööbar durch Übergabepararmeter)

//---<tipDrag>---------------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String tipDrag_animation = "default";
/*!!!*/String tipDrag_fadeOut_animation = "default";
/*!!!*/int tipDrag_crossingColor_R = 230;
/*!!!*/int tipDrag_crossingColor_G = 20;
/*!!!*/int tipDrag_crossingColor_B = 0;
String tipDrag_state = "new";

int tipDrag_xLength;
int tipDrag_yLength;
int tipDrag_zLength;

/*!!!*/int tipDrag_x_Length = 15;
/**/int tipDrag_y_Length = 2;
/**/int tipDrag_z_Length = 2;

/**/int tipDrag_fadeIn_Out_Steps = 3;

//default:
int tipDrag_deault_counter = 0;

//---<melt>------------------------------------------------------------------------------------------------------------------------------------------------------------
/*!!!*/String melt_animation = "default";
/*!!!*/String melt_fadeOut_animation = "default";

/*!!!*/int melt_meltColor_R = 255;//255
/*!!!*/int melt_meltColor_G = 60;//180
/*!!!*/int melt_meltColor_B = 0;//120
/*!!!*/int melt_meltColor_R2 = 190;//135
/*!!!*/int melt_meltColor_G2 = 10;//36
/*!!!*/int melt_meltColor_B2 = 0;//0

/*!!!*/int melt_crossingColor_R = 230;
/*!!!*/int melt_crossingColor_G = 20;
/*!!!*/int melt_crossingColor_B = 0;

String melt_state = "new";

int melt_xLength;
int melt_yLength;
int melt_zLength;

/*!!!*/int melt_x_Length = 120;  //"geschmolzenes"
/**/int melt_y_Length = 3;   //crossingColor-abschnitt (zwischen normaler Klinge und dem "geschmolzenen")
/**/int melt_z_Length = 2;   //fade

/**/int melt_fadeIn_Out_Steps = 3;

//default:
int melt_deault_counter = 0;



//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-FUNCTIONS [preset]->>>=======================================================================================================================================================================================================================
/*
  void saber_driveOut(String animation){}
  void saber_driveIn(String animation){}
  void crystal(int stripeSpeed, int fadeBrightness1, int fadeBrightness2, int wholeFadeSteps){}
  void saber_blasterProtect(String animation, int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash){}
  void saber_lightningParry(String animation){}
  void saber_clash(String animation){}
  void saber_clashHold(String animation, String fadeOut_animation){}
  void saber_tipDrag(String animation, String fadeOut_animation){}
  void saber_melt(String animation, String fadeOut_animation){}
  int calculateColorVal(int xcolorOld, int xcolorNew, int xproportion, int xpropFact){}
  void fadeWhole(int newBrightnessMIN, int newBrightnessMAX, int fadeSpeedMIN, int fadeSpeedMAX, int fadeSpeedMIN2, int fadeSpeedMAX2, int Steps, boolean sD){}
  void displayStripes(int brightness){}
  void moveStripes(int bewegungsfaktor){}
  void newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){}
  void loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){}
  void loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){}
  void crystalStripesSetup(int xa, int xb, int ya, int yb, int za, int zb, int additionalStripes, boolean sD){}
  void blasterProtect(int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash, int delaySideSpan){}
  void bC_newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){}
  void bC_loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){}
  void bC_loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){}
  void clash_precise(boolean delaySideSpan, int fadeSteps){}
  void clash_precise_XS(int delaySidespan, int fadeSpeps){}
  void clash_precise_S(int delaySidespan, int fadeSpeps){}
  void clash_precise_M(int delaySidespan, int fadeSpeps){}
  void clash_precise_L(int delaySidespan, int fadeSpeps){}
  void clash_precise_XL(int delaySidespan, int fadeSpeps){}
  void clash_precise_XXL(int delaySidespan, int fadeSpeps){}
  void clash_precise_XXXL(int delaySidespan, int fadeSpeps){}
  void clashHold_default(int brMIN, int brMAX, float pixlBright, int pixlAnzahl){}
  void clashHold_default_fadeOut(int steps){}
  void lightningParry_default(int anzahlMIN,int anzahlMAX,  int xMIN,int xMAX,  int yMIN,int yMAX,  int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){}
  void lightningParry_default_displayStripes(int xBrightness){}
  void lightningParry_default_fadeOut(int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){}
  void tipDrag_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){}
  void tipDrag_default_stop(int xfadeIn_Out_Steps){}
  void melt_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){}
  void melt_default_stop(int xfadeIn_Out_Steps){}
  void driveOut_default(int Speed, int Steps){}
  void driveOut_slowGlow(int startLength, int startSpeed, int rdmPixelCount, int Speed, int Steps){}
  void slowGlow_rdm_pixels(int startLengthX){}
  void driveIn_default(int Speed, int Steps){}
  void btnSetup(){}
  void interrupt_on(){}
  void interrupt_cH(){}
  void interrupt_bP(){}
  void interrupt_melt(){}
  void interrupt_menu(){}
  void checkBTNmenu(){}
  void checkBTNmenu_counting(){}
  void checkBTNblasterProtect(){}
  void checkBTNmelt(){}
  void lightsaberSetup(){}
  void startTimer(){}
  unsigned long stopTimer(){}
  void debounce_startTimer(){}
  unsigned long debounce_stopTimer(){}
*/


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-WIFI-SERVER->>>=======================================================================================================================================================================================================================
//---<HTML>--------------------------------------------------------------------------------------------------------------------------------------------------------

const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
      <!--=== topNav ===========================================================================================================================================================================================================================================-->
      <div class="topnav">
        <a class="active" href="/index.html">Home</a>
        <a href="/instructions.html">Instructions</a>
        <a href="/about.html">About</a>
        <a href="/edit.html">Edit</a>
      </div>
    </header>

    <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
    <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
      Top
    </button>

    <h1>vyzecSaber</h1>

    <script>
      //put post & get requests here!
    </script>
    <script>
      //to make the website work smoothly
      //=== scrollToTop_btn =====================================================================================================================================================================================
      var mybutton = document.getElementById("scrollToTop_btn");
      window.onscroll = function () {
        scrollFunction();
      };

      function scrollFunction() {
        if (
          document.body.scrollTop > 20 ||
          document.documentElement.scrollTop > 20
        ) {
          mybutton.style.display = "block";
        } else {
          mybutton.style.display = "none";
        }
      }
      function topFunction() {
        document.body.scrollTop = 0;
        document.documentElement.scrollTop = 0;
      }
    </script>
  </body>
</html>
)rawliteral";

//---<processor>--------------------------------------------------------------------------------------------------------------------------------------------------------

//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-SETUP/ASYNC->>>=====================================================================================================================================================================================================SETUP
void setup() {
  Serial.begin(115200);
  pixels.begin();pixels.clear();pixels.setBrightness(stripeBrightness);pixels.show();

  

  btnSetup();
  Accelerometer.Setup();
  pinMode(crystalPOTI, INPUT);
  
  if(saberState == "SETUP" || "editSaber"){
    Serial.println("initialize CyberCrystal");
    lightsaberSetup();
    Serial.println("initialized CyberCrystal");

    //SETUP //fĂĽr ALLES
    //  -> erst technische Komponente wie SD etc etc
    //  -> dann Variablen deklarieren (-> aktives Profil checken
    //                                 -> textfiles aus dem Ordner lesen und so die variablen deklarieren)
    //                                 und buffer laden etc etc
  }

  if(WiFiMODE == true){
  //---<<<-WIFI-SERVER->>>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //WiFi-Einstellungen nur fĂĽrs Lichtschwert geeignet
  //  WEBSERVER!
  //   -> bei jeder Variablenänderung Wert direkt in File auf der SD speichern! (jede Variable braucht einzelnes .txt file!!!!)
  //   -> SAVE/übernehmen Knopf!!! => wenn der gedrückt wird werden die Einstellungen übernommen und buffer etc gefüllt, sofern das editierte als aktiver Körper ausgewählt ist
  //   -> wenn profil geändert wird Variablen neu deklarieren und buffer laden!

  //WiFi:
  
  
  Serial.println("setUp Webserver..");

  WiFi.softAP(ssid, password);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);
  

  //---<server.on>-----------------------------------------------------------------------------------------------------------------------------
  
  
  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html);
  });
  server.on("/index.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html);
  });
  
  /*
  server.on("/instructions.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", instructions_html);
  });
  
  server.on("/about.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", about_html);
  });

  server.on("/edit.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", edit_html);
  });
  server.on("/e_profile1.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_html);
  });
  server.on("/e_profile1_crystal.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_crystal_html);
  });
  server.on("/e_profile1_sound.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_sound_html);
  });
  */

  
  server.begin();
  }


  Serial.println("Setup completed!");
}


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-LOOP->>>=============================================================================================================================================================================================================LOOP
void loop() {
  //while(saberState == "ready"){} //schleife in der Er sich fängt wenn die Klinge aus ist -> hier auch gleich schon edit mode evt ? 

  //===-Lightsaber-====================================================================================================================================================================================================Lightsaber
  while(saberMode == "Lightsaber"){
    if(saberState == "driveOut"){
      saber_driveOut(driveOut_animation);
      //saber_driveOut("slowGlow", sonstige Parameter);sound(); //1x abspielen => saberState = on;
      Serial.println("driveOut");
    }
    if(saberState == "driveIn"){
      saber_driveIn(driveIn_animation);
      //saber_driveOut("default", sonstige Parameter);sound(); //1x abspielen => saberState = ready;
      Serial.println("driveIn");
    }

    //---<bladeON-Funktionen>-----------------------------------------------------------------------------------------------------
    if(bladeON == true){
      //---<timed_Interrupts>-----------------------------------------------------------------------------------
      checkBTNmenu();
      checkBTNmenu_counting();
      checkBTNblasterProtect();
      checkBTNmelt();

      //---<Accelerometer>-----------------------------------------------------------------------------------------------------------
      if(saberState != "melt"){
        acceleration = Accelerometer.beschleunigungLesen(0.05);
        if(Accelerometer.detectClash()>0.3){saberState = "clash"; clashState = "new"; bP_displayState = "new";}//wenn hier bP = "new" steht heiĂźt das, dass die clash precise animation unterbrochen werden kann   bP_displayState = "new";
      }
      
      if(saberState == "on" || "blasterProtect" || "tipDrag" || "melt" || "menĂĽBTN" || "clash"){// immer dann wenn die Aktion des schwertes nicht die ganze Kling bedeckt
        //[if(!sound){sound} //default sounds spielen sobald sie nicht mehr gespielt werden -> aber nur wenn saberState == on!
        //[beschleunigung.messen //nicht zu oft! 
        //crystal
        //normales Zeug :D
        //Serial.println("on");
        
        crystal(crystal_stripeSpeed,
                crystal_fadeBrightness1,
                crystal_fadeBrightness2,
                crystal_wholeFadeSteps);
      }
      if(saberState == "blasterProtect"){saber_blasterProtect(blasterProtect_animation, 
                                                              blasterProtect_posMIN,
                                                              blasterProtect_posMAX,
                                                              blasterProtect_xMIN,
                                                              blasterProtect_xMAX,
                                                              blasterProtect_yMIN,
                                                              blasterProtect_yMAX,
                                                              blasterProtect_fadeSteps,
                                                              blasterProtect_brightness,
                                                              blasterProtect_flash);}  //-> hier überall den jeweils benötigten sound 1x spielen!! -> solange der gespielt wird, unabhängig von saber State keinen neuen anfangen!!!!
      if(saberState == "lightningParry"){saber_lightningParry(lightningParry_animation); lightningParryCtrl = 't';}
      if(saberState == "clash"){saber_clash(clash_animation);}
      if(saberState == "clashHold"){saber_clashHold(clashHold_animation, clashHold_fadeOut_animation);}
      if(saberState == "tipDrag"){saber_tipDrag(tipDrag_animation, tipDrag_fadeOut_animation); tipDragCtrl = 't';}
      if(saberState == "melt"){saber_melt(melt_animation, melt_fadeOut_animation); meltCtrl = 't';}

      //um Fehler zusätzlich zu vermeiden:    
      if(lightningParryCtrl == 't' && saberState != "lightningParry"){
        saber_lightningParry(lightningParry_animation);
        lightningParryCtrl = 'f';
      }    
      if(meltCtrl == 't' && saberState != "melt"){
        saber_melt(melt_animation,melt_fadeOut_animation);
        meltCtrl = 'f';
      }
      if(tipDragCtrl == 't' && saberState != "tipDrag"){
        saber_tipDrag(tipDrag_animation, tipDrag_fadeOut_animation);
        tipDragCtrl = 'f';
      }

      //Serial.println(saberState);

      pixels.show();
      delay(DELAY_VAL);
    }
  }
  //===-Taschenlampe-===================================================================================================================================================================================================Taschenlampe
  while(saberMode == "Taschenlampe"){
  }
  //===-MP3-Player-=====================================================================================================================================================================================================MP3-Player
  while(saberMode == "MP3-Player"){
  }
}


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-BLADE->>>=====================================================================================================================================================================================================SABER_BLADE
//---<final_Functions>-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------final-Functions
//wechsel von saberState etc durch Interrupts! (auch bei acceleration wegen clash und so :D => Variable als interrupt !)
void saber_driveOut(String animation){
  if(animation == "default"){driveOut_default(driveOut_Speed,
                                              driveOut_Steps);}
  if(animation == "slowGlow"){driveOut_slowGlow(startLength,
                                                startSpeed,
                                                rdmPixelCount,
                                                driveOut_Speed,
                                                driveOut_Steps);}                                            
  
  saberState = "on";
  bladeON = true;
}
void saber_driveIn(String animation){
  if(animation == "default"){driveIn_default(driveIn_Speed,
                                             driveIn_Steps);}
  
  saberState = "editSaber";
  bladeON = false;
}


void crystal(int stripeSpeed, int fadeBrightness1, int fadeBrightness2, int wholeFadeSteps){
  crystal_potiVal = round((float)((float)analogRead(crystalPOTI)/(float)4095)*(float)100);
  if(crystal_potiVal != 0){
    displayStripes(crystal_potiVal);
    fadeWhole(fadeBrightness1-crystal_potiVal,fadeBrightness2-crystal_potiVal, 0,0, 0,0, wholeFadeSteps, false);
    moveStripes(stripeSpeed);
  }
  else{pixels.fill(pixels.Color(L_modifiers_color_R,L_modifiers_color_G,L_modifiers_color_B),0,NUMPIXELS);}
}//macht einfach all das was die Klinge stabil bzw instabil macht (-> durch Poti einstellbar)

void saber_blasterProtect(String animation, int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash){
  if(animation == "default"){blasterProtect(posMIN,posMAX, xMIN, xMAX, yMIN, yMAX, fadeSteps, brightness, flash, 0);}
}
void saber_lightningParry(String animation){
  if(animation == "default"){
    if(digitalRead(BTN_BP) == LOW){
      lightningParry_default(4,7, 2,4, 3,5,  10,90, 50,NUMPIXELS);
    }else{
      lightningParry_default_fadeOut(10,90, 50,NUMPIXELS); saberState = "on";
    }
  }
}
void saber_clash(String animation){
  if(animation == "clash_precise"){clash_precise(clash_precise_delay, clash_precise_fadeSteps);}
}
void saber_clashHold(String animation, String fadeOut_animation){
  if(animation == "default"){
    if(digitalRead(BTN_CH) == LOW){
        clashHold_default(clashHold_default_brightnessMIN,
                          clashHold_default_brightnessMAX,
                          clashHold_default_pixlBright, 
                          clashHold_default_pixlAnzahl);
      }else{if(fadeOut_animation == "default"){clashHold_default_fadeOut(clashHold_fadeOut_default_Steps);} saberState = "on";}//
    }
  }
void saber_tipDrag(String animation, String fadeOut_animation){
  if(saberState == "tipDrag"){
    if(animation == "default"){
      if(digitalRead(BTN_MELT) == LOW){
          tipDrag_default(tipDrag_x_Length,tipDrag_y_Length,tipDrag_z_Length, tipDrag_fadeIn_Out_Steps);
      }
    }
  }
  else{
    if(fadeOut_animation == "default"){tipDrag_default_stop(tipDrag_fadeIn_Out_Steps); tipDrag_state="new"; saberState = "on";}
  }
}

void saber_melt(String animation, String fadeOut_animation){
  if(saberState == "melt"){
    if(animation == "default"){
     melt_default(melt_x_Length,melt_y_Length,melt_z_Length, melt_fadeIn_Out_Steps);
    }
  }
  else{
    if(fadeOut_animation == "default"){melt_default_stop(melt_fadeIn_Out_Steps+1); melt_state="new"; saberState = "on";}
  }
}



//---<calculationFunctions>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------calculateFunctions
int calculateColorVal(int xcolorOld, int xcolorNew, int xproportion, int xpropFact){ //old = Basefarbe auf die New angenähert wird. für:[1 = 100% New; 0 = 0% New usw.]  
  int difference;                                                                    //z.B 100, 200, 10, 100 -> 10/100 also 10% der neuen Farbe
  double proportion;
  int newValue;
  if(xcolorOld == 0 && xcolorNew == 0){return(0);}else{
    proportion = (double)xproportion / (double)xpropFact;
    if(proportion <= 0){return(xcolorOld);}else{
      difference = xcolorNew - xcolorOld;
      newValue = round((double)difference * (double)proportion) + xcolorOld; 
      //Serial.print("proportion: ");Serial.println(proportion);
      //Serial.print("difference: ");Serial.println(difference);
      return( newValue);
    } 
  }
}


//---<Crystal>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Crystal
void fadeWhole(int newBrightnessMIN, int newBrightnessMAX, int fadeSpeedMIN, int fadeSpeedMAX, int fadeSpeedMIN2, int fadeSpeedMAX2, int Steps, boolean sD){
  
  if(wholeState == "new"){
    fadeBrightness = random(newBrightnessMIN, newBrightnessMAX);
    fadeSpeed1 = random(fadeSpeedMIN, fadeSpeedMAX);
    fadeSpeed2 = random(fadeSpeedMIN2, fadeSpeedMAX2);
    wholeCounter = stripeBrightness;
    wholeState = "down";
    
    if(sD==true){Serial.print("new: ");Serial.println(fadeBrightness);}
  }

  if(wholeState == "down"){
    pixels.setBrightness(wholeCounter);
    wholeCounter-=Steps;
    
    if(sD==true){Serial.println(wholeCounter);}
    if(wholeCounter <= fadeBrightness){wholeState = "up";}
    delay(fadeSpeed1);
  }
  
  if(wholeState == "up"){
    pixels.setBrightness(wholeCounter);
    wholeCounter+=Steps;
    
    if(sD==true){Serial.println(wholeCounter);}
    if(wholeCounter >= stripeBrightness){wholeState = "new";}
    delay(fadeSpeed2);
  }
}
void displayStripes(int brightness){
  pixels.fill(pixels.Color(L_modifiers_color_R, L_modifiers_color_G, L_modifiers_color_B),0,NUMPIXELS);//displayed alle Streifen
  for(int i = 2; i <= 180 && stripes[i] != -1000; i+=4){
    newStripe(stripes[i], stripes[i-2], stripes[i-1], 0,brightness);
    //delay(0);
  }
}
void moveStripes(int bewegungsfaktor){
  if(bewegungsfaktor >= 1){
    for(int i = 2; i <= 180 && stripes[i] != -1000; i+=4){//verschiebt alle Streifen um bewegungsfaktor nach oben
      if(stripes[i] <= NUMPIXELS){stripes[i] += bewegungsfaktor;}
      else{
        stripes[i] = -(stripes[i-2]+2*stripes[i-1]+stripes[i+1]);//setzt Streifen wieder nach unten/an den Anfang (! nicht an den anfangswert!!!)
      }
    }//~0ms Dauer bei 0ms delay! (x=5; y=6)
  }
  if(bewegungsfaktor <= -1){
    for(int i = 2; i <= 180 && stripes[i] != -1000; i+=4){//verschiebt alle Streifen um bewegungsfaktor nach oben
      if(stripes[i] >= 0-(stripes[i-2]+2*stripes[i-1]+stripes[i+1])){stripes[i] += bewegungsfaktor;}
      else{
        stripes[i] = NUMPIXELS;//setzt Streifen wieder nach unten/an den Anfang (! nicht an den anfangswert!!!)
      }
    }//~0ms Dauer bei 0ms delay! (x=5; y=6)
  }
}


void newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){
  if(brightness > 1){ //warum nicht 0? bug bei brightness 1 D:
    int k = 100;
    if(brightness !=100){k = brightness;}
    int z;
    pixels.fill(pixels.Color(fadeBuffer_R[k],fadeBuffer_G[k],fadeBuffer_B[k]),xctrlPin+y,x);
    //Serial.println(k);
    if(y != 0){
      if(delaySideSpan != 0){
        for(int i = y; i>=0; i--){
          if(brightness == 100){z = round((float)((float)i/(float)y)*(float)100);}else{
            z = round(((float)((float)i/(float)y))*(float)brightness);}
          if(z <= 0){
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
            pixels.show();
          }else{
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
            pixels.show();
          }
          //Serial.print(fadeBuffer_R[z]);Serial.print(" | ");Serial.print(fadeBuffer_G[z]);Serial.print(" | ");Serial.println(fadeBuffer_B[z]);
          delay(delaySideSpan);
        }
      }else{
        for(int i = y; i>=0; i--){
          if(brightness == 1){z = round((float)((float)i/(float)y)*(float)100);}else{
            z = round(((float)((float)i/(float)y))*(float)brightness);}
          if(z <= 0){
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z+1],fadeBuffer_G[z+1],fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
          }else{
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+i,1);
            pixels.fill(pixels.Color(fadeBuffer_R[z],fadeBuffer_G[z],fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
          }
        }
      }
    }
  }
}
void loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){
  switch(xbufferSelection){
    case 'R':for(int i = 0; i <= 101; i++){
      fadeBuffer_R[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" buffVal_R: ");Serial.println(fadeBuffer_R[i]);}
    }break;
      
    case 'G':for(int i = 0; i <= 101; i++){
      fadeBuffer_G[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" buffVal_G: ");Serial.println(fadeBuffer_G[i]);}
    }break;
    
    case 'B':for(int i = 0; i <= 101; i++){
      fadeBuffer_B[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" buffVal_B: ");Serial.println(fadeBuffer_B[i]);}
    }break;
  }
}
void loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){
  
  if(sD == true){Serial.println("loading Buffer...");}
  
  loadBuffer('R', xcolorOldR, xcolorNewR, sD); 
  loadBuffer('G', xcolorOldG, xcolorNewG, sD);
  loadBuffer('B', xcolorOldB, xcolorNewB, sD);

  fadeBuffer_R[0]=xcolorOldR;
  fadeBuffer_G[0]=xcolorOldG;
  fadeBuffer_B[0]=xcolorOldB;

  fadeBuffer_R[100]=xcolorNewR;
  fadeBuffer_G[100]=xcolorNewG;
  fadeBuffer_B[100]=xcolorNewB;

  if(sD == true){
  Serial.println("<--Buffer loaded!--------->");
  Serial.println("Bufferval 100: ");
  Serial.println(fadeBuffer_R[100]);
  Serial.println(fadeBuffer_G[100]);
  Serial.println(fadeBuffer_B[100]);
  Serial.println("Bufferval 0: ");
  Serial.println(fadeBuffer_R[0]);
  Serial.println(fadeBuffer_G[0]);
  Serial.println(fadeBuffer_B[0]);
  Serial.println("<------------------------->");
  }
}
void crystalStripesSetup(int xa, int xb, int ya, int yb, int za, int zb, int additionalStripes, boolean sD){
  if(sD == true){Serial.println("setup new Crystal-Stripes...");Serial.println("<--write ctrlPin---------->");}
  int zaehler = -2;
  int q;
  int r;
  int s;
   
  for(int i = 0; i <= 180; i+=4){stripes[i] = random(xa, xb);}//definiert x (=Span-)Werte der Streifen
  for(int i = 1; i <= 180; i+=4){stripes[i] = random(ya, yb);}//definiert y (=sideSpan-)Werte der Streifen
  for(int i = 3; i <= 180; i+=4){stripes[i] = random(za, zb);}//definiert z (=Abstands-)Werte der Streifen
  for(int i = 2; i <= 180; i+=4){
    zaehler++;
    
    q =stripes[i-2];
    r =stripes[i-1];
    s =stripes[i+1];
    
    if(zaehler == -1){stripes[i] = -(q+2*r+s);}else{
      if(((q+2*r+s)*zaehler)<NUMPIXELS+additionalStripes){stripes[i] = stripes[i-4]+stripes[i-6]+2*stripes[i-5]+stripes[i-3];}//stripes[i] berĂĽcksichtigt hier die Werte des vorhergegangenen Streifens
      else{stripes[i] = -1000;};
    }

    if(sD == true){
    Serial.print(zaehler);Serial.print("x= ");Serial.print(stripes[i-2]);Serial.print("y= ");Serial.print(stripes[i-1]);Serial.print("ctrlPin= ");Serial.print(stripes[i]);Serial.print("z= ");Serial.println(stripes[i+1]);
    }
  }
  if(sD == true){Serial.println("<------------------------->");} 
}



//---<blasterProtect>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------blasterProtect
void blasterProtect(int posMIN, int posMAX, int xMIN, int xMAX, int yMIN, int yMAX, int fadeSteps, int brightness, boolean flash, int delaySideSpan){

  if(bP_displayState == "2"){
    int g = brightness -  bP_Counter+1;
    
    bC_newStripe(bP_ctrlPin, bP_x, bP_y, 0,g);
    bP_Counter+=fadeSteps;
    
    if(bP_Counter >= brightness){bP_displayState = "new"; saberState = "on";} //saberState fĂĽr Interrupt
  }
  if(bP_displayState == "flash"){
    if(flash == true){
      bC_newStripe(bP_ctrlPin-bP_y-bP_x, 2*bP_x, 2*bP_y, 0,brightness);pixels.show();
      delay(8);
      pixels.fill(pixels.Color(L_modifiers_color_R, L_modifiers_color_G, L_modifiers_color_B), 1, NUMPIXELS);
    }
    bC_newStripe(bP_ctrlPin, bP_x, bP_y, delaySideSpan,brightness);
    bP_displayState = "2";
  }
  if(bP_displayState == "new"){
    bP_Counter = 0;
    bP_ctrlPin = random(posMIN, posMAX);
    bP_x = random(xMIN, xMAX);
    bP_y = random(yMIN, yMAX);
    bP_displayState = "flash";
  }
}

//brightness von 0 - 100 angeben
void bC_newStripe(int xctrlPin, int x, int y, int delaySideSpan, float brightness){
  int k = 100;
  if(brightness !=100){k = brightness;}
  int z;
  pixels.fill(pixels.Color(bC_fadeBuffer_R[k],bC_fadeBuffer_G[k],bC_fadeBuffer_B[k]),xctrlPin+y,x);
  //Serial.println(k);
  if(y != 0){
    if(delaySideSpan != 0){
      for(int i = y; i>=0; i--){
        if(brightness == 100){z = round((float)((float)i/(float)y)*(float)100);}else{
          z = round(((float)((float)i/(float)y))*(float)brightness);}
        if(z <= 0){
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
          pixels.show();
        }else{
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
          pixels.show();
        }
        //Serial.print(cP_fadeBuffer_R[z]);Serial.print(" | ");Serial.print(cP_fadeBuffer_G[z]);Serial.print(" | ");Serial.println(cP_fadeBuffer_B[z]);
        delay(delaySideSpan);
      }
    }else{
      for(int i = y; i>=0; i--){
        if(brightness == 1){z = round((float)((float)i/(float)y)*(float)100);}else{
          z = round(((float)((float)i/(float)y))*(float)brightness);}
        if(z <= 0){
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z+1],bC_fadeBuffer_G[z+1],bC_fadeBuffer_B[z+1]),xctrlPin+y+x+(y-i),1);
        }else{
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+i,1);
          pixels.fill(pixels.Color(bC_fadeBuffer_R[z],bC_fadeBuffer_G[z],bC_fadeBuffer_B[z]),xctrlPin+y+x+(y-i),1);
        }
      }
    }
  }
}
void bC_loadBuffer(char xbufferSelection, int xcolorOld, int xcolorNew, boolean showDebug){
  switch(xbufferSelection){
    case 'R':for(int i = 0; i <= 101; i++){
      bC_fadeBuffer_R[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" bC_buffVal_R: ");Serial.println(bC_fadeBuffer_R[i]);}
    }break;
      
    case 'G':for(int i = 0; i <= 101; i++){
      bC_fadeBuffer_G[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" bC_buffVal_G: ");Serial.println(bC_fadeBuffer_G[i]);}
    }break;
    
    case 'B':for(int i = 0; i <= 101; i++){
      bC_fadeBuffer_B[i]= calculateColorVal(xcolorOld, xcolorNew, i, 100);
      if(showDebug==true){Serial.print(i);Serial.print(" bC_buffVal_B: ");Serial.println(bC_fadeBuffer_B[i]);}
    }break;
  }
}
void bC_loadBufferRGB(int xcolorOldR, int xcolorOldG, int xcolorOldB, int xcolorNewR, int xcolorNewG, int xcolorNewB, boolean sD){
  
  if(sD == true){Serial.println("loading bC_Buffer...");}
  
  bC_loadBuffer('R', xcolorOldR, xcolorNewR, sD); 
  bC_loadBuffer('G', xcolorOldG, xcolorNewG, sD);
  bC_loadBuffer('B', xcolorOldB, xcolorNewB, sD);

  bC_fadeBuffer_R[0]=xcolorOldR;
  bC_fadeBuffer_G[0]=xcolorOldG;
  bC_fadeBuffer_B[0]=xcolorOldB;

  bC_fadeBuffer_R[100]=xcolorNewR;
  bC_fadeBuffer_G[100]=xcolorNewG;
  bC_fadeBuffer_B[100]=xcolorNewB;

  if(sD == true){
  Serial.println("<--bC_Buffer loaded!--------->");
  Serial.println("bC_Bufferval 100: ");
  Serial.println(bC_fadeBuffer_R[100]);
  Serial.println(bC_fadeBuffer_G[100]);
  Serial.println(bC_fadeBuffer_B[100]);
  Serial.println("bC_Bufferval 0: ");
  Serial.println(bC_fadeBuffer_R[0]);
  Serial.println(bC_fadeBuffer_G[0]);
  Serial.println(bC_fadeBuffer_B[0]);
  Serial.println("<---------------------------->");
  }
}



//---<clash>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------clash
//precise:
void clash_precise(boolean delaySideSpan, int fadeSteps){//groesse von 1-7 (gibt an ob XS, S, M etc etc)
  if(clashState == "new"){
    clash_precise_size = random(clash_precise_groesseMIN, clash_precise_groesseMAX);
    clashState = "go";
  }
  if(clashState == "go"){
    if(delaySideSpan == false){
      if(clash_precise_size == 1){clash_precise_XS(0, fadeSteps);}
      if(clash_precise_size == 2){clash_precise_S(0, fadeSteps);}
      if(clash_precise_size == 3){clash_precise_M(0, fadeSteps);}
      if(clash_precise_size == 4){clash_precise_L(0, fadeSteps);}
      if(clash_precise_size == 5){clash_precise_XL(0, fadeSteps);}
      if(clash_precise_size == 6){clash_precise_XXL(0, fadeSteps);}
      if(clash_precise_size == 7){clash_precise_XXXL(0, fadeSteps);}
    }
    if(delaySideSpan == true){
      if(clash_precise_size == 1){clash_precise_XS(2, fadeSteps);}
      if(clash_precise_size == 2){clash_precise_S(2, fadeSteps);}
      if(clash_precise_size == 3){clash_precise_M(2, fadeSteps);}
      if(clash_precise_size == 4){clash_precise_L(2, fadeSteps);}
      if(clash_precise_size == 5){clash_precise_XL(2, fadeSteps);}
      if(clash_precise_size == 6){clash_precise_XXL(2, fadeSteps);}
      if(clash_precise_size == 7){clash_precise_XXXL(2, fadeSteps);}
    }
  }
}

void clash_precise_XS(int delaySidespan, int fadeSpeps){
  blasterProtect(0,0, 10,10, 10,10, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_S(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 22,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 22, 15,15, 15,15, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_M(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 30,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 30, 20,20, 20,20, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_L(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 37,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 37, 25,25, 25,25, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_XL(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 45,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 45, 30,30, 30,30, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_XXL(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 53,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 53, 35,35, 35,35, fadeSpeps, 100, true, delaySidespan);
}
void clash_precise_XXXL(int delaySidespan, int fadeSpeps){
  blasterProtect(round((float)(NUMPIXELS-startLength)/(float)2)+ startLength - 60,round((float)(NUMPIXELS-startLength)/(float)2) + startLength - 60, 40,40, 40,40, fadeSpeps, 100, true, delaySidespan);
}


//---<clashHold>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------clashHold
//default:
void clashHold_default(int brMIN, int brMAX, float pixlBright, int pixlAnzahl){
  pixels.fill(pixels.Color(L_modifiers_blinkColor_R,
                           L_modifiers_blinkColor_G,
                           L_modifiers_blinkColor_B),0,NUMPIXELS);
  for(int i = 0; i <= pixlAnzahl; i++){
    pixels.fill(pixels.Color(L_modifiers_blinkColor_R-round((float)50*(float)pixlBright),
                             L_modifiers_blinkColor_G-round((float)40*(float)pixlBright),
                             L_modifiers_blinkColor_B-round((float)30*(float)pixlBright)),random(0,NUMPIXELS), random(1,7));
  }
  fadeWhole(brMIN,brMAX, 0,0, 0,0, 12, false);
  pixels.show();
}

//--fadeOut:
//default:
void clashHold_default_fadeOut(int steps){
  for(int i = 100; i >= 0; i -= steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);
    pixels.fill(pixels.Color(bC_fadeBuffer_R[i],
                             bC_fadeBuffer_G[i],
                             bC_fadeBuffer_B[i]),0+(100-i),NUMPIXELS-(100-i)+1);
  pixels.show();
  delay(2);
  }
}


//---<lightningParry>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------lightningParry
//default:
void lightningParry_default(int anzahlMIN,int anzahlMAX,  int xMIN,int xMAX,  int yMIN,int yMAX,  int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){
  if(lightningParryState == "new"){
    lightningParry_stripeAnzahl = random(anzahlMIN, anzahlMAX);
    lightningParry_Count = 0;
    for(int i = 0; i < lightningParry_stripeAnzahl*7; i+=7){
      lightningParry_data[i] = random(startLength, NUMPIXELS - 10);  //position
      lightningParry_data[i + 1] = random(xMIN, xMAX);               //x
      lightningParry_data[i + 2] = random(yMIN, yMAX);               //y
      lightningParry_data[i + 3] = random(5, 9);                     //"fadeSpan" --> Speed
      lightningParry_data[i + 4] = random(0, 1);                     // up / down

      lightningParry_data[i + 5] = random(xMinMIN, xMinMAX);         //MIN
      lightningParry_data[i + 6] = random(xMaxMIN, xMaxMAX);         //MAX
    }
    lightningParryState = "start";
  }
  
  if(lightningParryState == "start"){
    for(int i = 0; i <= lightningParry_stripeAnzahl; i+=3){
      //Eckpunkte:
      if(lightningParry_data[i*7] < lightningParry_data[i*7 + 5]){lightningParry_data[i*7 + 4] = 1; lightningParry_data[i*7 + 5] = random(xMinMIN, xMinMAX);}
      if(lightningParry_data[i*7] > lightningParry_data[i*7 + 6]){lightningParry_data[i*7 + 4] = 0; lightningParry_data[i*7 + 6] = random(xMaxMIN, xMaxMAX);}

      if(lightningParry_data[i*7 + 4] == 1){
        lightningParry_data[i*7] += lightningParry_data[i*7 + 3];
      }else{
        lightningParry_data[i*7] -= lightningParry_data[i*7 + 3];
      }
    }
    lightningParry_default_displayStripes(lightningParry_Count);

    if(lightningParry_Count < 100){lightningParry_Count+=6;}
    else{lightningParryState = "on"; lightningParry_Count = 100;}
  }

  if(lightningParryState == "on"){
    for(int i = 0; i <= lightningParry_stripeAnzahl; i++){
      //Eckpunkte:
      if(lightningParry_data[i*7] < lightningParry_data[i*7 + 5]){lightningParry_data[i*7 + 4] = 1; lightningParry_data[i*7 + 5] = random(xMinMIN, xMinMAX); Serial.println(lightningParry_data[i*7 + 5]);}
      if(lightningParry_data[i*7] > lightningParry_data[i*7 + 6]){lightningParry_data[i*7 + 4] = 0; lightningParry_data[i*7 + 6] = random(xMaxMIN, xMaxMAX); Serial.println(lightningParry_data[i*7 + 6]);}

      if(lightningParry_data[i*7 + 4] == 1){
        lightningParry_data[i*7] += lightningParry_data[i*7 + 3];
      }else{
        lightningParry_data[i*7] -= lightningParry_data[i*7 + 3];
      }
    }
    lightningParry_default_displayStripes(100);
  }
}
void lightningParry_default_displayStripes(int xBrightness){
  for(int i = 0; i < 101 - 7 && lightningParry_data[i] != 0; i +=7){ //Länge
        bC_newStripe(lightningParry_data[i],
                     lightningParry_data[i + 1],
                     lightningParry_data[i + 2], 0, xBrightness);
  }
}
void lightningParry_default_fadeOut(int xMinMIN,int xMinMAX,  int xMaxMIN,int xMaxMAX){
    for(int z = 100; z > 1; z-=5){
      crystal(crystal_stripeSpeed,
              crystal_fadeBrightness1,
              crystal_fadeBrightness2,
              crystal_wholeFadeSteps);
    for(int i = 0; i <= lightningParry_stripeAnzahl; i++){
      //Eckpunkte:
      if(lightningParry_data[i*7] < lightningParry_data[i*7 + 5]){lightningParry_data[i*7 + 4] = 1; lightningParry_data[i*7 + 5] = random(xMinMIN, xMinMAX); Serial.println(lightningParry_data[i*7 + 5]);}
      if(lightningParry_data[i*7] > lightningParry_data[i*7 + 6]){lightningParry_data[i*7 + 4] = 0; lightningParry_data[i*7 + 6] = random(xMaxMIN, xMaxMAX); Serial.println(lightningParry_data[i*7 + 6]);}

      if(lightningParry_data[i*7 + 4] == 1){
        lightningParry_data[i*7] += lightningParry_data[i*7 + 3];
      }else{
        lightningParry_data[i*7] -= lightningParry_data[i*7 + 3];
      }
    }
    lightningParry_default_displayStripes(z);
    pixels.show();
    delay(DELAY_VAL);
    }
    lightningParryState = "new";
}

//---<tipDrag>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------tipDrag
//default:
void tipDrag_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){
  if(tipDrag_state == "new"){
    tipDrag_xLength = xLength;
    tipDrag_yLength = yLength;
    tipDrag_zLength = zLength;
    tipDrag_deault_counter = tipDrag_xLength+tipDrag_yLength+2*tipDrag_zLength + 3;//20;
    tipDrag_state = "start";
  }
  if(tipDrag_state == "start"){
    
    if(tipDrag_deault_counter >= 0){
      for(int i = 0; i < tipDrag_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,tipDrag_crossingColor_R,i,tipDrag_zLength),
                                 calculateColorVal(L_modifiers_color_G,tipDrag_crossingColor_G,i,tipDrag_zLength),
                                 calculateColorVal(L_modifiers_color_B,tipDrag_crossingColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                            -tipDrag_zLength
                                                                                                                            -tipDrag_yLength
                                                                                                                            -tipDrag_zLength+i+ tipDrag_deault_counter,1);
        pixels.fill(pixels.Color(calculateColorVal(tipDrag_crossingColor_R,L_modifiers_meltColor_R,i,tipDrag_zLength),
                                 calculateColorVal(tipDrag_crossingColor_G,L_modifiers_meltColor_G,i,tipDrag_zLength),
                                 calculateColorVal(tipDrag_crossingColor_B,L_modifiers_meltColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                                -tipDrag_zLength+i+ tipDrag_deault_counter,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(tipDrag_crossingColor_R,
                               tipDrag_crossingColor_G,
                               tipDrag_crossingColor_B),NUMPIXELS-tipDrag_xLength
                                                                 -tipDrag_zLength
                                                                 -tipDrag_yLength+ tipDrag_deault_counter,tipDrag_yLength);
      pixels.fill(pixels.Color(L_modifiers_meltColor_R,
                               L_modifiers_meltColor_G,
                               L_modifiers_meltColor_B),NUMPIXELS-tipDrag_xLength+ tipDrag_deault_counter,tipDrag_xLength);

      tipDrag_deault_counter-=xfadeIn_Out_Steps;
    }else{
      tipDrag_state = "on";
      //tipDrag_deault_counter=0;
    }
  }
  if(tipDrag_state == "on"){
    for(int i = 0; i < tipDrag_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,tipDrag_crossingColor_R,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_G,tipDrag_crossingColor_G,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_B,tipDrag_crossingColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                          -tipDrag_zLength
                                                                                                                          -tipDrag_yLength
                                                                                                                          -tipDrag_zLength+i,1);
      pixels.fill(pixels.Color(calculateColorVal(tipDrag_crossingColor_R,L_modifiers_meltColor_R,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_G,L_modifiers_meltColor_G,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_B,L_modifiers_meltColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                              -tipDrag_zLength+i,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(tipDrag_crossingColor_R,
                             tipDrag_crossingColor_G,
                             tipDrag_crossingColor_B),NUMPIXELS-tipDrag_xLength
                                                               -tipDrag_zLength
                                                               -tipDrag_yLength,tipDrag_yLength);
    pixels.fill(pixels.Color(L_modifiers_meltColor_R,
                             L_modifiers_meltColor_G,
                             L_modifiers_meltColor_B),NUMPIXELS-tipDrag_xLength,tipDrag_xLength);  
    //Funken:
    int Tobi = random(0,100);
    if(Tobi < 20){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,L_modifiers_meltColor_R,10,100),
                                           calculateColorVal(L_modifiers_color_G,L_modifiers_meltColor_G,10,100),
                                           calculateColorVal(L_modifiers_color_B,L_modifiers_meltColor_B,10,100)),random(0,NUMPIXELS-tipDrag_xLength),random(1,3));}else{
    if(Tobi > 50){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,L_modifiers_meltColor_R,100,100),
                                           calculateColorVal(L_modifiers_color_G,L_modifiers_meltColor_G,100,100),
                                           calculateColorVal(L_modifiers_color_B,L_modifiers_meltColor_B,100,100)),random(NUMPIXELS-tipDrag_xLength - 10,NUMPIXELS-tipDrag_xLength),random(1,3));}else{                                         
    pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,L_modifiers_meltColor_R,60,100),
                             calculateColorVal(L_modifiers_color_G,L_modifiers_meltColor_G,60,100),
                             calculateColorVal(L_modifiers_color_B,L_modifiers_meltColor_B,60,100)),random(NUMPIXELS-tipDrag_xLength - 40,NUMPIXELS-tipDrag_xLength),random(1,3));}}
  }
}
void tipDrag_default_stop(int xfadeIn_Out_Steps){
  for(int a = tipDrag_deault_counter; a <= tipDrag_xLength+tipDrag_yLength+2*tipDrag_zLength; a+=xfadeIn_Out_Steps){//0
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    for(int i = 0; i < tipDrag_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,tipDrag_crossingColor_R,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_G,tipDrag_crossingColor_G,i,tipDrag_zLength),
                               calculateColorVal(L_modifiers_color_B,tipDrag_crossingColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                          -tipDrag_zLength
                                                                                                                          -tipDrag_yLength
                                                                                                                          -tipDrag_zLength+i+ a,1);
      pixels.fill(pixels.Color(calculateColorVal(tipDrag_crossingColor_R,L_modifiers_meltColor_R,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_G,L_modifiers_meltColor_G,i,tipDrag_zLength),
                               calculateColorVal(tipDrag_crossingColor_B,L_modifiers_meltColor_B,i,tipDrag_zLength)),NUMPIXELS-tipDrag_xLength
                                                                                                                              -tipDrag_zLength+i+ a,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(tipDrag_crossingColor_R,
                             tipDrag_crossingColor_G,
                             tipDrag_crossingColor_B),NUMPIXELS-tipDrag_xLength
                                                               -tipDrag_zLength
                                                               -tipDrag_yLength+ a,tipDrag_yLength);
    pixels.fill(pixels.Color(L_modifiers_meltColor_R,
                             L_modifiers_meltColor_G,
                             L_modifiers_meltColor_B),NUMPIXELS-tipDrag_xLength+ a,tipDrag_xLength);
    pixels.show();
    delay(DELAY_VAL);
  }
    
}



//---<melt>--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------melt
//default:
void melt_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){
  int q = 3;
  if(melt_state == "new"){
    melt_xLength = xLength;
    melt_yLength = yLength;
    melt_zLength = zLength;
    melt_deault_counter = melt_xLength+melt_yLength+2*melt_zLength + 3;//20;
    melt_state = "start";
  }
  if(melt_state == "start"){
    int angle = round(Accelerometer.getAngle(1,1000));
    if(melt_deault_counter >= 0){
      int angle = round(Accelerometer.getAngle(1,1000));
      for(int i = 0; i < melt_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_G,melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_B,melt_crossingColor_R,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                      -melt_zLength
                                                                                                                      -melt_yLength
                                                                                                                      -melt_zLength+i+ melt_deault_counter+q,1);
        pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_G,calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_B,calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360),i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                                                                    -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(melt_crossingColor_R,
                               melt_crossingColor_G,
                               melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                              -melt_zLength
                                                              -melt_yLength+ melt_deault_counter+q,melt_yLength);
      pixels.fill(pixels.Color(calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),
                               calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),
                               calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360)),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength);

      melt_deault_counter-=xfadeIn_Out_Steps;
    }else{
      melt_state = "on";
      //melt_deault_counter=0;
    }
  }
  if(melt_state == "on"){
    int angle = round(Accelerometer.getAngle(1,1000));
    for(int i = 0; i < melt_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R, melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_G, melt_crossingColor_G,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_B, melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                       -melt_zLength
                                                                                                                       -melt_yLength
                                                                                                                       -melt_zLength+i+ melt_deault_counter+q,1);
        pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_G,calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_B,calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360),i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                                                                    -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(melt_crossingColor_R,
                               melt_crossingColor_G,
                               melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                              -melt_zLength
                                                              -melt_yLength+ melt_deault_counter+q,melt_yLength);
      pixels.fill(pixels.Color(calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),
                               calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),
                               calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360)),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength);
    //Funken:
    int Tobi = random(0,100);
    if(Tobi < 20){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,10,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,10,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,10,100)),random(0,NUMPIXELS-melt_xLength),random(1,3));}else{
    if(Tobi > 50){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,100,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,100,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,100,100)),random(NUMPIXELS-melt_xLength - 10,NUMPIXELS-melt_xLength),random(1,3));}else{                                         
    pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,60,100),
                             calculateColorVal(L_modifiers_color_G,melt_meltColor_G,60,100),
                             calculateColorVal(L_modifiers_color_B,melt_meltColor_B,60,100)),random(NUMPIXELS-melt_xLength - 40,NUMPIXELS-melt_xLength),random(1,3));}}
  //Serial.println(angle);
  }
}
void melt_default_stop(int xfadeIn_Out_Steps){
  for(int a = melt_deault_counter; a <= melt_xLength+melt_yLength+2*melt_zLength; a+=xfadeIn_Out_Steps){//0
  int angle = round(Accelerometer.getAngle(1,1000));
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    for(int i = 0; i < melt_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                    -melt_zLength
                                                                                                                    -melt_yLength
                                                                                                                    -melt_zLength+i+ a,1);
      pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),i,melt_zLength),
                               calculateColorVal(melt_crossingColor_G,calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),i,melt_zLength),
                               calculateColorVal(melt_crossingColor_B,calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360),i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                 -melt_zLength+i+ a,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(melt_crossingColor_R,
                             melt_crossingColor_G,
                             melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                            -melt_zLength
                                                            -melt_yLength+ a,melt_yLength);
    pixels.fill(pixels.Color(calculateColorVal(melt_meltColor_R,melt_meltColor_R2, angle, 360),
                             calculateColorVal(melt_meltColor_G,melt_meltColor_G2, angle, 360),
                             calculateColorVal(melt_meltColor_B,melt_meltColor_B2, angle, 360)),NUMPIXELS-melt_xLength+ a,melt_xLength);
    pixels.show();
    delay(DELAY_VAL);
  }
}
/* //ohne durch drehung farbe ändern:
void melt_default(int xLength, int yLength, int zLength, int xfadeIn_Out_Steps){
  int q = 3;
  if(melt_state == "new"){
    melt_xLength = xLength;
    melt_yLength = yLength;
    melt_zLength = zLength;
    melt_deault_counter = melt_xLength+melt_yLength+2*melt_zLength + 3;//20;
    melt_state = "start";
  }
  if(melt_state == "start"){
    
    if(melt_deault_counter >= 0){
      for(int i = 0; i < melt_zLength; i++){
        pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                                 calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                      -melt_zLength
                                                                                                                      -melt_yLength
                                                                                                                      -melt_zLength+i+ melt_deault_counter+q,1);
        pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,melt_meltColor_R,i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_G,melt_meltColor_G,i,melt_zLength),
                                 calculateColorVal(melt_crossingColor_B,melt_meltColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                   -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
      }
      pixels.fill(pixels.Color(melt_crossingColor_R,
                               melt_crossingColor_G,
                               melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                              -melt_zLength
                                                              -melt_yLength+ melt_deault_counter+q,melt_yLength);
      pixels.fill(pixels.Color(melt_meltColor_R,
                               melt_meltColor_G,
                               melt_meltColor_B),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength);

      melt_deault_counter-=xfadeIn_Out_Steps;
    }else{
      melt_state = "on";
      //melt_deault_counter=0;
    }
  }
  if(melt_state == "on"){
    for(int i = 0; i < melt_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                    -melt_zLength
                                                                                                                    -melt_yLength
                                                                                                                    -melt_zLength+i+ melt_deault_counter+q,1);
      pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,melt_meltColor_R,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_G,melt_meltColor_G,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_B,melt_meltColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                 -melt_zLength+i+ melt_deault_counter+q,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(melt_crossingColor_R,
                             melt_crossingColor_G,
                             melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                            -melt_zLength
                                                            -melt_yLength+ melt_deault_counter+q,melt_yLength);
    pixels.fill(pixels.Color(melt_meltColor_R,
                             melt_meltColor_G,
                             melt_meltColor_B),NUMPIXELS-melt_xLength+ melt_deault_counter+q,melt_xLength); 
    //Funken:
    int Tobi = random(0,100);
    if(Tobi < 20){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,10,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,10,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,10,100)),random(0,NUMPIXELS-melt_xLength),random(1,3));}else{
    if(Tobi > 50){pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,100,100),
                                           calculateColorVal(L_modifiers_color_G,melt_meltColor_G,100,100),
                                           calculateColorVal(L_modifiers_color_B,melt_meltColor_B,100,100)),random(NUMPIXELS-melt_xLength - 10,NUMPIXELS-melt_xLength),random(1,3));}else{                                         
    pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_meltColor_R,60,100),
                             calculateColorVal(L_modifiers_color_G,melt_meltColor_G,60,100),
                             calculateColorVal(L_modifiers_color_B,melt_meltColor_B,60,100)),random(NUMPIXELS-melt_xLength - 40,NUMPIXELS-melt_xLength),random(1,3));}}
  }
}
void melt_default_stop(int xfadeIn_Out_Steps){
  for(int a = melt_deault_counter; a <= melt_xLength+melt_yLength+2*melt_zLength; a+=xfadeIn_Out_Steps){//0
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    for(int i = 0; i < melt_zLength; i++){
      pixels.fill(pixels.Color(calculateColorVal(L_modifiers_color_R,melt_crossingColor_R,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_G,melt_crossingColor_G,i,melt_zLength),
                               calculateColorVal(L_modifiers_color_B,melt_crossingColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                    -melt_zLength
                                                                                                                    -melt_yLength
                                                                                                                    -melt_zLength+i+ a,1);
      pixels.fill(pixels.Color(calculateColorVal(melt_crossingColor_R,melt_meltColor_R,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_G,melt_meltColor_G,i,melt_zLength),
                               calculateColorVal(melt_crossingColor_B,melt_meltColor_B,i,melt_zLength)),NUMPIXELS-melt_xLength
                                                                                                                 -melt_zLength+i+ a,1);                                                                                                                 
    }
    pixels.fill(pixels.Color(melt_crossingColor_R,
                             melt_crossingColor_G,
                             melt_crossingColor_B),NUMPIXELS-melt_xLength
                                                            -melt_zLength
                                                            -melt_yLength+ a,melt_yLength);
    pixels.fill(pixels.Color(melt_meltColor_R,
                             melt_meltColor_G,
                             melt_meltColor_B),NUMPIXELS-melt_xLength+ a,melt_xLength);
    pixels.show();
    delay(DELAY_VAL);
  }
}
*/


//---<driveOut>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------driveOut
//default:
void driveOut_default(int Speed, int Steps){
  for(int i = 0; i <= NUMPIXELS; i+=Steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);
    pixels.fill(pixels.Color(0,0,0), i, NUMPIXELS-i);
    pixels.show();  
    delay(Speed);
  }
}
//slowGlow:
void driveOut_slowGlow(int startLength, int startSpeed, int rdmPixelCount, int Speed, int Steps){
  driveOut_Speed;
  for(int i = 0; i <= 255; i+=3){
    pixels.setBrightness(i);
    pixels.fill(pixels.Color(slowGlow_color_R,
                             slowGlow_color_G,
                             slowGlow_color_B),0,startLength);
    
    for(int a = 1; a <= rdmPixelCount; a++){
      slowGlow_rdm_pixels(startLength);
    }

    pixels.show();
    delay(startSpeed + round((double)i / (double)6));
  }
  
  for(int i = 255; i >= 50; i-=4){
    pixels.setBrightness(i);
    pixels.fill(pixels.Color(slowGlow_color_R,
                             slowGlow_color_G,
                             slowGlow_color_B),0,startLength);
    
    for(int a = 1; a <= rdmPixelCount; a++){
      slowGlow_rdm_pixels(startLength);
    }

    pixels.show();
    if(startSpeed > 2){delay(startSpeed - 2);}
  }

  for(int i = 0; i <= NUMPIXELS; i+=Steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);

    if(i < startLength){
    pixels.fill(pixels.Color(slowGlow_color_R,
                             slowGlow_color_G,
                             slowGlow_color_B),i,startLength);
    }
    pixels.fill(pixels.Color(0,0,0), i, NUMPIXELS-i);
    pixels.show();  
    delay(Speed);
  }

  
}
void slowGlow_rdm_pixels(int startLengthX){
  int a = random(5,50);
  int b = random(7,53);
  int c = random(9,55);

  int x = slowGlow_color_Rx;
  int y = slowGlow_color_Gx;
  int z = slowGlow_color_Bx;

  if(slowGlow_color_Rx - a > 0){x = slowGlow_color_Rx - a;}
  if(slowGlow_color_Gx - b > 0){y = slowGlow_color_Gx - b;}
  if(slowGlow_color_Bx - c > 0){z = slowGlow_color_Bx - c;}

  pixels.fill(pixels.Color(x,y,z),random(1,startLengthX),random(1,3));
}


//---<driveIn>----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------driveIn
//default:
void driveIn_default(int Speed, int Steps){
  for(int i = NUMPIXELS; i >= 0; i-=Steps){
    crystal(crystal_stripeSpeed,
            crystal_fadeBrightness1,
            crystal_fadeBrightness2,
            crystal_wholeFadeSteps);
    pixels.fill(pixels.Color(0,0,0), i, NUMPIXELS-i);
    pixels.show();  
    delay(Speed);
  }
}



//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-BUTTONS->>>=======================================================================================================================================================================================================BUTTONS
void btnSetup(){
  pinMode(BTN_MENU, INPUT_PULLUP);
  pinMode(BTN_ON, INPUT_PULLUP);
  pinMode(BTN_CH, INPUT_PULLUP);
  pinMode(BTN_BP, INPUT_PULLUP);
  pinMode(BTN_MELT, INPUT_PULLUP);
  
  attachInterrupt(digitalPinToInterrupt(BTN_MENU), interrupt_menu, FALLING); //LOW, HIGH, CHANGE, FALLING, RISING   => 2:06 https://www.youtube.com/watch?v=PcqiKy_rb24&list=PLP0aj0TqeBaeJaech7jdZMYyGYEsvIoKI&index=35
  attachInterrupt(digitalPinToInterrupt(BTN_ON), interrupt_on, FALLING);
  attachInterrupt(digitalPinToInterrupt(BTN_CH), interrupt_cH, FALLING);
  attachInterrupt(digitalPinToInterrupt(BTN_BP), interrupt_bP, FALLING);
  attachInterrupt(digitalPinToInterrupt(BTN_MELT), interrupt_melt, FALLING);
}

//---<INTERRUPTS>-------------------------------------------------------------------------------------------------------------
void interrupt_on(){
  if(bladeON == true && debounce_stopTimer() > 500){saberState = "driveIn"; debounce_startTimer();}else{
  if(bladeON == false && debounce_stopTimer() > 500){saberState = "driveOut"; debounce_startTimer();}}
}
void interrupt_cH(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){saberState = "clashHold";}
    startTimer();
  }
}
void interrupt_bP(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){interruptState = "blasterProtect";}
    startTimer();
  }
}
void interrupt_melt(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){interruptState = "melt";}
    startTimer();
  }
}
void interrupt_menu(){
  if(debounce_stopTimer() > debounceTime){
    debounce_startTimer();
    if(bladeON== true){interruptState = "menĂĽ";}
    startTimer();
  }
}

//---<timedBUTTONS>-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
void checkBTNmenu(){
  if(interruptState == "menĂĽ" || menu_btnState == "low"){
    if(stopTimer() > shortPress && digitalRead(BTN_MENU) == LOW){if(interruptState != "default"){Serial.println("M_HOLD"); menu_btnCounter = -1; saberState = "menĂĽBTN"; interruptState = "default"; menu_btnState = "low";}}else
    if(stopTimer() < shortPress && digitalRead(BTN_MENU) == HIGH && menu_btnState == "high"){Serial.println("M_SHORT"); interruptState = "default";}
    if(digitalRead(BTN_MENU) == HIGH && menu_btnState == "low"){
      switch(menu_btnCounter){
        case 1: Serial.println("höhö du hast ne 1... achievement get!");
                //WiFiMODE = true;
          break;
        case 2: Serial.println("du hast ne 2 :)");
          break;
        case 3: Serial.println("nur ne 3 :/");
          break;
        case 4: Serial.println("ne 4 :(");
          break;
        case 5: Serial.println("was war denn da los... eine 5 ?!");
          break;
        case 6: Serial.println("Das gibt ne 6 noich");
          break;
        case 7: Serial.println("7 :)");
          break;
        case 8: Serial.println("8 :)");
          break;
        case 9: Serial.println("9 :)");
          break;
        case 10: Serial.println("highground 10 :)");
          break;
      }
      debounce_startTimer();menu_btnState = "high"; interruptState = "default"; Serial.println("stopped Countin V2"); Serial.println(saberState);
    }
  }
}
void checkBTNmenu_counting(){//menu_btnCounter gibt an wie lange der menĂĽ knopf schon gedrĂĽckt wurde (-> Blinken beim alten Lichtshwert)
  if(menu_btnCounter == -1 && saberState == "menĂĽBTN" && digitalRead(BTN_MENU) == LOW){menu_btnCounter++; startTimer(); Serial.println("start Timer"); Serial.println(menu_btnCounter);}
  else if(saberState == "menĂĽBTN" && stopTimer() > menu_btnTime && digitalRead(BTN_MENU) == LOW){startTimer(); menu_btnCounter++; Serial.println(menu_btnCounter); pixels.fill(pixels.Color(255,210,150), 0, NUMPIXELS); pixels.show(); delay(100);}
  if(saberState == "menĂĽBTN" && digitalRead(BTN_MENU) == HIGH){}//saberState = "on";}
}
void checkBTNblasterProtect(){
  if(interruptState == "blasterProtect" || bP_btnState == "low"){
    if(stopTimer() > shortPress && digitalRead(BTN_BP) == LOW){if(interruptState != "default"){saberState = "lightningParry"; interruptState = "default"; bP_btnState = "low";}}else
    if(stopTimer() < shortPress && digitalRead(BTN_BP) == HIGH && bP_btnState == "high"){saberState = "blasterProtect"; interruptState = "default"; bP_displayState = "new";}
    if(digitalRead(BTN_BP) == HIGH && bP_btnState == "low"){debounce_startTimer();bP_btnState = "high"; saberState = "on"; interruptState = "default";}
  }
}
void checkBTNmelt(){
  if(interruptState == "melt" || melt_btnState == "low"){
    if(stopTimer() > shortPress && digitalRead(BTN_MELT) == LOW){if(interruptState != "default"){saberState = "tipDrag"; interruptState = "default"; melt_btnState = "low";}}else
    if(stopTimer() < shortPress && digitalRead(BTN_MELT) == HIGH && melt_btnState == "high"){if(saberState == "melt"){saberState = "on";}else{saberState = "melt";} interruptState = "default";}
    if(digitalRead(BTN_MELT) == HIGH && melt_btnState == "low"){debounce_startTimer(); melt_btnState = "high"; saberState = "on"; interruptState = "default";}
  }
}


//_______________________________________________________________________________________________________________________________________________________________________________________________________________________________
//===<<<-ESP32-Functions->>>========================================================================================================================================================================================ESP32-Functions
void lightsaberSetup(){
  pixels.setBrightness(stripeBrightness);

  //stripes:
    loadBufferRGB(L_modifiers_color_R,
                  L_modifiers_color_G,
                  L_modifiers_color_B,
                  L_modifiers_blinkColor_R2,
                  L_modifiers_blinkColor_G2,
                  L_modifiers_blinkColor_B2, false);
    crystalStripesSetup(crystalStripesSetup_x1,
                        crystalStripesSetup_x2,
                        crystalStripesSetup_y1,
                        crystalStripesSetup_y2,
                        crystalStripesSetup_z1,
                        crystalStripesSetup_z2,
                        crystalStripesSetup_additionalStripes,false);
  crystal_potiVal = round((float)((float)analogRead(crystalPOTI)/(float)4095)*(float)100);
  
  //bC:
    bC_loadBufferRGB(L_modifiers_color_R,
                     L_modifiers_color_G,
                     L_modifiers_color_B,  
                     L_modifiers_blinkColor_R,
                     L_modifiers_blinkColor_G,
                     L_modifiers_blinkColor_B, false);
}

void startTimer(){
  currentMillis = millis();
  previousMillis = currentMillis;
  //if(sD == true){Serial.println("Start Timer");}
}
unsigned long stopTimer(){
  currentMillis = millis();
  //if(sD == true){Serial.print("Stopped Timer at:");Serial.println(currentMillis - previousMillis);}
  return(currentMillis - previousMillis);
}

void debounce_startTimer(){
  debounce_currentMillis = millis();
  debounce_previousMillis = debounce_currentMillis;
  //if(sD == true){Serial.println("Start Timer");}
}
unsigned long debounce_stopTimer(){
  debounce_currentMillis = millis();
  //if(sD == true){Serial.print("Stopped Timer at:");Serial.println(currentMillis - previousMillis);}
  return(debounce_currentMillis - debounce_previousMillis);
}

The weird thing is that the html code i deleted now actually works when it is seperate:


#include <WiFi.h>
#include <AsyncTCP.h>
#include <ESPAsyncWebServer.h>

const char* ssid = "ESP32WiFi";
const char* password = "BastiGHG";
AsyncWebServer server(80);




//==HTML=======================================================================================================================================================================================================================================
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
      <!--=== topNav ===========================================================================================================================================================================================================================================-->
      <div class="topnav">
        <a class="active" href="/index.html">Home</a>
        <a href="/instructions.html">Instructions</a>
        <a href="/about.html">About</a>
        <a href="/edit.html">Edit</a>
      </div>
    </header>

    <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
    <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
      Top
    </button>

    <h1>vyzecSaber</h1>

    <script>
      //put post & get requests here!
    </script>
    <script>
      //to make the website work smoothly
      //=== scrollToTop_btn =====================================================================================================================================================================================
      var mybutton = document.getElementById("scrollToTop_btn");
      window.onscroll = function () {
        scrollFunction();
      };

      function scrollFunction() {
        if (
          document.body.scrollTop > 20 ||
          document.documentElement.scrollTop > 20
        ) {
          mybutton.style.display = "block";
        } else {
          mybutton.style.display = "none";
        }
      }
      function topFunction() {
        document.body.scrollTop = 0;
        document.documentElement.scrollTop = 0;
      }
    </script>
  </body>
</html>
)rawliteral";

const char instructions_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a class="active" href="/instructions.html">Instructions</a>
          <a href="/about.html">About</a>
          <a href="/edit.html">Edit</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>

    
    <section>
        <!--=== Links zu den einzelnen Profilen ====================================================================================================================================================================================================================================================================================-->
        <a
          href="https://www.youtube.com/watch?v=kYtGl1dX5qI&list=RDGMEMQ1dJ7wXfLlqCjwV0xfSNbAVMNFNQEPcgsmA&index=4"
        >
          <button class="splitBtn">Turorials on YouTube</button></a
        >
        <div class="dropdown">
          <button
            class="splitBtn"
            style="border-left: 3px solid #0d8bf2"
          ></button>
          <div class="dropdown-content">
            <a href="#">How to: getting started</a>
            <a href="#">How to: advanced saber settings</a>
            <a href="#">How to: repair & change parts</a>
            <a href="#">How to: write own code 4 it</a>
          </div>
        </div>
      </section>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";

const char about_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a href="/instructions.html"">Instructions</a>
          <a class="active" href="/about.html">About</a>
          <a href="/edit.html">Edit</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    
      <h1>The Saber & parts:</h1>
      <p>processor: ESP32-DevKit-C</p>
      <h2>sensors:</h2>
      <p>acceleration: MPU6050</p>
      <p>settings: 2x 10k potentiometer</p>
      <h2>sound:</h2>
      <p>speaker: MPU6050</p>
      <p>playing sound: DF-PlayerMini</p>
      <h2>hilt:</h2>
      <br>
      <h1>Time & coder:</h1>
      <p>project started: 24.7.2021</p>
      <p>project completed: -||-</p>
      <br>
      <h1>The Code:</h1>
      <p></p>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";

const char edit_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a href="/instructions.html">Instructions</a>
          <a href="/about.html">About</a>
          <a class="active" href="/edit.html">Edit</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>

    
      <section>
        <!--=== Links zu den einzelnen Profilen ====================================================================================================================================================================================================================================================================================-->
        <a
          href="e_profile1.html"
        >
          <button class="splitBtn">Profile 1</button></a
        >
        <div class="dropdown">
          <button
            class="splitBtn"
            style="border-left: 3px solid #0d8bf2"
          ></button>
          <div class="dropdown-content">
            <a href="e_profile1_sound.html">Sound</a>
            <a href="e_profile1_crystal.html">Crystal</a>
          </div>
        </div>
      </section>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";

const char e_profile1_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
            <a href="/index.html">Home</a>
            <a href="/edit.html">>>Edit</a>
            <a class = "active" href="/e_profile1.html">Profile 1</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    <h2>current Profile-Settings:</h2>
    <p>display variables here!</p>
    
    <section>
        <!--=== Links zu den einzelnen Einstellungs-Seiten ====================================================================================================================================================================================================================================================================================-->
        <a
          href="e_profile1_sound.html"
        >
          <button class="splitBtn">Sound-Settings</button></a
        >
    </section>

    <section>
        <!--=== Links zu den einzelnen Einstellungs-Seiten ====================================================================================================================================================================================================================================================================================-->
        <a
          href="e_profile1_crystal.html"
        >
          <button class="splitBtn">Crystal-Settings</button></a
        >
    </section>

  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>  
)rawliteral";
const char e_profile1_crystal_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
            <a href="/index.html">Home</a>
            <a href="/edit.html">>>Edit</a>
            <a href="/e_profile1.html">>>Profile 1</a>
            <a class = "active" href="/e_profile1_crystal.html">Crystal Settings</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    <h2>current Crystal-Settings:</h2>
    


  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";
const char e_profile1_sound_html[] PROGMEM = R"rawliteral(
<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Saber-Settings</title>
  </head>
  <style>
    /**/
    /*=== topNav ===========================================================================================================================================================================================================================================-->*/
    body {
      margin: 0;
      font-family: Arial, Helvetica, sans-serif;
    }
    .topnav {
      overflow: hidden;
      background-color: #333;
    }
    .topnav a {
      float: left;
      color: #f2f2f2;
      text-align: center;
      padding: 14px 16px;
      text-decoration: none;
      font-size: 17px;
    }
    .topnav a:hover {
      background-color: #ddd;
      color: black;
    }
    .topnav a.active {
      background-color: dodgerblue;
      color: white;
    }

    /*=== scrollToTop_btn ========================================================================================================================================================================================================================================================================================*/
    body {
      font-family: Arial, Helvetica, sans-serif;
      font-size: 20px;
    }
    #scrollToTop_btn {
      display: none;
      position: fixed;
      bottom: 20px;
      right: 30px;
      z-index: 99;
      font-size: 18px;

      border-color: rgb(30, 165, 255);
      border-width: 2px;
      border-radius: 17px;

      outline: none;
      background-color: rgba(30, 143, 255, 0.301);
      color: rgb(0, 0, 0);
      cursor: pointer;
      padding: 15px;
    }
    #scrollToTop_btn:hover {
      background-color: dodgerblue;
    }

    /*=== splitBtn ========================================================================================================================================================================================================================================================================================*/
    .splitBtn {
      background-color: #2196f3;
      color: white;
      padding: 16px;
      font-size: 16px;
      border: none;
      outline: none;
      height: 52px;
    }
    .dropdown {
      position: absolute;
      display: inline-block;
    }
    .dropdown-content {
      display: none;
      position: absolute;
      background-color: #f1f1f1;
      min-width: 160px;
      z-index: 1;
    }
    .dropdown-content a {
      color: black;
      padding: 12px 16px;
      text-decoration: none;
      display: block;
    }
    .dropdown-content a:hover {
      background-color: #ddd;
    }
    .dropdown:hover .dropdown-content {
      display: block;
    }
    .splitBtn:hover,
    .dropdown:hover .splitBtn {
      background-color: #0b7dda;
    }
  </style>
  <body>
    <header>
        <!--=== topNav ===========================================================================================================================================================================================================================================-->
        <div class="topnav">
          <a href="/index.html">Home</a>
          <a href="/edit.html">>>Edit</a>
          <a href="/e_profile1.html">>>Profile 1</a>
          <a class = "active" href="/e_profile1_sound.html">Sound Settings</a>
        </div>
      </header>
  
      <!--=== scrollToTop_btn ====================================================================================================================================================================================================================================================================================-->
      <button onclick="topFunction()" id="scrollToTop_btn" title="Go to top">
        Top
      </button>
    <h2>current Sound-Settings:</h2>
    


  <script></script> 
  <script>
    //to make the website work smoothly
    //=== scrollToTop_btn =====================================================================================================================================================================================
    var mybutton = document.getElementById("scrollToTop_btn");
    window.onscroll = function () {
      scrollFunction();
    };

    function scrollFunction() {
      if (
        document.body.scrollTop > 20 ||
        document.documentElement.scrollTop > 20
      ) {
        mybutton.style.display = "block";
      } else {
        mybutton.style.display = "none";
      }
    }
    function topFunction() {
      document.body.scrollTop = 0;
      document.documentElement.scrollTop = 0;
    }
  </script> 
  </body>
</html>
)rawliteral";
//==/HTML=======================================================================================================================================================================================================================================




//=="processor"=======================================================================================================================================================================================================================================

//==/"processor"=======================================================================================================================================================================================================================================



void setup(){
  
  Serial.begin(115200);
  WiFi.softAP(ssid, password);
  IPAddress IP = WiFi.softAPIP();
  Serial.print("AP IP address: ");
  Serial.println(IP);

  server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html);
  });
  server.on("/index.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", index_html);
  });
  server.on("/instructions.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", instructions_html);
  });
  server.on("/about.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", about_html);
  });

  server.on("/edit.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", edit_html);
  });
  server.on("/e_profile1.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_html);
  });
  server.on("/e_profile1_crystal.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_crystal_html);
  });
  server.on("/e_profile1_sound.html", HTTP_GET, [](AsyncWebServerRequest *request){
    request->send_P(200, "text/html", e_profile1_sound_html);
  });






  server.begin();
}
  
void loop() {
 
}

Where do I find the "A_acceleration.h" file? I tried Google and could find no reference to it anywhere.

oh i wrote that myself, I'll post the h and the cpp file as well
H file:

#ifndef A_ACCELERATION_H
#define A_ACCELERATION_H


#include "Arduino.h"


class A_acceleration{
  public:
      A_acceleration(); //constructor
      void Setup();
      int temperaturLesen();
      double beschleunigungLesen(double Ruhelage); //liest beschleunigung //0,05 als Ruhelage empfohlen
      double detectClash();         //berechnet delta wert der beschleunigung -> größer als ~0.3 = Clash
      double getAngle(int durchschnitssZahl, int deltaStop);     //gibt den winkel um die y-Achse zurĂĽck
  private:
      const int MPU_addr=0x68;  // I2C address of the MPU-6050
      int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
      double a,b,c;
      double acceleration;
      double x,y;

      double angleA = 0;
      double angleB = 0;


      //Test
      double angleFinal;
      double angle;
      //double maximum = 0;//debug
      //double minimum = 0;//debug
      int AcZ_old;
      int count;
};

/*
 *AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)    
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
 */

#endif

cpp:

#include "A_acceleration.h"
#include "Arduino.h"

#include <Wire.h>
#include "MPU6050.h"


A_acceleration::A_acceleration(){ //constructor
}

void A_acceleration::Setup(){
  Wire.begin();
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
}


double A_acceleration::beschleunigungLesen(double Ruhelage){
  
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x43);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,6,true);

  GyX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  GyY=Wire.read()<<8|Wire.read();  // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  GyZ=Wire.read()<<8|Wire.read();  // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)

  a = (double)GyX / (double)32767;
  //b = (double)GyY / (double)32767; // für swing bewegungen erstmal vernachlässigbar
  c = (double)GyZ / (double)32767;

  a = abs(a);
  c = abs(c);
  
  acceleration = a + c;
  acceleration = (double)acceleration / (double)1.6; //Kalibrierung zwischen den beiden Eingabewerten
  acceleration -= Ruhelage;  //0.05 hier als Ruhelage definiert

  if(acceleration > 1){acceleration = 1;}
  if(acceleration < 0){acceleration = 0;}
  
 
  return(acceleration);
}


double A_acceleration::detectClash(){
  double ausgabe;

  y = acceleration;

  if(y>x){ausgabe = y-x;}
  else{ausgabe = x-y;}
  
  x = y;

  
  return(ausgabe);
}


double A_acceleration::getAngle(int durchschnitssZahl, int deltaStop){  //20, 80
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x3F);
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,2,true);

  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)  //Z ist Y achse bei gyroskop

  if(count <= durchschnitssZahl){ //die Zahl gibt an wie viel Vergleichswerte genutzt werden sollen um den Durchschnitt zu erzeugen
    if(abs(AcZ_old - AcZ) < deltaStop){ //die Zahl gibt an ab wann keine Drehung, sondern ein "Schlag" vorliegt -> um zu hohe und plötzliche Werte zu vermeiden 
      angle = (double)(angle + AcZ) / (double)2;
      count++;
    }else{}
  }else{angleFinal = round((double)((double)(angle + 18800)/(double)33860)*(double)360); count = 0; angle = 0;}

  AcZ_old = AcZ;

  abs(angleFinal);
  if(angleFinal > 360){
    return(360);
  }
  return(angleFinal);
}









int A_acceleration::temperaturLesen(){
  Wire.beginTransmission(MPU_addr);
  Wire.write(0x41);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU_addr,2,true);  // request a total of 14 registers

  Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)

  return(Tmp);
}

sorry that you searched after it :sweat_smile:

I would bet the way you are including the HTML is your problem. I'd bet the pre-processor is kicking out of the rawliteral prematurely. In any case, this is a truly horrible way to handle HTML when using ESP32. Just setup a FLASH filesystem, and put the HTML, CSS, etc files themselves directly in there, and use server.on to send them to the client. FAR simple, cleaner, easier to update, and more robust.

2 Likes

Yeah it seems like that that is the problem... As i "learned" how to create webservers with esp32 i haven't found a better way than i am using now. I've heard about the FLASH filesystem but to this time i couldn't find any good tutorial that shows how that system works. If you would know a good tutorial please tell me :grin: (otherwise this will take a while to get ready & test it :sweat_smile:)

But anyways: I guess this would solve the problem as you said.

Thank you all very much for your time & help! :sparkling_heart: