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 ![]()