Bluetoothsteuerung arbeitet nach neustart falsch, dann korrekt

Hallo zuammen,
ich habe ein seltsames Problem.
Meine Bluetoothsteuerung macht nach dem einschalten seltsame Dinge.

Wenn ich eine "3" über ein Terminalprogramm schicke dann wird erst die "else" schleife durchlaufen. Allerding nur nach einem Neustart. Danach läuft alles wie es soll und ich habe keine Probleme mehr.

Obwohl der Aufbau bei "2" ähnlich ist, hab ich hier keine Probleme.

2, 4, 6 keine Probleme
1, 3, 5 Problem

Aber wie gesagt nur nach einem Neustart und dann einmalig.
Wenn ich die fälle einmal durchgegangen bin läuft das Programm wie es soll.

Hardware:
Ardunio mini 5V variante ohne USB
bluetooth hc-05

else if (blueToothVal == '2') //wenn das Bluetooth Modul eine „2“ empfängt..
  {
    if (State_PIN_2_Ist == 0)
    { while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_2 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_2, PWMPIN_2);
        delay (50);
      }
      State_PIN_2_Ist = 1;
      Serial.println("Kreis 2 eingeschaltet");
    }

    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_2 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_2, PWMPIN_2);
        delay (50);
      }
      State_PIN_2_Ist = 0;
      Serial.println("Kreis 2 ausgeschaltet");
    }
  }

  else if (blueToothVal == '3') //wenn das Bluetooth Modul eine „3“ empfängt..
  {
    if (State_PIN_3_Ist == 0)
    { while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_3 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_3, PWMPIN_3);
        delay (50);
      }
      State_PIN_3_Ist = 1;
      Serial.println("Kreis 3 eingeschaltet");
      return;
    }
    if (State_PIN_3_Ist == 1)
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_3 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_3, PWMPIN_3);
        delay (50);
      }
      State_PIN_3_Ist = 0;
      Serial.println("Kreis 3 ausgeschaltet");
    }
  }

hier der ganze code:

char blueToothVal; //Werte sollen per Bluetooth gesendet werden
char lastValue;   //speichert den letzten Status der LED (on/off)

int USBPIN = 10;    // LED digital PIN 10

int PIN_1 = 2;
int PIN_2 = 3;
int PIN_3 = 5;
int PIN_4 = 6;
int PIN_5 = 9;
int PIN_6 = 11;
int PIN_Innenraumbeleuchtung = 12;

int State_PIN_2_Ist = 0;
int State_PIN_3_Ist = 0;
int State_PIN_4_Ist = 0;
int State_PIN_5_Ist = 0;
int State_PIN_6_Ist = 0;
int State_InnenraumbeleuchtungIst = 0;

int State_InnenraumbeleuchtungSoll_KFZ = 0;
int State_InnenraumbeleuchtungSoll_Nutzer = 0;
int State_PIN_1_Soll = 0;

int PWMUSB = 0;
int PWMPIN_2 = 0;
int PWMPIN_3 = 0;
int PWMPIN_4 = 0;
int PWMPIN_5 = 0;
int PWMPIN_6 = 0;

int LUX_start = 60; //Standart Helligkeit [%]
int LUX_SPRUNG = 1;
int LUX = 0;



void setup() {
  Serial.begin(9600);  //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
  pinMode(PIN_Innenraumbeleuchtung, INPUT);   // Setzt den Digitalpin 7 als Intputpin
  pinMode(PIN_1, OUTPUT);
  //pinMode(LED_BUILTIN, OUTPUT);
  State_PIN_2_Ist = 0;
  State_PIN_3_Ist = 0;
  State_PIN_4_Ist = 0;
  State_PIN_5_Ist = 0;
  State_PIN_6_Ist = 0;
}



void loop() {

  if (Serial.available()) //wenn Daten empfangen werden...
  {
    blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
  }

  State_InnenraumbeleuchtungSoll_KFZ = digitalRead(PIN_Innenraumbeleuchtung);  // Liest den Inputpin
  //Serial.println(State_Innenraumbeleuchtung);

  if (State_InnenraumbeleuchtungSoll_KFZ == 1 && State_InnenraumbeleuchtungIst == 0 && State_InnenraumbeleuchtungSoll_Nutzer == 1)
  { while (LUX < LUX_start) {
      LUX = LUX + LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 1;
  }

  if (State_InnenraumbeleuchtungSoll_KFZ == 0 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 0)
  { while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);;
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 0;
  }

  if (State_InnenraumbeleuchtungSoll_KFZ == 0 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 1)
  { while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);;
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 0;
  }

  if (State_InnenraumbeleuchtungSoll_KFZ == 1 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 0)
  { while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);;
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 0;
  }

  if (blueToothVal == '1') //wenn das Bluetooth Modul eine „1“ empfängt..
  {
    if (State_PIN_1_Soll == 0)
    { State_PIN_1_Soll = 1;
      delay (1000);
      Serial.println("D+ aktiv");
    }
    else {
      State_PIN_1_Soll = 0;
      delay (1000);
      Serial.println("D+ inaktiv");
    }
  }

  else if (blueToothVal == '2') //wenn das Bluetooth Modul eine „2“ empfängt..
  {
    if (State_PIN_2_Ist == 0)
    { while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_2 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_2, PWMPIN_2);
        delay (50);
      }
      State_PIN_2_Ist = 1;
      Serial.println("Kreis 2 eingeschaltet");
    }

    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_2 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_2, PWMPIN_2);
        delay (50);
      }
      State_PIN_2_Ist = 0;
      Serial.println("Kreis 2 ausgeschaltet");
    }
  }

  else if (blueToothVal == '3') //wenn das Bluetooth Modul eine „3“ empfängt..
  {
    if (State_PIN_3_Ist == 0)
    { while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_3 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_3, PWMPIN_3);
        delay (50);
      }
      State_PIN_3_Ist = 1;
      Serial.println("Kreis 3 eingeschaltet");
      return;
    }
    if (State_PIN_3_Ist == 1)
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_3 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_3, PWMPIN_3);
        delay (50);
      }
      State_PIN_3_Ist = 0;
      Serial.println("Kreis 3 ausgeschaltet");
    }
  }

  else if (blueToothVal == '4') //wenn das Bluetooth Modul eine „4“ empfängt..
  {
    if (State_PIN_4_Ist == 0) {
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_4 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_4, PWMPIN_4);
        delay (50);
      }
      State_PIN_4_Ist = 1;
      Serial.println("Kreis 4 eingeschaltet");
    }
    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_4 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_4, PWMPIN_4);
        delay (50);
      }
      State_PIN_4_Ist = 0;
      Serial.println("Kreis 4 ausgeschaltet");
    }
  }

  else if (blueToothVal == '5') //wenn das Bluetooth Modul eine „5“ empfängt..
  {
    if (State_PIN_5_Ist == 0) {
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_5 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_5, PWMPIN_5);
        delay (50);
      }
      State_PIN_5_Ist = 1;
      Serial.println("Kreis 5 eingeschaltet");
    }
    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_5 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_5, PWMPIN_5);
        delay (50);
      }
      State_PIN_5_Ist = 0;
      Serial.println("Kreis 5 ausgeschaltet");
    }
  }

  else if (blueToothVal == '6') //wenn das Bluetooth Modul eine „6“ empfängt..
  {
    if (State_PIN_6_Ist == 0) {
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_6 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_6, PWMPIN_6);
        delay (50);
      }
      State_PIN_6_Ist = 1;
      Serial.println("Kreis 6 eingeschaltet");
    }
    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_6 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_6, PWMPIN_6);
        delay (50);
      }
      State_PIN_6_Ist = 0;
      Serial.println("Kreis 6 ausgeschaltet");
    }
  }


  else if (blueToothVal == '7') //wenn das Bluetooth Modul eine „7“ empfängt..
  {
    /*  while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMUSB = map(LUX, 0, 100, 0, 255);
        analogWrite(USBPIN, PWMUSB);
        delay (50);
    */
    if (State_InnenraumbeleuchtungSoll_Nutzer == 0)
    {
      State_InnenraumbeleuchtungSoll_Nutzer = 1;
      Serial.println("Innenraumbeleuchtung aktiv");
      delay (1000);
    }
    else {
      State_InnenraumbeleuchtungSoll_Nutzer = 0;
      Serial.println("Innenraumbeleuchtung inaktiv");
      delay (1000);
    }
  }



  else if (blueToothVal == '9') //wenn das Bluetooth Modul eine „9“ empfängt..
  {
    Serial.println(" 0 - Gesamte Beleuchtung aus");
    Serial.println(" 1 - D+ an Ladebuster High");
    Serial.println(" 2 - Pin 2 Beleuchtung an/aus");
    Serial.println(" 3 - Pin 3 Beleuchtung an/aus");
    Serial.println(" 4 - Pin 4 Beleuchtung an/aus");
    Serial.println(" 5 - Pin 5 Beleuchtung an/aus");
    Serial.println(" 6 - Pin 6 Beleuchtung an/aus");
    Serial.println(" 7 - USB an");
  }

  else if (blueToothVal == '0') //wenn das Bluetooth Modul „0“ empfängt...
  {
    while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      //PWMUSB = map(LUX, 0, 100, 0, 255);
      PWMPIN_2 = map(LUX, 0, 100, 0, 255);
      PWMPIN_3 = map(LUX, 0, 100, 0, 255);
      PWMPIN_4 = map(LUX, 0, 100, 0, 255);
      PWMPIN_5 = map(LUX, 0, 100, 0, 255);
      PWMPIN_6 = map(LUX, 0, 100, 0, 255);

      //analogWrite(USBPIN, PWMUSB);
      analogWrite(PIN_2, PWMPIN_2);
      analogWrite(PIN_3, PWMPIN_3);
      analogWrite(PIN_4, PWMPIN_4);
      analogWrite(PIN_5, PWMPIN_5);
      analogWrite(PIN_6, PWMPIN_6);

      delay (50);
    }
    //State_InnenraumbeleuchtungIst = 0;
    State_PIN_2_Ist = 0;
    State_PIN_3_Ist = 0;
    State_PIN_4_Ist = 0;
    State_PIN_5_Ist = 0;
    State_PIN_6_Ist = 0;
    /* if (lastValue != '0') //wenn der letzte empfangene Wert keine „0“ war...
       Serial.println(F("Gesamte Beleuchtung ausgeschaltet")); //..soll auf dem seriellen Monitor „LED is off“ angezeigt werden
      lastValue = blueToothVal;
    */
  }

  int spannungV = analogRead(A3);
  int spannung = map(spannungV, 0, 1023, 0 , 17732);
  float spannungA;
  float spannungB;
  spannungA = spannung;
  spannungB = (spannungA / 1000);
  /*
    Serial.print("Spannung: ");
    Serial.println(spannungB); //gemessene Spannung
    Serial.print("State_PIN_1_Soll: ");
    Serial.println(State_PIN_1_Soll);
    delay (1000);
  */
  if (spannungB >= 11 && State_PIN_1_Soll == 1)
  {
    digitalWrite(PIN_1, HIGH);
  }
  else {
    digitalWrite(PIN_1, LOW);
  }
}

So etwas nennt sich Spaghetticode.
Den will niemand durchstudieren um Dir zu helfen.

Lerne wie man Arrays benutzt.
Grüße Uwe

1 Like
float spannungA;
  float spannungB;
  spannungA = spannung;
  spannungB = (spannungA / 1000);

Das funktioniert auch nicht so wie Du es erwartest.

Also das mit dem Code hat Uwe schon geklärt.
Das mit dem funktionieren hat Uwe auch schon...

Und jetzt komme ich:

21:58:31.649 -> Eingabe: 1 erkannt!
21:58:31.649 -> D+ aktiv
21:58:36.786 -> Eingabe: 2 erkannt!
21:58:39.802 -> Kreis 2 eingeschaltet
21:58:42.754 -> Eingabe: 3 erkannt!
21:58:42.754 -> Kreis 3 eingeschaltet
21:58:45.904 -> Eingabe: 4 erkannt!
21:58:45.904 -> Kreis 4 eingeschaltet
21:58:48.122 -> Eingabe: 5 erkannt!
21:58:48.122 -> Kreis 5 eingeschaltet
21:58:50.178 -> Eingabe: 6 erkannt!
21:58:50.178 -> Kreis 6 eingeschaltet
21:58:52.299 -> Eingabe: 7 erkannt!
21:58:52.299 -> Innenraumbeleuchtung aktiv
21:58:55.812 -> Eingabe: 1 erkannt!
21:58:55.812 -> D+ inaktiv
21:59:03.904 -> Eingabe: 2 erkannt!
21:59:06.888 -> Kreis 2 ausgeschaltet
21:59:16.502 -> Eingabe: 3 erkannt!
21:59:16.502 -> Kreis 3 ausgeschaltet
21:59:17.629 -> Eingabe: 4 erkannt!
21:59:17.629 -> Kreis 4 ausgeschaltet
21:59:18.757 -> Eingabe: 5 erkannt!
21:59:18.757 -> Kreis 5 ausgeschaltet
21:59:19.951 -> Eingabe: 6 erkannt!
21:59:19.951 -> Kreis 6 ausgeschaltet
21:59:20.979 -> Eingabe: 7 erkannt!
21:59:20.979 -> Innenraumbeleuchtung inaktiv

Hier gehen über 3(!) in Worten DREI Sekunden verloren!

21:58:36.786 -> Eingabe: 2 erkannt!
21:58:39.802 -> Kreis 2 eingeschaltet

Und das nachdem ich Deinen Code von delay() befreit habe.
Und dem ganzen Rest.
Das geht auch, wenn jeweils eine andere Eingabe genutz wird:

22:05:02.735 -> Eingabe: 1 erkannt!
22:05:02.735 -> D+ aktiv
22:05:05.982 -> Eingabe: 6 erkannt!
22:05:08.966 -> Kreis 6 eingeschaltet
char blueToothVal; //Werte sollen per Bluetooth gesendet werden
char lastValue;   //speichert den letzten Status der LED (on/off)

int USBPIN = 10;    // LED digital PIN 10

int PIN_1 = 2;
int PIN_2 = 3;
int PIN_3 = 5;
int PIN_4 = 6;
int PIN_5 = 9;
int PIN_6 = 11;
int PIN_Innenraumbeleuchtung = 12;

int State_PIN_2_Ist = 0;
int State_PIN_3_Ist = 0;
int State_PIN_4_Ist = 0;
int State_PIN_5_Ist = 0;
int State_PIN_6_Ist = 0;
int State_InnenraumbeleuchtungIst = 0;

int State_InnenraumbeleuchtungSoll_KFZ = 0;
int State_InnenraumbeleuchtungSoll_Nutzer = 0;
int State_PIN_1_Soll = 0;

int PWMUSB = 0;
int PWMPIN_2 = 0;
int PWMPIN_3 = 0;
int PWMPIN_4 = 0;
int PWMPIN_5 = 0;
int PWMPIN_6 = 0;

int LUX_start = 60; //Standart Helligkeit [%]
int LUX_SPRUNG = 1;
int LUX = 0;



void setup() {
  Serial.begin(115200  );  //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
  pinMode(PIN_Innenraumbeleuchtung, INPUT);   // Setzt den Digitalpin 7 als Intputpin
  pinMode(PIN_1, OUTPUT);
  //pinMode(LED_BUILTIN, OUTPUT);
  State_PIN_2_Ist = 0;
  State_PIN_3_Ist = 0;
  State_PIN_4_Ist = 0;
  State_PIN_5_Ist = 0;
  State_PIN_6_Ist = 0;
}



void loop() {

  if (Serial.available()) //wenn Daten empfangen werden...
  {
    blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
    if (isPrintable(blueToothVal))
    {
    Serial.print(F("Eingabe: "));
    Serial.print(blueToothVal);
    Serial.println(F(" erkannt!"));
    }
  }


  if (blueToothVal == '1') //wenn das Bluetooth Modul eine „1“ empfängt..
  {
    if (State_PIN_1_Soll == 0)
    { State_PIN_1_Soll = 1;

      Serial.println("D+ aktiv");
    }
    else {
      State_PIN_1_Soll = 0;

      Serial.println("D+ inaktiv");
    }
  }

  else if (blueToothVal == '2') //wenn das Bluetooth Modul eine „2“ empfängt..
  {
    if (State_PIN_2_Ist == 0)
    { while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_2 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_2, PWMPIN_2);
        delay (50);
      }
      State_PIN_2_Ist = 1;
      Serial.println("Kreis 2 eingeschaltet");
    }

    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_2 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_2, PWMPIN_2);
        delay (50);
      }
      State_PIN_2_Ist = 0;
      Serial.println("Kreis 2 ausgeschaltet");
    }
  }

  else if (blueToothVal == '3') //wenn das Bluetooth Modul eine „3“ empfängt..
  {
    if (State_PIN_3_Ist == 0)
    { while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_3 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_3, PWMPIN_3);
        delay (50);
      }
      State_PIN_3_Ist = 1;
      Serial.println("Kreis 3 eingeschaltet");
      return;
    }
    if (State_PIN_3_Ist == 1)
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_3 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_3, PWMPIN_3);
        delay (50);
      }
      State_PIN_3_Ist = 0;
      Serial.println("Kreis 3 ausgeschaltet");
    }
  }

  else if (blueToothVal == '4') //wenn das Bluetooth Modul eine „4“ empfängt..
  {
    if (State_PIN_4_Ist == 0) {
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_4 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_4, PWMPIN_4);
        delay (50);
      }
      State_PIN_4_Ist = 1;
      Serial.println("Kreis 4 eingeschaltet");
    }
    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_4 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_4, PWMPIN_4);
        delay (50);
      }
      State_PIN_4_Ist = 0;
      Serial.println("Kreis 4 ausgeschaltet");
    }
  }

  else if (blueToothVal == '5') //wenn das Bluetooth Modul eine „5“ empfängt..
  {
    if (State_PIN_5_Ist == 0) {
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_5 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_5, PWMPIN_5);
        delay (50);
      }
      State_PIN_5_Ist = 1;
      Serial.println("Kreis 5 eingeschaltet");
    }
    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_5 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_5, PWMPIN_5);
        delay (50);
      }
      State_PIN_5_Ist = 0;
      Serial.println("Kreis 5 ausgeschaltet");
    }
  }

  else if (blueToothVal == '6') //wenn das Bluetooth Modul eine „6“ empfängt..
  {
    if (State_PIN_6_Ist == 0) {
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN_6 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_6, PWMPIN_6);
        delay (50);
      }
      State_PIN_6_Ist = 1;
      Serial.println("Kreis 6 eingeschaltet");
    }
    else
    { while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN_6 = map(LUX, 0, 100, 0, 255);
        analogWrite(PIN_6, PWMPIN_6);
        delay (50);
      }
      State_PIN_6_Ist = 0;
      Serial.println("Kreis 6 ausgeschaltet");
    }
  }


  else if (blueToothVal == '7') //wenn das Bluetooth Modul eine „7“ empfängt..
  {
    /*  while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMUSB = map(LUX, 0, 100, 0, 255);
        analogWrite(USBPIN, PWMUSB);
        delay (50);
    */
    if (State_InnenraumbeleuchtungSoll_Nutzer == 0)
    {
      State_InnenraumbeleuchtungSoll_Nutzer = 1;
      Serial.println("Innenraumbeleuchtung aktiv");

    }
    else {
      State_InnenraumbeleuchtungSoll_Nutzer = 0;
      Serial.println("Innenraumbeleuchtung inaktiv");

    }
  }



  else if (blueToothVal == '9') //wenn das Bluetooth Modul eine „9“ empfängt..
  {
    Serial.println(" 0 - Gesamte Beleuchtung aus");
    Serial.println(" 1 - D+ an Ladebuster High");
    Serial.println(" 2 - Pin 2 Beleuchtung an/aus");
    Serial.println(" 3 - Pin 3 Beleuchtung an/aus");
    Serial.println(" 4 - Pin 4 Beleuchtung an/aus");
    Serial.println(" 5 - Pin 5 Beleuchtung an/aus");
    Serial.println(" 6 - Pin 6 Beleuchtung an/aus");
    Serial.println(" 7 - USB an");
  }

  else if (blueToothVal == '0') //wenn das Bluetooth Modul „0“ empfängt...
  {
    while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      //PWMUSB = map(LUX, 0, 100, 0, 255);
      PWMPIN_2 = map(LUX, 0, 100, 0, 255);
      PWMPIN_3 = map(LUX, 0, 100, 0, 255);
      PWMPIN_4 = map(LUX, 0, 100, 0, 255);
      PWMPIN_5 = map(LUX, 0, 100, 0, 255);
      PWMPIN_6 = map(LUX, 0, 100, 0, 255);

      //analogWrite(USBPIN, PWMUSB);
      analogWrite(PIN_2, PWMPIN_2);
      analogWrite(PIN_3, PWMPIN_3);
      analogWrite(PIN_4, PWMPIN_4);
      analogWrite(PIN_5, PWMPIN_5);
      analogWrite(PIN_6, PWMPIN_6);

      delay (50);
    }
    //State_InnenraumbeleuchtungIst = 0;
    State_PIN_2_Ist = 0;
    State_PIN_3_Ist = 0;
    State_PIN_4_Ist = 0;
    State_PIN_5_Ist = 0;
    State_PIN_6_Ist = 0;
    /* if (lastValue != '0') //wenn der letzte empfangene Wert keine „0“ war...
       Serial.println(F("Gesamte Beleuchtung ausgeschaltet")); //..soll auf dem seriellen Monitor „LED is off“ angezeigt werden
      lastValue = blueToothVal;
    */
  }

  int spannungV = analogRead(A3);
  int spannung = map(spannungV, 0, 1023, 0 , 17732);
  float spannungA;
  float spannungB;
  spannungA = spannung;
  spannungB = (spannungA / 1000);
  /*
    Serial.print("Spannung: ");
    Serial.println(spannungB); //gemessene Spannung
    Serial.print("State_PIN_1_Soll: ");
    Serial.println(State_PIN_1_Soll);
    delay (1000);
  */
  if (spannungB >= 11 && State_PIN_1_Soll == 1)
  {
    digitalWrite(PIN_1, HIGH);
  }
  else {
    digitalWrite(PIN_1, LOW);
  }
}

Hallo Uwe,
vielen Dank für den Tipp, ich schau mir "Arrays" mal an :slight_smile:

@my_xy_projekt Die Ausführung des Code's ist nicht zeitkritisch, weil "nur" Licht gesteuert wird. Das Licht soll beim Ein und Ausschalten langsam gedimmt werden, hast du eine Idee wie ich das anders umsetzten könnte?

Grüße bastel_heini

Ok, wenn es "NUR" das stellen eines Lichtes sein soll, könnte man noch drüberweg sehen.
Aber Du blockierst Dir mit while in der gesamten dimm-Zeit den Code.
Sprich Du kannst nichts anderes ausführen.

Schau mal in das Beispiel Blink without delay in der Ide.
Dann:

Und wie Uwe schrieb: Arrays machen.
Du schreibst Dir ja nen Wolf, wenn Du für jeden Kreis alles neu schreibst, weil Du eine Änderung drin hast.

Ich hatte gerade sowas ähnliches in:

gemacht.

Und Funktionen

Soweit wie möglich sich wiederholenden Code in Funktionen auslagern. Und Dinge die unterschiedlich sind als Parameter übergeben

nachdem ich jetzt lange keine Zeit hatte habe ich mich an das Thema "arrays" gewagt, leider mit mäßigem Erfolg:
die Schleife wird erfolgreich durchlaufen, aber der Ausgang nicht geschaltet.
Hier ein Ausschnitt der Schleife:

int PINArduino[] = {3, 5, 6, 9, 11};         // Digitalpin {3, 5, 6, 9, 11} -> PCBpin {2, 3, 4, 5, 6}
int PINPlatine[] = {2, 3, 4, 5, 6};
int PINanzahl = 5;
int State_Ist[] = {2, 3, 4, 5, 6};    // Iststatus PinPlatine {2, 3, 4, 5, 6}
 for ( int Index = 0; Index < PINanzahl; Index = Index + 1) {
    if (blueToothVal == PINPlatine[Index]) //PINPlatine = Eingabe über Bluetoothterminal
    {
      if (State_Ist[Index] == 0) {
        while (LUX < LUX_start) {
          LUX = LUX + LUX_SPRUNG;
          PWMPIN[Index] = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN[Index]);
          delay (50);
        }
        State_Ist[Index] = 1;
        Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" eingeschaltet");
      }
      else
      { while ((LUX > 0)) {
          LUX = LUX - LUX_SPRUNG;
          PWMPIN[Index] = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN[Index]);
          delay (50);
        }
        State_Ist[Index]  = 0;
        Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" ausgeschaltet");
      }
    }

Hier der ganze Code:

char blueToothVal; //Werte sollen per Bluetooth gesendet werden
char lastValue;   //speichert den letzten Status der LED (on/off)

int USBPIN = 10;
int PIN_1 = 2;

int PINArduino[] = {3, 5, 6, 9, 11};         // Digitalpin {3, 5, 6, 9, 11} -> PCBpin {2, 3, 4, 5, 6}
int PINPlatine[] = {2, 3, 4, 5, 6};
int PINanzahl = 5;
int PIN_Innenraumbeleuchtung = 12;

int State_PIN_1_Soll = 0;
int State_Ist[] = {2, 3, 4, 5, 6};    // Iststatus PinPlatine {2, 3, 4, 5, 6}
int State_InnenraumbeleuchtungIst = 0;
int State_InnenraumbeleuchtungSoll_KFZ = 0;
int State_InnenraumbeleuchtungSoll_Nutzer = 0;

int PWMUSB = 0;
int PWMPIN[] = {2, 3, 4, 5, 6};

int LUX_start = 60; //Standart Helligkeit [%]
int LUX_SPRUNG = 1;
int LUX = 0;
// -----------------------------------------------------------------------------------------------------------------

void setup() {
  Serial.begin(9600);
  pinMode(PIN_Innenraumbeleuchtung, INPUT);
  pinMode(PIN_1, OUTPUT);
}

void loop() {

  if (Serial.available()) //wenn Daten empfangen werden...
  {
    blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
  }

  State_InnenraumbeleuchtungSoll_KFZ = digitalRead(PIN_Innenraumbeleuchtung);  // Liest den Inputpin
  //Serial.println(State_Innenraumbeleuchtung);

  if (State_InnenraumbeleuchtungSoll_KFZ == 1 && State_InnenraumbeleuchtungIst == 0 && State_InnenraumbeleuchtungSoll_Nutzer == 1)
  { while (LUX < LUX_start) {
      LUX = LUX + LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 1;
  }

  if (State_InnenraumbeleuchtungSoll_KFZ == 0 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 0)
  { while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);;
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 0;
  }

  if (State_InnenraumbeleuchtungSoll_KFZ == 0 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 1)
  { while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);;
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 0;
  }

  if (State_InnenraumbeleuchtungSoll_KFZ == 1 && State_InnenraumbeleuchtungIst == 1 && State_InnenraumbeleuchtungSoll_Nutzer == 0)
  { while (LUX > 0) {
      LUX = LUX - LUX_SPRUNG;
      PWMUSB = map(LUX, 0, 100, 0, 255);;
      analogWrite(USBPIN, PWMUSB);
      delay (50);
    }
    State_InnenraumbeleuchtungIst = 0;
  }

  if (blueToothVal == '1') //wenn das Bluetooth Modul eine „1“ empfängt..
  {
    if (State_PIN_1_Soll == 0)
    { State_PIN_1_Soll = 1;
      delay (1000);
      Serial.println("D+ aktiv");
    }
    else {
      State_PIN_1_Soll = 0;
      delay (1000);
      Serial.println("D+ inaktiv");
    }
  }

  for ( int Index = 0; Index < PINanzahl; Index = Index + 1) {
    if (blueToothVal == PINPlatine[Index]) //PINPlatine = Eingabe über Bluetoothterminal
    {
      if (State_Ist[Index] == 0) {
        while (LUX < LUX_start) {
          LUX = LUX + LUX_SPRUNG;
          PWMPIN[Index] = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN[Index]);
          delay (50);
        }
        State_Ist[Index] = 1;
        Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" eingeschaltet");
      }
      else
      { while ((LUX > 0)) {
          LUX = LUX - LUX_SPRUNG;
          PWMPIN[Index] = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN[Index]);
          delay (50);
        }
        State_Ist[Index]  = 0;
        Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" ausgeschaltet");
      }
    }

  }
  if (blueToothVal == '7') //wenn das Bluetooth Modul eine „7“ empfängt..
  {
    if (State_InnenraumbeleuchtungSoll_Nutzer == 0)
    {
      State_InnenraumbeleuchtungSoll_Nutzer = 1;
      Serial.println("Innenraumbeleuchtung aktiv");
      delay (1000);
    }
    else {
      State_InnenraumbeleuchtungSoll_Nutzer = 0;
      Serial.println("Innenraumbeleuchtung inaktiv");
      delay (1000);
    }
  }

  else if (blueToothVal == '9') //wenn das Bluetooth Modul eine „9“ empfängt..
  {
    Serial.println(" 0 - Gesamte Beleuchtung aus");
    Serial.println(" 1 - D+ an Ladebuster High");
    Serial.println(" 2 - Pin 2 Beleuchtung an/aus");
    Serial.println(" 3 - Pin 3 Beleuchtung an/aus");
    Serial.println(" 4 - Pin 4 Beleuchtung an/aus");
    Serial.println(" 5 - Pin 5 Beleuchtung an/aus");
    Serial.println(" 6 - Pin 6 Beleuchtung an/aus");
    Serial.println(" 7 - USB an");
  }

  int spannungV = analogRead(A3);
  int spannung = map(spannungV, 0, 1023, 0 , 17732);
  float spannungA;
  float spannungB;
  spannungA = spannung;
  spannungB = (spannungA / 1000);
  /*
    Serial.print("Spannung: ");
    Serial.println(spannungB); //gemessene Spannung
    Serial.print("State_PIN_1_Soll: ");
    Serial.println(State_PIN_1_Soll);
    delay (1000);
  */
  if (spannungB >= 11 && State_PIN_1_Soll == 1)
  {
    digitalWrite(PIN_1, HIGH);
  }
  else {
    digitalWrite(PIN_1, LOW);
  }
}

Was heisst das?
Bekommst Du die richtige Ausgabe auf dem SerMon, aber der PIN wirft kein Signal raus?

Ich bin da noch nicht ganz durchgestiegen, auch weil Du einiges doppelt machst, wo es nicht notwendig ist...

Kürz doch mal den Sketch runter auf die BT-Abfrage, die Schleife und den Arrays - ohne den anderen Rest drum rum.

Wenns dann nicht geht, ist das mit nem Kurzsketch besser zu erproben.
Und dann gibts auch noch einige Tipps zu dem Variablen.

Nach einem Monat geht es endlich weiter :slight_smile:
array läuft jetzt, dafür die eingabe über bluetooth nicht mehr -_-
wenn ich die variable " blueToothVal = 2" hart reinschreibe läuft alles.
Per bluetooth klappt es aber nicht obwohl der wert richtig ankommt (per serial.print ausgelesen)
Hat in der alten version noch geklappt, mit dem array nicht mehr.
wenn ich "blueToothVal " von char auf int setzte kommt der wert der variable nicht mehr korrekt rein.
Jemand eine idee wie ich das problem lösen kann?

char blueToothVal; //Werte sollen per Bluetooth gesendet werden

int PINArduino[] = {3, 5, 6, 9, 11};         // Digitalpin {3, 5, 6, 9, 11} -> PCBpin {2, 3, 4, 5, 6}
int PINPlatine[] = {2, 3, 4, 5, 6};
int PINanzahl = 5;

char State_Ist[] = {0, 0, 0, 0, 0};    // Iststatus PinPlatine

int PWMPIN = 0;

int LUX_start = 60; //Standart Helligkeit [%]
int LUX_SPRUNG = 1;
int LUX = 0;
// -----------------------------------------------------------------------------------------------------------------

void setup() {
  Serial.begin(9600);
}

void loop() {

  if (Serial.available()) //wenn Daten empfangen werden...
  {
    blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
  }

  //blueToothVal = 6;
  for ( int Index = 0; Index < PINanzahl; Index = Index + 1) {
    delay(500);
    if (blueToothVal == PINPlatine[Index]) //PINPlatine = Eingabe über Bluetoothterminal
      if (State_Ist[Index] == 0) {
        Serial.println("ZeileC");
        while (LUX < LUX_start) {
          LUX = LUX + LUX_SPRUNG;
          PWMPIN = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN);
          delay (50);
        }
        State_Ist[Index] = 1;
        //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" eingeschaltet");
      }
      else {
        while ((LUX > 0)) {
          LUX = LUX - LUX_SPRUNG;
          PWMPIN = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN);
          delay (50);
        }
        State_Ist[Index]  = 0;
        //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" ausgeschaltet");
      }
  }
}

Hier gibt Dir der Kompiler ne Warnung aus:

    if (blueToothVal == PINPlatine[Index]) //PINPlatine = Eingabe über Bluetoothterminal

UNBEDINGT(!) einstellen:
DATEI - VOREINSTELLUNGEN - den Haken setzen bei: "Ausführliche Ausgabe während" -> Kompilierung
Und darunter Compiler-Warnungen auf "alle" stellen

Dann kannst Du darauf reagieren.

29:8: warning: suggest explicit braces to avoid ambiguous 'else' [-Wdangling-else]

Bei mir sähe es dann so aus.. - ich formatiere etwas anders:

void loop()
{
  if (Serial.available()) //wenn Daten empfangen werden...
  {
    blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
  }
  //blueToothVal = 6;
  for ( int Index = 0; Index < PINanzahl; Index = Index + 1)
  {
    delay(500);
    if (blueToothVal == PINPlatine[Index]) //PINPlatine = Eingabe über Bluetoothterminal
    {
      if (State_Ist[Index] == 0)
      {
        Serial.println("ZeileC");
        while (LUX < LUX_start)
        {
          LUX = LUX + LUX_SPRUNG;
          PWMPIN = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN);
          delay (50);
        }
        State_Ist[Index] = 1;
        //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" eingeschaltet");
      }
      else
      {
        while ((LUX > 0))
        {
          LUX = LUX - LUX_SPRUNG;
          PWMPIN = map(LUX, 0, 100, 0, 255);
          analogWrite(PINArduino[Index], PWMPIN);
          delay (50);
        }
        State_Ist[Index]  = 0;
        //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" ausgeschaltet");
      }
    }
  }
}

Ob das richtig ist, musst Du wissen.

danke für deine schnelle antwort.
leider keine verbesserung, problem besteht weiterhin.
weitere ideen? :hushed:

Das war mir eigentlich klar - aber erstmal müssen alle Kompilerwarnungen raus, damit allen möglichen Helfenden auch ein Fehler/Warnungs -freies Paket geliefert werden kann.

Die Frage ist: Ist die von mir gezeigte Variante die richtige?
Ist das else an der richtigen Stelle?

So.. und dann ist die Frage der Fragen:
Ich sehe bisher nur ein Serial.begin(9600)
Das Ding macht aber (auch) die Kommunikation mit dem SerMon.
Warum benutzt Du keinen zweiten - ggfls. SoftwareSerial - Port?

Und dann bitte was macht das delay(500)? Das ist an der Stelle - wie auch jedes andere delay() - eindeutig kontraproduktiv.

Na mal sehn...

Ich habe meinen und deinen Code mit Notepad++ verglichen, Funktion ist noch korrekt.

Warum ich damals nicht über softserial drüber nachgedacht habe kann ich nicht mehr sagen. Da habe ich scheinbar einfach nur "blind" den Beispielsketch genutzt.
Die Platinen sind zwar schon lange fertig, aber das sollte ich noch ändern können.
Mir ist aber nicht ganz klar welche Pins ich hierfür nutzen kann.
Ich habe die Info gefunden das beim UNO und ProMini die Pins gleich sein sollten und folgende Pins für softserial geeignet wären: RX: 8 9 10 11 Miso sck Mosi. Teste ich heute mal aus.

Die delay(500) sind noch aus meiner Fehlersuche. Bin dann allerdings auch auf den Trichter gekommen das mein serial.print mir alles verfälscht.

Die anderen delay's zu entfernen ist noch in planung, ich möchte aber erstmal stück für stück abarbeiten und dann weiter optimieren

8/9 ist gut.

und dann änder mal:

if (Serial.available())

in

if (Serial.available()>0)

ich bin ein großes stück weiter.
bei meiner fehlersuche habe ich einen blick in den sehr überschaubaren beispielskatch geworfen:

char blueToothVal; //Werte sollen per Bluetooth gesendet werden
char lastValue;   //speichert den letzten Status der LED (on/off) 
 
void setup(){
 Serial.begin(9600);  //serieller Monitor wird gestartet, Baudrate auf 9600 festgelegt
 pinMode(13,OUTPUT);  //PIN 13 wird als Ausgang festgelegt
}
 
void loop(){
  if(Serial.available()) //wenn Daten empfangen werden...      
{
    blueToothVal=Serial.read();//..sollen diese ausgelesen werden
  }
  if (blueToothVal=='1') //wenn das Bluetooth Modul eine „1“ empfängt..
  {
    digitalWrite(13,HIGH);   //...soll die LED leuchten
    if (lastValue!='1') //wenn der letzte empfangene Wert keine „1“ war...
      Serial.println(F("LED is on")); //..soll auf dem Seriellen Monitor „LED is on“ angezeigt werden
    lastValue=blueToothVal;
  }
  else if (blueToothVal=='0') //wenn das Bluetooth Modul „0“ empfängt...
  {           
    digitalWrite(13,LOW);  //..soll die LED nicht leuchten
    if (lastValue!='0')  //wenn der letzte empfangene Wert keine „0“ war...
      Serial.println(F("LED is off")); //..soll auf dem seriellen Monitor „LED is off“ angezeigt werden 
    lastValue=blueToothVal;
  }
 }

Mir ist aufgefallen das alle vergleiche der variablen in ' ' geschrieben sind. habe ich bei mir entsprechend ergänzt und schon wird die if bedingung aufgerufen. ich schätze mit den ' ' wird mein integer in einen string umgewandelt, oder was kann ich darunter verstehen?

Die Änderung mit dem softserial setzt ich trotdem noch um, dann muss ich bei kleinen anpassungen in der zukunft nicht immer das bluetooth modul ziehen.
Wo ein Problem geht, kommt ein neues:
Er springt direkt von der if bedingung in die else bedingung und schaltet das licht direkt wieder aus, es wird also nicht langweilig.
Jemand eine Idee?

Hier der akteulle Skatch mit dem ich arbeite, zur fehlersuche nutze ich jetzt statt dem serial.print die onboard LED.

char blueToothVal; //Werte sollen per Bluetooth gesendet werden

int PINArduino[] = {3, 5, 6, 9, 11};         // Digitalpin {3, 5, 6, 9, 11} -> PCBpin {2, 3, 4, 5, 6}
int PINPlatine[] = {'2', '3', '4', '5', '6'};
int PINanzahl = 5;

char State_Ist[] = {0, 0, 0, 0, 0};    // Iststatus PinPlatine

int PWMPIN = 0;

int LUX_start = 60; //Standart Helligkeit [%]
int LUX_SPRUNG = 1;
int LUX = 0;
// -----------------------------------------------------------------------------------------------------------------

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {

  if (Serial.available()) //wenn Daten empfangen werden...
  {
    blueToothVal = Serial.read(); //..sollen diese ausgelesen werden
  }

  //blueToothVal = 6;
  for ( int Index = 0; Index < PINanzahl; Index = Index + 1) {
    if (blueToothVal == PINPlatine[Index]) //PINPlatine = Eingabe über Bluetoothterminal
      digitalWrite(LED_BUILTIN, HIGH);
    if (State_Ist[Index] == 0) {
      //Serial.println("ZeileC");
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN = map(LUX, 0, 100, 0, 255);
        analogWrite(PINArduino[Index], PWMPIN);
        delay (50);
      }
      State_Ist[Index] = 1;
      //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" eingeschaltet");
    }
    else {
      digitalWrite(LED_BUILTIN, LOW);
      while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN = map(LUX, 0, 100, 0, 255);
        analogWrite(PINArduino[Index], PWMPIN);
        delay (50);
      }
      State_Ist[Index]  = 0;
      //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" ausgeschaltet");
    }
  }
}

bringt leider keine veränderung
ich setzt jetzt erstmal den softseral um

Gibt es dafür auch eine rationale Erklärung?

softserial umgesetzt und funktioniert.
Leider geht das Licht weiterhin direkt wieder aus.
SoftwareSerial mySerial(8, 7); // RX, TX
Auf 8 und 7 gelegt, da ein großteil der pins schon belegt ist.
Theoretisch würde für mein Anwendungsfall auch nur PIN8 reichen, da der Ardunio nur empfängt.

#include <SoftwareSerial.h>

SoftwareSerial mySerial(8, 7); // RX, TX

char blueToothVal; //Werte sollen per Bluetooth gesendet werden

int PINArduino[] = {3, 5, 6, 9, 11};         // Digitalpin {3, 5, 6, 9, 11} -> PCBpin {2, 3, 4, 5, 6}
int PINPlatine[] = {'2', '3', '4', '5', '6'};
int PINanzahl = 5;

char State_Ist[] = {0, 0, 0, 0, 0};    // Iststatus PinPlatine

int PWMPIN = 0;

int LUX_start = 60; //Standart Helligkeit [%]
int LUX_SPRUNG = 1;
int LUX = 0;
// -----------------------------------------------------------------------------------------------------------------

void setup() {
  Serial.begin(9600);
  mySerial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {

  if (mySerial.available()) //wenn Daten empfangen werden...
  {
    blueToothVal = mySerial.read(); //..sollen diese ausgelesen werden
    Serial.print("blueToothVal ");
    Serial.println(blueToothVal);
  }

  //blueToothVal = 6;
  for ( int Index = 0; Index < PINanzahl; Index = Index + 1) {
    if (blueToothVal == PINPlatine[Index]) //PINPlatine = Eingabe über Bluetoothterminal
      digitalWrite(LED_BUILTIN, HIGH);
    if (State_Ist[Index] == 0) {
      //Serial.println("ZeileC");
      while (LUX < LUX_start) {
        LUX = LUX + LUX_SPRUNG;
        PWMPIN = map(LUX, 0, 100, 0, 255);
        analogWrite(PINArduino[Index], PWMPIN);
        delay (50);
      }
      State_Ist[Index] = 1;
      //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" eingeschaltet");
    }
    else {
      digitalWrite(LED_BUILTIN, LOW);
      while ((LUX > 0)) {
        LUX = LUX - LUX_SPRUNG;
        PWMPIN = map(LUX, 0, 100, 0, 255);
        analogWrite(PINArduino[Index], PWMPIN);
        delay (50);
      }
      State_Ist[Index]  = 0;
      //Serial.print("Kreis ");  Serial.print(State_Ist[Index]); Serial.println(" ausgeschaltet");
    }
  }
}

Was mir gerade auffällt: Der Code braucht 3 sekunden um durchzulaufen auch wenn keine der If Bedingungen erfüllt ist, ich also keine Variable setzt.
Es wird scheinbar immer komplizierter statt einfacher :crazy_face: