/* Blink ohne delay( ) 
 * beide LEDs sollen unabhängig voneinander blinken
 */

//***** Portpins für Ein-/Ausgänge ***************************************
const int LED_rot = 32, LED_gruen = 33, Taster2 = 2, Taster4 = 4;

// ***** Globale Variablen ************************************************
bool ledStateRot, ledStateGruen;  // für Umschaltung der LEDs => Merker-Bits
unsigned long previousRot, previousGruen;
unsigned long intervalRot, intervalGruen;

// ***** Initialisierung **************************************************
void setup() {
  Serial.begin(115200);            // Serielle Schnittstelle mit 115200Bit/s
  Serial.println("Blinken mit 2 LEDs");
  pinMode(LED_rot, OUTPUT);        // die LEDs beginnen danach
  pinMode(LED_gruen, OUTPUT);      // zu leuchten!
  ledStateRot = HIGH;
  ledStateGruen = HIGH;
  intervalRot = 500;               // Zeit für LEDs
  intervalGruen = 111;             // Periodendauer ist doppelte Zeit
}

// ***** Endlosschleife ***************************************************
void loop() {
   unsigned long currentMillis = millis();

  // mindestens ein Zeichen empfangen?
  if (Serial.available() > 0) {
    char Zeichen = Serial.read();
    switch(Zeichen) {
      case 'r': intervalRot = Serial.parseInt(); break;
      case 'g': intervalGruen = Serial.parseInt(); break;
      default: break;
    }
  }

  if (currentMillis - previousRot >= intervalRot) {
    // wann wurde zuletzt umgeschaltet?
    previousRot = currentMillis;

    // wenn die LED aus ist, einschalten (und umgekehrt):
    if (ledStateRot == LOW) {
      ledStateRot = HIGH;
    } else {
      ledStateRot = LOW;
    }

    // LED mit dem aktuellen Wert der Variablen ledState setzen:
    digitalWrite(LED_rot, ledStateRot);
  }

 if (currentMillis - previousGruen >= intervalGruen) {
    // wann wurde zuletzt umgeschaltet?
    previousGruen = currentMillis;

    // Umschalten, kürzere Variante
    ledStateGruen = !ledStateGruen;

    // LED mit dem aktuellen Wert der Variablen ledState setzen:
    digitalWrite(LED_gruen, ledStateGruen);
  }
}
Taster2
Taster4
LED32
LED33
ESP32 Schulboard mit LEDs und Tastern, I2C-Bus mit Standard-Belegung
SSD1306 Display
WS2812 an Pin26