Anleitung: Von der blinkenden LED zur Zugsteuerung

Dann als Dessert noch eine Variante mit OOP, also blinken() als Methode:

struct Led  // Struktur
{
  const uint8_t pin;
  const uint32_t intervall;
  uint32_t vorhin;
  bool status;

  void init()
  {
    pinMode(pin, OUTPUT);
  }

  void blinken()
  {
    uint32_t jetzt = millis();

    if (jetzt - vorhin >= intervall)
    {
      vorhin += intervall;        // hier nicht relevant, aber eine genauere Variante zu eben = jetzt;
      digitalWrite(pin, status);  // den Status der LED ändern
      status = !status;           // den Status ändern
    }
  }
};

static Led leds[] {
  //pin, intervall, vorhin, status
  {8, 300, 0, true}, // 1. LED Initialisierung
  {9, 500, 0, true}  // 2. LED Initialisierung
};

const uint8_t ledzahl { sizeof(leds) / sizeof(leds[0]) };

void setup() {
  Serial.begin(9600);
  Serial.println("\nStart");
  for (Led &led : leds) led.init();
}

void loop()
{
  for (Led &led : leds) led.blinken();  // Variante Range-based for loop
  /*
  for (uint8_t j = 0; j < ledzahl; j++)  // Standardvariante
  {
    leds[j].blinken();
  }
  */
}

Nur damit Du nicht sagst, ich hätte es Dir nicht mal gezeigt :wink: